diff --git a/src/main/java/catering/staff/DateForm.java b/src/main/java/catering/staff/DateForm.java new file mode 100644 index 0000000..b442a08 --- /dev/null +++ b/src/main/java/catering/staff/DateForm.java @@ -0,0 +1,43 @@ +package catering.staff; + +import java.time.LocalDateTime; + +import org.springframework.validation.Errors; + +import jakarta.validation.constraints.NotNull; + +public class DateForm { + + private @NotNull int year; + private @NotNull int month; + + public DateForm() { + this.year = LocalDateTime.now().getYear(); + this.month = LocalDateTime.now().getMonth().getValue(); + } + + public int getYear() { + return year; + } + + public int getMonth() { + return month; + } + + public void setYear(int year) { + this.year = year; + } + + public void setMonth(int month) { + this.month = month; + } + + public void validate(Errors e) { + if (year < 2023 || year > 2100) { + e.rejectValue("year", "year is not valid"); + } + if (month < 1 || month > 12) { + e.rejectValue("month", "month is not valid"); + } + } +} diff --git a/src/main/java/catering/staff/StaffController.java b/src/main/java/catering/staff/StaffController.java index bb7aeb9..873eeb8 100644 --- a/src/main/java/catering/staff/StaffController.java +++ b/src/main/java/catering/staff/StaffController.java @@ -33,6 +33,30 @@ public class StaffController { public String getStaff(Model model, @Valid StaffForm form) { model.addAttribute("staff", staffManagement.findAll()); model.addAttribute("form", form); + model.addAttribute("management", staffManagement); + model.addAttribute("dateForm", new DateForm()); + return "staff"; + } + + public String getStaff(Model model, @Valid DateForm form) { + model.addAttribute("staff", staffManagement.findAll()); + model.addAttribute("form", new StaffForm()); + model.addAttribute("management", staffManagement); + model.addAttribute("dateForm", form); + return "staff"; + } + + @PostMapping("/staff/updateYearMonth") + @PreAuthorize("hasRole('ADMIN')") + public String getStaff(Model model, @Valid DateForm form, Errors result) { + form.validate(result); + if (result.hasErrors()) { + return getStaff(model, form); + } + model.addAttribute("staff", staffManagement.findAll()); + model.addAttribute("form", new StaffForm()); + model.addAttribute("management", staffManagement); + model.addAttribute("dateForm", form); return "staff"; } diff --git a/src/main/java/catering/staff/StaffManagement.java b/src/main/java/catering/staff/StaffManagement.java index 2f48528..300310a 100644 --- a/src/main/java/catering/staff/StaffManagement.java +++ b/src/main/java/catering/staff/StaffManagement.java @@ -111,4 +111,8 @@ public class StaffManagement { .map(order -> order.getDurationInSecondsDuringMonth(month)) .collect(Collectors.summingDouble(seconds -> (double) seconds / 3600)); } + + public double getWorkingHoursByEmployee(Employee e, int year, int month) { + return getWorkingHoursByEmployee(e, YearMonth.of(year, month)); + } } diff --git a/src/main/resources/templates/staff.html b/src/main/resources/templates/staff.html index c0a2491..b34ee98 100644 --- a/src/main/resources/templates/staff.html +++ b/src/main/resources/templates/staff.html @@ -10,11 +10,25 @@