Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

w6 태스크 생성시 날짜 validation 오류 해결 #44

Open
seoyoung-dev opened this issue Oct 9, 2024 · 1 comment
Open

w6 태스크 생성시 날짜 validation 오류 해결 #44

seoyoung-dev opened this issue Oct 9, 2024 · 1 comment
Labels
bug Something isn't working fixed

Comments

@seoyoung-dev
Copy link
Contributor

seoyoung-dev commented Oct 9, 2024

문제

  • 태스크 생성시 날짜 validation 오류 발생

원인

  • 프로젝트의 startDate가 태스크의 startDate 이후에 생성되었는지 검증함(반대가 되어야 함)

해결

  • if 문의 조건을 startDate.isBefore(endDate)에서 endDate.isBefore(startDate)로 변경

TaskDTO.java 변경 전

        public Create(String name, String remark, Long memberId, LocalDateTime startDate,
            LocalDateTime endDate) {
            if (startDate.isBefore(endDate)) {
                throw new BaseHandler(HttpStatus.FORBIDDEN, "종료시간은 시작시간보다 이전일 수 없습니다.");
            }
            
           // 코드 
        }

TaskDTO.java 변경 후

public Create(String name, String remark, Long memberId, LocalDateTime startDate,
            LocalDateTime endDate) {
            if (endDate.isBefore(startDate)) {
                throw new BaseHandler(HttpStatus.FORBIDDEN, "종료시간은 시작시간보다 이전일 수 없습니다.");
            }
            
           // 코드 
        }
  • if 문의 조건을
    project.getStartDate().isBefore(create.getStartDate()) || project.getStartDate().isAfter(create.getEndDate())에서 project.getStartDate().isAfter(create.getStartDate()) || project.getEndDate().isBefore(create.getEndDate())로 변경

TaskService.java 변경 전

    public TaskEntity createTask(HttpServletRequest req, @Valid Long projectId, Create create) {
        ProjectEntity project = projectRepository.findByIdAndUserEntityEmailAndIsDeletedFalse(
                projectId, parsingPram.getEmail(req))
            .orElseThrow(() -> new BaseHandler(HttpStatus.NOT_FOUND, "존재하지 않는 프로젝트"));

        //  태스크의 일정 검증
        if (project.getStartDate().isBefore(create.getStartDate()) || project.getStartDate()
            .isAfter(create.getEndDate())) {
            throw new BaseHandler(HttpStatus.FORBIDDEN, "태스크는 프로젝트의 기한을 넘어설 수 없습니다.");
        }

           // 코드 
    }

TaskService.java 변경 후

    public TaskEntity createTask(HttpServletRequest req, @Valid Long projectId, Create create) {
        ProjectEntity project = projectRepository.findByIdAndUserEntityEmailAndIsDeletedFalse(
                projectId, parsingPram.getEmail(req))
            .orElseThrow(() -> new BaseHandler(HttpStatus.NOT_FOUND, "존재하지 않는 프로젝트"));

        // 태스크의 일정 검증
        if (project.getStartDate().isAfter(create.getStartDate()) || project.getEndDate()
            .isBefore(create.getEndDate())) {
            throw new BaseHandler(HttpStatus.FORBIDDEN, "태스크는 프로젝트의 기한을 넘어설 수 없습니다.");
        }

           // 코드 
    }
@seoyoung-dev seoyoung-dev added the bug Something isn't working label Oct 9, 2024
@seoyoung-dev
Copy link
Contributor Author

Task 수정시에도 validation 문제 발생하여 동일하게 해결

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working fixed
Projects
None yet
Development

No branches or pull requests

1 participant