Skip to content

Commit

Permalink
๐Ÿ”— :: (#602) exception ๋˜์ง€๋Š” ์กฐ๊ฑด๋ฌธ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌ, from of ๊ตฌ๋ถ„
Browse files Browse the repository at this point in the history
๐Ÿ”— :: (#602) exception ๋˜์ง€๋Š” ์กฐ๊ฑด๋ฌธ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌ, from of ๊ตฌ๋ถ„
  • Loading branch information
geunoo authored Mar 29, 2024
2 parents b1cb66a + 19bd6d8 commit 5aced15
Show file tree
Hide file tree
Showing 71 changed files with 370 additions and 341 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import team.retum.jobis.domain.auth.model.Authority;
import team.retum.jobis.domain.company.model.Company;
import team.retum.jobis.domain.student.model.Student;
import team.retum.jobis.domain.teacher.model.Teacher;
import team.retum.jobis.domain.user.model.User;

public interface SecurityPort {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import team.retum.jobis.domain.acceptance.spi.vo.AcceptanceVO;
import team.retum.jobis.domain.application.spi.vo.FieldTraineesVO;
import team.retum.jobis.domain.student.model.SchoolNumber;

import java.time.LocalDate;
import java.util.List;
Expand All @@ -22,6 +25,28 @@ public static class TeacherQueryFieldTraineesResponse {
private String studentName;
private LocalDate startDate;
private LocalDate endDate;

public static List<TeacherQueryFieldTraineesResponse> from(List<FieldTraineesVO> fieldTrainees) {
return fieldTrainees.stream()
.map(
fieldTrainee -> TeacherQueryFieldTraineesResponse
.builder()
.applicationId(fieldTrainee.getApplicationId())
.studentGcn(
SchoolNumber.processSchoolNumber(
SchoolNumber.builder()
.grade(fieldTrainee.getGrade())
.classRoom(fieldTrainee.getClassRoom())
.number(fieldTrainee.getNumber())
.build()
)
)
.studentName(fieldTrainee.getStudentName())
.startDate(fieldTrainee.getStartDate())
.endDate(fieldTrainee.getEndDate())
.build()
).toList();
}
}

@Getter
Expand All @@ -31,5 +56,26 @@ public static class TeacherQueryContractWorkersResponse {
private String studentGcn;
private String studentName;
private LocalDate contractDate;

public static List<TeacherQueryContractWorkersResponse> from(List<AcceptanceVO> acceptances) {
return acceptances.stream()
.map(
acceptance -> TeacherQueryContractWorkersResponse
.builder()
.acceptanceId(acceptance.getAcceptanceId())
.studentGcn(
SchoolNumber.processSchoolNumber(
SchoolNumber.builder()
.grade(acceptance.getGrade())
.classRoom(acceptance.getClassRoom())
.number(acceptance.getNumber())
.build()
)
)
.studentName(acceptance.getStudentName())
.contractDate(acceptance.getContractDate())
.build()
).toList();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@ public void execute(List<Long> applicationIds) {
throw ApplicationNotFoundException.EXCEPTION;
}

applications.forEach(application ->
application.checkApplicationStatus(application.getApplicationStatus(), ApplicationStatus.FIELD_TRAIN)
applications.forEach(
application -> Application.checkApplicationStatus(
application.getApplicationStatus(),
ApplicationStatus.FIELD_TRAIN
)
);

commandApplicationPort.changeApplicationStatus(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import team.retum.jobis.domain.acceptance.model.Acceptance;
import team.retum.jobis.domain.acceptance.spi.CommandAcceptancePort;
import team.retum.jobis.domain.application.exception.ApplicationNotFoundException;
import team.retum.jobis.domain.application.exception.ApplicationStatusCannotChangeException;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.CommandApplicationPort;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
Expand All @@ -32,9 +32,10 @@ public void execute(List<String> codeKeywords, List<Long> applicationIds) {
List<Acceptance> acceptances = applications.stream()
.map(
application -> {
if (application.getStatus() != ApplicationStatus.FIELD_TRAIN) {
throw ApplicationStatusCannotChangeException.EXCEPTION;
}
Application.checkApplicationStatus(
application.getStatus(),
ApplicationStatus.FIELD_TRAIN
);

return Acceptance.builder()
.companyId(application.getCompanyId())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import team.retum.jobis.domain.acceptance.spi.vo.AcceptanceVO;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
import team.retum.jobis.domain.application.spi.vo.FieldTraineesVO;
import team.retum.jobis.domain.student.model.SchoolNumber;

import java.time.Year;
import java.util.List;
Expand All @@ -26,55 +25,8 @@ public TeacherQueryFieldTraineesAndContractWorkersResponse execute(Long companyI
List<AcceptanceVO> acceptances = queryAcceptancePort.queryAcceptancesByCompanyIdAndYear(companyId, Year.now().getValue());

return new TeacherQueryFieldTraineesAndContractWorkersResponse(
buildFieldTrainees(fieldTrainees),
buildContractWorkers(acceptances)
TeacherQueryFieldTraineesResponse.from(fieldTrainees),
TeacherQueryContractWorkersResponse.from(acceptances)
);
}

private List<TeacherQueryFieldTraineesResponse> buildFieldTrainees(
List<FieldTraineesVO> fieldTrainees
) {
return fieldTrainees.stream()
.map(
fieldTrainee -> TeacherQueryFieldTraineesResponse
.builder()
.applicationId(fieldTrainee.getApplicationId())
.studentGcn(
SchoolNumber.processSchoolNumber(
SchoolNumber.builder()
.grade(fieldTrainee.getGrade())
.classRoom(fieldTrainee.getClassRoom())
.number(fieldTrainee.getNumber())
.build()
)
)
.studentName(fieldTrainee.getStudentName())
.startDate(fieldTrainee.getStartDate())
.endDate(fieldTrainee.getEndDate())
.build()
).toList();
}

private List<TeacherQueryContractWorkersResponse> buildContractWorkers(
List<AcceptanceVO> acceptances
) {
return acceptances.stream()
.map(
acceptance -> TeacherQueryContractWorkersResponse
.builder()
.acceptanceId(acceptance.getAcceptanceId())
.studentGcn(
SchoolNumber.processSchoolNumber(
SchoolNumber.builder()
.grade(acceptance.getGrade())
.classRoom(acceptance.getClassRoom())
.number(acceptance.getNumber())
.build()
)
)
.studentName(acceptance.getStudentName())
.contractDate(acceptance.getContractDate())
.build()
).toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class QueryMyApplicationsResponse {

private final List<QueryMyApplicationResponse> applications;

public static QueryMyApplicationsResponse of(List<ApplicationVO> applicationVOs) {
public static QueryMyApplicationsResponse from(List<ApplicationVO> applicationVOs) {
return new QueryMyApplicationsResponse(
applicationVOs.stream()
.map(application -> QueryMyApplicationResponse.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class QueryPassedApplicationStudentsResponse {

private final List<QueryPassedApplicationStudentResponse> students;

public static QueryPassedApplicationStudentResponse of(PassedApplicationStudentsVO vo) {
public static QueryPassedApplicationStudentResponse from(PassedApplicationStudentsVO vo) {
return QueryPassedApplicationStudentResponse.builder()
.applicationId(vo.getApplicationId())
.studentName(vo.getStudentName())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package team.retum.jobis.domain.application.event;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void checkReviewAuthority() {
}
}

public void checkApplicationStatus(ApplicationStatus requestedStatus, ApplicationStatus... baseStatuses) {
public static void checkApplicationStatus(ApplicationStatus requestedStatus, ApplicationStatus... baseStatuses) {
if (!List.of(baseStatuses).contains(requestedStatus)) {
throw ApplicationStatusCannotChangeException.EXCEPTION;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import lombok.AllArgsConstructor;
import lombok.Getter;
import team.retum.jobis.domain.application.dto.request.AttachmentRequest;

import java.util.List;

@Getter
@AllArgsConstructor
Expand All @@ -10,4 +13,10 @@ public class ApplicationAttachment {
private final String attachmentUrl;

private final AttachmentType type;

public static List<ApplicationAttachment> from(List<AttachmentRequest> requests) {
return requests.stream()
.map(request -> new ApplicationAttachment(request.url(), request.type()))
.toList();
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package team.retum.jobis.domain.application.spi;

import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.dto.ApplicationFilter;
import team.retum.jobis.domain.application.model.Application;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.vo.ApplicationDetailVO;
import team.retum.jobis.domain.application.spi.vo.ApplicationVO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ public class ChangeFieldTrainDateUseCase {
public void execute(ChangeFieldTrainDateRequest request) {
List<Application> applications = queryApplicationPort.queryApplicationsByIds(request.applicationIds());

applications
.forEach(application ->
application.checkApplicationStatus(application.getApplicationStatus(), ApplicationStatus.FIELD_TRAIN)
);
applications.forEach(
application -> Application.checkApplicationStatus(
application.getApplicationStatus(),
ApplicationStatus.FIELD_TRAIN
)
);

commandApplicationPort.updateFieldTrainDate(
request.startDate(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.ReadOnlyUseCase;
import team.retum.jobis.common.spi.SecurityPort;
import team.retum.jobis.domain.application.dto.response.CompanyQueryApplicationsResponse;
import team.retum.jobis.domain.application.dto.ApplicationFilter;
import team.retum.jobis.domain.application.dto.response.CompanyQueryApplicationsResponse;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
import team.retum.jobis.domain.application.spi.vo.ApplicationVO;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,10 @@ public void execute(Long recruitmentId, List<AttachmentRequest> attachmentReques
.orElseThrow(() -> RecruitmentNotFoundException.EXCEPTION);

recruitment.checkIsApplicable(student.getEntranceYear());
checkApplicationDuplicated(student.getId());
checkApplicationAlreadyApply(student.getId(), recruitment.getId());

if (queryApplicationPort.existsApplicationByStudentIdAndApplicationStatusIn(
student.getId(), ApplicationStatus.DUPLICATE_CHECK
)) {
throw ApplicationAlreadyExistsException.EXCEPTION;
}

if (queryApplicationPort.existsApplicationByStudentIdAndRecruitmentId(student.getId(), recruitment.getId())) {
throw ApplicationAlreadyExistsException.EXCEPTION;
}

List<ApplicationAttachment> attachments = attachmentRequests
.stream()
.map(attachment -> new ApplicationAttachment(attachment.url(), attachment.type()))
.toList();

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

private void checkApplicationDuplicated(Long studentId) {
if (queryApplicationPort.existsApplicationByStudentIdAndApplicationStatusIn(
studentId,
ApplicationStatus.DUPLICATE_CHECK
)) {
throw ApplicationAlreadyExistsException.EXCEPTION;
}
}

private void checkApplicationAlreadyApply(Long studentId, Long recruitmentId) {
if (queryApplicationPort.existsApplicationByStudentIdAndRecruitmentId(studentId, recruitmentId)) {
throw ApplicationAlreadyExistsException.EXCEPTION;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ public class DeleteApplicationUseCase {

public void execute(Long applicationId) {
Student student = securityPort.getCurrentStudent();

Application application = queryApplicationPort.queryApplicationById(applicationId)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import lombok.RequiredArgsConstructor;
import team.retum.jobis.common.annotation.ReadOnlyUseCase;
import team.retum.jobis.common.spi.SecurityPort;
import team.retum.jobis.domain.application.dto.response.QueryMyApplicationsResponse;
import team.retum.jobis.domain.application.dto.ApplicationFilter;
import team.retum.jobis.domain.application.dto.response.QueryMyApplicationsResponse;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
import team.retum.jobis.domain.application.spi.vo.ApplicationVO;
import team.retum.jobis.domain.student.model.Student;
Expand All @@ -27,6 +27,6 @@ public QueryMyApplicationsResponse execute() {

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

return QueryMyApplicationsResponse.of(applicationVOs);
return QueryMyApplicationsResponse.from(applicationVOs);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class QueryPassedApplicationStudentsUseCase {
public QueryPassedApplicationStudentsResponse execute(Long companyId) {
return new QueryPassedApplicationStudentsResponse(
queryApplicationPort.queryPassedApplicationStudentsByCompanyId(companyId).stream()
.map(QueryPassedApplicationStudentsResponse::of)
.map(QueryPassedApplicationStudentsResponse::from)
.toList()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,13 @@ public void execute(Long applicationId, List<AttachmentRequest> attachmentReques
Application application = queryApplicationPort.queryApplicationById(applicationId)
.orElseThrow(() -> ApplicationNotFoundException.EXCEPTION);

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

commandApplicationPort.saveApplication(
application.reapply(
attachmentRequests.stream()
.map(attachment -> new ApplicationAttachment(attachment.url(), attachment.type()))
.toList()
)
application.reapply(ApplicationAttachment.from(attachmentRequests))
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import team.retum.jobis.common.annotation.ReadOnlyUseCase;
import team.retum.jobis.common.dto.response.TotalPageCountResponse;
import team.retum.jobis.common.util.NumberUtil;
import team.retum.jobis.domain.application.dto.response.TeacherQueryApplicationsResponse;
import team.retum.jobis.domain.application.dto.ApplicationFilter;
import team.retum.jobis.domain.application.dto.response.TeacherQueryApplicationsResponse;
import team.retum.jobis.domain.application.model.ApplicationStatus;
import team.retum.jobis.domain.application.spi.QueryApplicationPort;
import team.retum.jobis.domain.application.spi.vo.ApplicationVO;
Expand Down
Loading

0 comments on commit 5aced15

Please sign in to comment.