package de.stadtbote.votian; import java.time.*; import java.time.format.DateTimeFormatter; import java.util.Map; import static de.stadtbote.votian.LegacyMapping.*; import static de.stadtbote.votian.OrderEntryCatalog.invalid; /** jobs2 stores the selected acceptance clock time on the current Berlin date. */ final class CustomerEntryAcceptance { static LocalDateTime resolve(String time, boolean enabled, Clock clock) { if(time==null || time.isBlank())return null; if(!enabled)throw invalid("Die Annahmezeit ist für diese Niederlassung nicht freigegeben."); if(!time.matches("(?:[01][0-9]|2[0-3]):[0-5][0-9]"))throw invalid("Bitte die Annahmezeit im Format HH:mm angeben."); return LocalDate.now(clock.withZone(ZoneId.of("Europe/Berlin"))).atTime(LocalTime.parse(time)); } static OrderEntryModels.Quote quote(OrderEntryModels.Request request,OrderEntryModels.Quote quote) { return request.acceptUntil()==null?quote:quote.withMediationDeadline(quote.mediationDeadline(),LegacyOrderPricing.hash(quote.fingerprint()+"|customer-acceptance|"+request.acceptUntil())); } static String load(Map job,boolean enabled) { var at=dateTime(job,"jb_waittime"); return enabled&&at!=null?at.format(DateTimeFormatter.ofPattern("HH:mm")):null; } }