-
Notifications
You must be signed in to change notification settings - Fork 3
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
feat: add validity date in curriculum create dto #135
base: develop
Are you sure you want to change the base?
Changes from all commits
2266df4
32022ad
480ff1d
044330e
9fb7573
c340524
ca26b04
c59a730
83560e6
ed47fc7
269ddf9
9bc7e7a
db73c0e
7a649e9
36f71c4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
package br.edu.ifsp.ifspcodelab.gestaoestagiosbackend.common.exceptions; | ||
|
||
import lombok.Getter; | ||
|
||
import java.time.LocalDate; | ||
|
||
@Getter | ||
public class DateChronologyException extends RuntimeException { | ||
private final LocalDate startDate; | ||
private final LocalDate endDate; | ||
|
||
public DateChronologyException(LocalDate startDate, LocalDate endDate) { | ||
super(); | ||
this.startDate = startDate; | ||
this.endDate = endDate; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
package br.edu.ifsp.ifspcodelab.gestaoestagiosbackend.common.exceptions; | ||
|
||
import lombok.Getter; | ||
|
||
import java.time.LocalDate; | ||
|
||
@Getter | ||
public class TimeOverlayException extends RuntimeException { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Essa classe está bem flexível, podendo ser usada em qualquer situação de sobreposição de tempo. Isso é muito bom. Outra solução seria ter uma exceção mais específica e que indicasse com qual currículo acontece a sobreposição ( public class CurriculumTimeOverlayException extends RuntimeException {
private final UUID curriculumOverlaidId;
public TimeOverlayException(UUID curriculumOverlaidId) {
super();
this.curriculumOverlaidId = curriculumOverlaidId;
}
} Vamos discutir mais sobre isso no review semana que vem. |
||
private final LocalDate startDate; | ||
private final LocalDate endDate; | ||
private final LocalDate overlaidStartDate; | ||
private final LocalDate overlaidEndDate; | ||
|
||
public TimeOverlayException(LocalDate startDate, LocalDate endDate, LocalDate overlaidStartDate, LocalDate overlaidEndDate) { | ||
super(); | ||
this.startDate = startDate; | ||
this.endDate = endDate; | ||
this.overlaidStartDate = overlaidStartDate; | ||
this.overlaidEndDate = overlaidEndDate; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package br.edu.ifsp.ifspcodelab.gestaoestagiosbackend.curriculum; | ||
|
||
import br.edu.ifsp.ifspcodelab.gestaoestagiosbackend.common.exceptions.DateChronologyException; | ||
import br.edu.ifsp.ifspcodelab.gestaoestagiosbackend.common.exceptions.TimeOverlayException; | ||
|
||
import java.time.LocalDate; | ||
import java.util.List; | ||
import java.util.UUID; | ||
|
||
public class CurriculumOverlapVerification { | ||
|
||
public boolean checkingAddCurriculum(List<Curriculum> curriculums, CurriculumCreateDto curriculum){ | ||
var validityStartDate = curriculum.getValidityStartDate(); | ||
var validityEndDate = curriculum.getValidityEndDate(); | ||
if(validityEndDate != null) { | ||
verifyDatesChronology(validityStartDate, validityEndDate); | ||
for(Curriculum c : curriculums){ | ||
var comparingStartDate = c.getValidityStartDate(); | ||
var comparingEndDate = c.getValidityEndDate(); | ||
if(comparingEndDate != null && ( | ||
(validityStartDate.isAfter(comparingStartDate) && validityStartDate.isBefore(comparingEndDate)) || (validityEndDate.isAfter(comparingStartDate) && validityEndDate.isBefore(comparingEndDate)) || validityStartDate.isEqual(comparingStartDate) || validityStartDate.isEqual(comparingEndDate) || validityEndDate.isEqual(comparingStartDate) || validityEndDate.isEqual(comparingEndDate)) | ||
){ | ||
throw new TimeOverlayException(validityStartDate,validityEndDate,comparingStartDate,comparingEndDate); | ||
} | ||
else if( | ||
comparingEndDate == null && (validityStartDate.isAfter(comparingStartDate) || validityEndDate.isAfter(comparingStartDate) || validityStartDate.isEqual(comparingStartDate) || validityEndDate.isEqual(comparingStartDate)) | ||
){ | ||
throw new TimeOverlayException(validityStartDate,validityEndDate,comparingStartDate,LocalDate.now()); | ||
} | ||
} | ||
} | ||
else if(!(curriculums.isEmpty())){ | ||
for(Curriculum c : curriculums){ | ||
var comparingStartDate = c.getValidityStartDate(); | ||
var comparingEndDate = c.getValidityEndDate(); | ||
if(comparingEndDate == null){ | ||
throw new TimeOverlayException(validityStartDate, LocalDate.now(),comparingStartDate,LocalDate.now()); | ||
} | ||
if( | ||
validityStartDate.isBefore(comparingStartDate) || validityStartDate.isBefore(comparingEndDate) || validityStartDate.isEqual(comparingStartDate) || validityStartDate.isEqual(comparingEndDate) | ||
){ | ||
throw new TimeOverlayException(validityStartDate,validityEndDate,comparingStartDate,comparingEndDate); | ||
} | ||
} | ||
} | ||
return true; | ||
} | ||
|
||
public boolean checkingUpdateCurriculum(List<Curriculum> curriculums, CurriculumCreateDto curriculum, UUID curriculumID){ | ||
var validityStartDate = curriculum.getValidityStartDate(); | ||
var validityEndDate = curriculum.getValidityEndDate(); | ||
if(validityEndDate != null) { | ||
verifyDatesChronology(validityStartDate, validityEndDate); | ||
for(Curriculum c : curriculums){ | ||
var comparingStartDate = c.getValidityStartDate(); | ||
var comparingEndDate = c.getValidityEndDate(); | ||
if( | ||
(comparingEndDate != null && c.getId() != curriculumID) && ((validityStartDate.isAfter(comparingStartDate) && validityStartDate.isBefore(comparingEndDate)) || (validityEndDate.isAfter(comparingStartDate) && validityEndDate.isBefore(comparingEndDate)) || validityStartDate.isEqual(comparingStartDate) || validityStartDate.isEqual(comparingEndDate) || validityEndDate.isEqual(comparingStartDate) || validityEndDate.isEqual(comparingEndDate)) | ||
){ | ||
throw new TimeOverlayException(validityStartDate, validityEndDate, comparingStartDate, comparingEndDate); | ||
} | ||
else if ( | ||
(comparingEndDate == null && c.getId() != curriculumID) && (validityStartDate.isAfter(comparingStartDate) || validityEndDate.isAfter(comparingStartDate) || validityStartDate.isEqual(comparingStartDate) || validityEndDate.isEqual(comparingStartDate)) | ||
){ | ||
throw new TimeOverlayException(validityStartDate, validityEndDate,comparingStartDate,LocalDate.now()); | ||
} | ||
} | ||
} | ||
else { | ||
for(Curriculum c : curriculums){ | ||
var comparingStartDate = c.getValidityStartDate(); | ||
var comparingEndDate = c.getValidityEndDate(); | ||
if( | ||
c.getId() != curriculumID && (validityStartDate.isBefore(comparingStartDate) || validityStartDate.isBefore(comparingEndDate) || validityStartDate.isEqual(comparingStartDate) || validityStartDate.isEqual(comparingEndDate)) | ||
){ | ||
throw new TimeOverlayException(validityStartDate,LocalDate.now(),comparingStartDate,comparingEndDate); | ||
} | ||
} | ||
} | ||
return true; | ||
} | ||
|
||
private void verifyDatesChronology(LocalDate startDate, LocalDate endDate){ | ||
if(startDate.isAfter(endDate) || startDate.isEqual(endDate)){ | ||
throw new DateChronologyException(startDate, endDate); | ||
} | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Talvez essa exception poderia ter um nome mais específico como
StartDateAfterEndDateException