public List<ShiftsServiceImpl.ShiftHour> getHoursForAllShifts(final Date dateFrom, final Date dateTo) { return shiftsService.getHoursForAllShifts(dateFrom, dateTo); }
@Override public Date findDateFromForOrder(final Date dateTo, final long seconds) { if (dataDefinitionService.get(BasicConstants.PLUGIN_IDENTIFIER, BasicConstants.MODEL_SHIFT).find().list() .getTotalNumberOfEntities() == 0) { return null; } long stop = dateTo.getTime(); long remaining = seconds; while (remaining >= 0) { List<ShiftHour> hours = getHoursForAllShifts(new Date(stop - STEP), new Date(stop)); for (int i = hours.size() - 1; i >= 0; i--) { ShiftHour hour = hours.get(i); long diff = (hour.getDateTo().getTime() - hour.getDateFrom().getTime()) / 1000; if (diff >= remaining) { return new Date(hour.getDateTo().getTime() - (remaining * 1000)); } else { remaining -= diff; } } stop -= STEP; if (stop < MIN_TIMESTAMP) { return null; } } return null; }
@Override public Date findDateToForOrder(final Date dateFrom, final long seconds) { if (dataDefinitionService.get(BasicConstants.PLUGIN_IDENTIFIER, BasicConstants.MODEL_SHIFT).find().list() .getTotalNumberOfEntities() == 0) { return null; } long start = dateFrom.getTime(); long remaining = seconds; while (remaining >= 0) { List<ShiftHour> hours = getHoursForAllShifts(new Date(start), new Date(start + STEP)); for (ShiftHour hour : hours) { long diff = (hour.getDateTo().getTime() - hour.getDateFrom().getTime()) / 1000; if (diff >= remaining) { return new Date(hour.getDateFrom().getTime() + (remaining * 1000)); } else { remaining -= diff; } } start += STEP; if (start > MAX_TIMESTAMP) { return null; } } return null; }