Untitled
unknown
java
3 years ago
1.5 kB
12
Indexable
public void validateTimeScheduleEvent(UUID organizationId, TimeScheduleEvent event) {
var existingTimeScheduleEvents = timeScheduleEventRepository
.findAllByOrganizationIdAndEmployeeId(organizationId, event.getEmployeeId());
if (CollectionUtils.isEmpty(existingTimeScheduleEvents)) {
return;
}
validateTimeScheduleEventRanges(existingTimeScheduleEvents, event);
}
private void validateTimeScheduleEventUpdate(UUID organizationId, TimeScheduleEvent event) {
var existingTimeScheduleEvents = seq(
timeScheduleEventRepository.findAllByOrganizationIdAndEmployeeId(
organizationId, event.getEmployeeId()
)
)
.filter(e -> !Objects.equals(e.getId(), event.getId()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(existingTimeScheduleEvents)) {
return;
}
validateTimeScheduleEventRanges(existingTimeScheduleEvents, event);
}
private void validateTimeScheduleEventRanges(
List<TimeScheduleEvent> existing, TimeScheduleEvent event
) {
var expected = Lists.newArrayList(existing);
expected.add(event);
Collections.sort(expected, Comparator.comparing(TimeScheduleEvent::getStart));
for (int i = 0; i < expected.size() - 1; ++i) {
var isInterception = expected.get(i).getEnd().isAfter(expected.get(i + 1).getStart());
if (isInterception) {
throw new ConflictException("Time schedule events should not intercept");
}
}
}Editor is loading...