Skip to content

Commit

Permalink
๐Ÿ”— :: (#643) Application ๋ฆฌํŒฉํ† ๋ง
Browse files Browse the repository at this point in the history
  • Loading branch information
geunoo authored Apr 21, 2024
2 parents 9d51370 + cba4f41 commit 3d20c26
Show file tree
Hide file tree
Showing 20 changed files with 79 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
Expand All @@ -18,11 +17,7 @@ public class CancelFieldTraineesUseCase {
private final CommandApplicationPort commandApplicationPort;

public void execute(List<Long> applicationIds) {
List<Application> applications = applicationRepository.queryApplicationsByIds(applicationIds);

if (applicationIds.size() != applications.size()) {
throw ApplicationNotFoundException.EXCEPTION;
}
List<Application> applications = applicationRepository.getAllByIdInOrThrow(applicationIds);

applications.forEach(
application -> Application.checkApplicationStatus(
Expand All @@ -31,7 +26,7 @@ public void execute(List<Long> applicationIds) {
)
);

commandApplicationPort.changeApplicationStatus(
commandApplicationPort.updateApplicationStatus(
ApplicationStatus.PASS,
applicationIds
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ public class RegisterEmploymentContractUseCase {
private final CommandApplicationPort commandApplicationPort;

public void execute(List<String> codeKeywords, List<Long> applicationIds) {
List<ApplicationDetailVO> applications = applicationRepository.queryApplicationDetailsByIds(applicationIds);
List<ApplicationDetailVO> applications = applicationRepository.getDetailsByIds(applicationIds);
if (applications.size() != applicationIds.size()) {
throw ApplicationNotFoundException.EXCEPTION;
}
Expand All @@ -49,7 +49,7 @@ public void execute(List<String> codeKeywords, List<Long> applicationIds) {
).toList();

commandAcceptancePort.saveAll(acceptances);
commandApplicationPort.changeApplicationStatus(
commandApplicationPort.updateApplicationStatus(
ApplicationStatus.ACCEPTANCE,
applications.stream().map(ApplicationDetailVO::getId).toList()
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.domain.acceptance.dto.request.RegisterFieldTraineeRequest;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
Expand All @@ -18,16 +17,13 @@ public class RegisterFieldTraineeUseCase {
private final QueryApplicationPort queryApplicationPort;

public void execute(RegisterFieldTraineeRequest request) {
List<Application> applications = queryApplicationPort.queryApplicationsByIds(request.applicationIds());
if (request.applicationIds().size() != applications.size()) {
throw ApplicationNotFoundException.EXCEPTION;
}
List<Application> applications = queryApplicationPort.getAllByIdInOrThrow(request.applicationIds());

List<Application> converted = applications.stream()
.map(application ->
application.toFieldTrain(request.startDate(), request.endDate())
).toList();

commandApplicationPort.saveAllApplications(converted);
commandApplicationPort.saveAll(converted);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ public class TeacherQueryFieldTraineesAndContractWorkersUseCase {
private final QueryAcceptancePort queryAcceptancePort;

public TeacherQueryFieldTraineesAndContractWorkersResponse execute(Long companyId) {
List<FieldTraineesVO> fieldTrainees = queryApplicationPort.queryApplicationsFieldTraineesByCompanyId(companyId);
List<AcceptanceVO> acceptances = queryAcceptancePort.getByCompanyIdAndYear(companyId, Year.now().getValue());
List<FieldTraineesVO> fieldTrainees = queryApplicationPort.getFieldTraineesByCompanyId(companyId);

return new TeacherQueryFieldTraineesAndContractWorkersResponse(
TeacherQueryFieldTraineesResponse.from(fieldTrainees),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,17 @@

public interface CommandApplicationPort {

Application saveApplication(Application application);
Application save(Application application);

void deleteApplicationByIds(List<Long> applicationIds);
void deleteByIds(List<Long> applicationIds);

void deleteApplication(Application application);
void delete(Application application);

void changeApplicationStatus(ApplicationStatus status, List<Long> applicationIds);
void updateApplicationStatus(ApplicationStatus status, List<Long> applicationIds);

void updateFieldTrainDate(LocalDate startDate, LocalDate endDate, List<Long> applicationIds);

void saveAllApplications(List<Application> applications);
void saveAll(List<Application> applications);

void deleteAllAttachmentByApplicationId(Long applicationId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,29 +9,28 @@
import team.retum.jobis.domain.application.spi.vo.PassedApplicationStudentsVO;

import java.util.List;
import java.util.Optional;

public interface QueryApplicationPort {

List<ApplicationVO> queryApplicationByConditions(ApplicationFilter applicationFilter);
List<ApplicationVO> getAllByConditions(ApplicationFilter applicationFilter);

Long queryApplicationCountByCondition(ApplicationStatus applicationStatus, String studentName);
Long getCountByCondition(ApplicationStatus applicationStatus, String studentName);

List<FieldTraineesVO> queryApplicationsFieldTraineesByCompanyId(Long companyId);
List<FieldTraineesVO> getFieldTraineesByCompanyId(Long companyId);

List<PassedApplicationStudentsVO> queryPassedApplicationStudentsByCompanyId(Long companyId);
List<PassedApplicationStudentsVO> getPassedStudentsByCompanyId(Long companyId);

List<Application> queryApplicationsByIds(List<Long> applicationIds);
List<Application> getAllByIdInOrThrow(List<Long> applicationIds);

List<ApplicationDetailVO> queryApplicationDetailsByIds(List<Long> applicationIds);
List<ApplicationDetailVO> getDetailsByIds(List<Long> applicationIds);

Optional<Application> queryApplicationById(Long applicationId);
Application getByIdOrThrow(Long applicationId);

Optional<Application> queryApplicationByIdAndApplicationStatus(Long applicationId, ApplicationStatus applicationStatus);
Application getByIdAndApplicationStatusOrThrow(Long applicationId, ApplicationStatus applicationStatus);

Optional<Application> queryApplicationByCompanyIdAndStudentId(Long applicationId, Long studentId);
Application getByCompanyIdAndStudentIdOrThrow(Long applicationId, Long studentId);

boolean existsApplicationByStudentIdAndApplicationStatusIn(Long studentId, List<ApplicationStatus> applicationStatuses);
boolean existsByStudentIdAndApplicationStatusIn(Long studentId, List<ApplicationStatus> applicationStatuses);

boolean existsApplicationByStudentIdAndRecruitmentId(Long studentId, Long recruitmentId);
boolean existsByStudentIdAndRecruitmentId(Long studentId, Long recruitmentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.common.spi.PublishEventPort;
import team.retum.jobis.domain.application.event.ApplicationsStatusChangedEvent;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
Expand All @@ -21,13 +20,9 @@ public class ChangeApplicationsStatusUseCase {
private final PublishEventPort publishEventPort;

public void execute(List<Long> applicationIds, ApplicationStatus status) {
List<Application> applications = queryApplicationPort.queryApplicationsByIds(applicationIds);
List<Application> applications = queryApplicationPort.getAllByIdInOrThrow(applicationIds);

if (applicationIds.size() != applications.size()) {
throw ApplicationNotFoundException.EXCEPTION;
}

commandApplicationPort.changeApplicationStatus(status, applicationIds);
commandApplicationPort.updateApplicationStatus(status, applicationIds);
publishEventPort.publishEvent(new ApplicationsStatusChangedEvent(applications, status));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class ChangeFieldTrainDateUseCase {
private final CommandApplicationPort commandApplicationPort;

public void execute(ChangeFieldTrainDateRequest request) {
List<Application> applications = queryApplicationPort.queryApplicationsByIds(request.applicationIds());
List<Application> applications = queryApplicationPort.getAllByIdInOrThrow(request.applicationIds());

applications.forEach(
application -> Application.checkApplicationStatus(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public CompanyQueryApplicationsResponse execute() {
.applicationStatus(ApplicationStatus.SEND)
.build();

List<ApplicationVO> applicationVOs = queryApplicationPort.queryApplicationByConditions(applicationFilter);
List<ApplicationVO> applicationVOs = queryApplicationPort.getAllByConditions(applicationFilter);

return CompanyQueryApplicationsResponse.of(applicationVOs);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public void execute(Long recruitmentId, List<AttachmentRequest> attachmentReques
checkApplicationAlreadyApply(student.getId(), recruitment.getId());

List<ApplicationAttachment> attachments = ApplicationAttachment.from(attachmentRequests);
commandApplicationPort.saveApplication(
commandApplicationPort.save(
Application.builder()
.studentId(student.getId())
.recruitmentId(recruitment.getId())
Expand All @@ -45,7 +45,7 @@ public void execute(Long recruitmentId, List<AttachmentRequest> attachmentReques
}

private void checkApplicationDuplicated(Long studentId) {
if (queryApplicationPort.existsApplicationByStudentIdAndApplicationStatusIn(
if (queryApplicationPort.existsByStudentIdAndApplicationStatusIn(
studentId,
ApplicationStatus.DUPLICATE_CHECK
)) {
Expand All @@ -54,7 +54,7 @@ private void checkApplicationDuplicated(Long studentId) {
}

private void checkApplicationAlreadyApply(Long studentId, Long recruitmentId) {
if (queryApplicationPort.existsApplicationByStudentIdAndRecruitmentId(studentId, recruitmentId)) {
if (queryApplicationPort.existsByStudentIdAndRecruitmentId(studentId, recruitmentId)) {
throw ApplicationAlreadyExistsException.EXCEPTION;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.common.spi.SecurityPort;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
Expand All @@ -19,11 +18,10 @@ public class DeleteApplicationUseCase {

public void execute(Long applicationId) {
Student student = securityPort.getCurrentStudent();
Application application = queryApplicationPort.queryApplicationById(applicationId)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);
Application application = queryApplicationPort.getByIdOrThrow(applicationId);

application.checkIsDeletable(student);

commandApplicationPort.deleteApplication(application);
commandApplicationPort.delete(application);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public QueryMyApplicationsResponse execute() {
.year(Year.now())
.build();

List<ApplicationVO> applicationVOs = queryApplicationPort.queryApplicationByConditions(applicationFilter);
List<ApplicationVO> applicationVOs = queryApplicationPort.getAllByConditions(applicationFilter);

return QueryMyApplicationsResponse.from(applicationVOs);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class QueryPassedApplicationStudentsUseCase {

public QueryPassedApplicationStudentsResponse execute(Long companyId) {
return new QueryPassedApplicationStudentsResponse(
queryApplicationPort.queryPassedApplicationStudentsByCompanyId(companyId).stream()
queryApplicationPort.getPassedStudentsByCompanyId(companyId).stream()
.map(QueryPassedApplicationStudentsResponse::from)
.toList()
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.ReadOnlyUseCase;
import team.retum.jobis.domain.application.dto.response.QueryRejectionReasonResponse;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
Expand All @@ -15,8 +14,7 @@ public class QueryRejectionReasonUseCase {
private final QueryApplicationPort queryApplicationPort;

public QueryRejectionReasonResponse execute(Long applicationId) {
Application application = queryApplicationPort.queryApplicationByIdAndApplicationStatus(applicationId, ApplicationStatus.REJECTED)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);
Application application = queryApplicationPort.getByIdAndApplicationStatusOrThrow(applicationId, ApplicationStatus.REJECTED);

return new QueryRejectionReasonResponse(application.getRejectionReason());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.domain.application.dto.request.AttachmentRequest;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationAttachment;
import team.retum.jobis.domain.application.model.ApplicationStatus;
Expand All @@ -20,16 +19,15 @@ public class ReapplyUseCase {
private final CommandApplicationPort commandApplicationPort;

public void execute(Long applicationId, List<AttachmentRequest> attachmentRequests) {
Application application = queryApplicationPort.queryApplicationById(applicationId)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);
Application application = queryApplicationPort.getByIdOrThrow(applicationId);

Application.checkApplicationStatus(
application.getApplicationStatus(),
ApplicationStatus.REJECTED, ApplicationStatus.REQUESTED
);

commandApplicationPort.deleteAllAttachmentByApplicationId(applicationId);
commandApplicationPort.saveApplication(
commandApplicationPort.save(
application.reapply(ApplicationAttachment.from(attachmentRequests))
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
Expand All @@ -15,10 +14,9 @@ public class RejectApplicationUseCase {
private final CommandApplicationPort commandApplicationPort;

public void execute(Long applicationId, String rejectReason) {
Application application = queryApplicationPort.queryApplicationById(applicationId)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);
Application application = queryApplicationPort.getByIdOrThrow(applicationId);

commandApplicationPort.saveApplication(
commandApplicationPort.save(
application.rejectApplication(rejectReason)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,15 @@ public TeacherQueryApplicationsResponse execute(
.year(year)
.build();

List<ApplicationVO> applicationVOs = queryApplicationPort.queryApplicationByConditions(applicationFilter);
List<ApplicationVO> applicationVOs = queryApplicationPort.getAllByConditions(applicationFilter);

return TeacherQueryApplicationsResponse.of(applicationVOs);
}

public TotalPageCountResponse getTotalPageCount(ApplicationStatus applicationStatus, String studentName) {
return new TotalPageCountResponse(
NumberUtil.getTotalPageCount(
queryApplicationPort.queryApplicationCountByCondition(applicationStatus, studentName), 11
queryApplicationPort.getCountByCondition(applicationStatus, studentName), 11
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public QueryRecruitmentDetailResponse execute(Long recruitId) {

private Boolean getApplicable(boolean winterIntern, long recruitmentId) {
if (APPLICABLE_AUTHORITIES.contains(securityPort.getCurrentUserAuthority())) {
if (queryApplicationPort.existsApplicationByStudentIdAndRecruitmentId(
if (queryApplicationPort.existsByStudentIdAndRecruitmentId(
securityPort.getCurrentUserId(), recruitmentId)
) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.UseCase;
import team.retum.jobis.common.spi.SecurityPort;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
import team.retum.jobis.domain.company.exception.CompanyNotFoundException;
import team.retum.jobis.domain.company.model.Company;
Expand Down Expand Up @@ -33,8 +32,7 @@ public void execute(Long companyId, List<QnAElement> qnAElements) {

checkReviewExists(companyId, student.getId());

queryApplicationPort.queryApplicationByCompanyIdAndStudentId(company.getId(), student.getId())
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION)
queryApplicationPort.getByCompanyIdAndStudentIdOrThrow(company.getId(), student.getId())
.checkReviewAuthority();

Review review = reviewPort.save(
Expand Down
Loading

0 comments on commit 3d20c26

Please sign in to comment.