public LocalTime[][] convertDayHoursToInt(final String string) { return shiftsService.convertDayHoursToInt(string); }
public boolean validateHourField(final String day, final DataDefinition dataDefinition, final Entity entity) { boolean isDayActive = (Boolean) entity.getField(day + WORKING_LITERAL); String fieldValue = entity.getStringField(day + HOURS_LITERAL); if (!isDayActive) { return true; } if (fieldValue == null || "".equals(fieldValue.trim())) { entity.addError(dataDefinition.getField(day + HOURS_LITERAL), "qcadooView.validate.field.error.missing"); return false; } try { convertDayHoursToInt(fieldValue); } catch (IllegalStateException e) { entity.addError(dataDefinition.getField(day + HOURS_LITERAL), "basic.validate.global.error.shift.hoursFieldWrongFormat"); return false; } return true; }
private Collection<ShiftHour> getHourForDay(final Entity shift, final Date dateFrom, final Date dateTo, final String day, final int offset) { if ((Boolean) shift.getField(day + WORKING_LITERAL) && StringUtils.hasText(shift.getStringField(day + HOURS_LITERAL))) { List<ShiftHour> hours = Lists.newArrayList(); LocalTime[][] dayHours = convertDayHoursToInt(shift.getStringField(day + HOURS_LITERAL)); DateTime from = new DateTime(dateFrom).withSecondOfMinute(0); DateTime to = new DateTime(dateTo); DateTime current = from.plusDays(offset - from.getDayOfWeek()); if (current.compareTo(from) < 0) { current = current.plusDays(7); } while (current.compareTo(to) <= 0) { for (LocalTime[] dayHour : dayHours) { hours.add(new ShiftHour(current.withHourOfDay(dayHour[0].getHourOfDay()) .withMinuteOfHour(dayHour[0].getMinuteOfHour()).toDate(), current .withHourOfDay(dayHour[1].getHourOfDay()).withMinuteOfHour(dayHour[1].getMinuteOfHour()).toDate())); } current = current.plusDays(7); } return hours; } else { return Collections.emptyList(); } }
@Override public Entity getShiftFromDateWithTime(final Date date) { List<Entity> shifts = getShiftsWorkingAtDate(date); for (Entity shift : shifts) { String stringHours = shift.getStringField(getDayOfWeekName(date) + HOURS_LITERAL); LocalTime[][] dayHours = convertDayHoursToInt(stringHours); for (LocalTime[] dayHour : dayHours) { if (dayHour[1].getHourOfDay() < dayHour[0].getHourOfDay()) { if (checkIfStartDateShiftIsEarlierThanDate(dayHour, date) || checkIfEndDateShiftIsLaterThanDate(dayHour, date)) { return shift; } } else { if (checkIfStartDateShiftIsEarlierThanDate(dayHour, date) && checkIfEndDateShiftIsLaterThanDate(dayHour, date)) { return shift; } } } } return null; }