mirror of
https://github.com/st-tu-dresden-praktikum/swt23w23
synced 2024-07-19 21:04:36 +02:00
WIP: Alternative implementation for staff payroll
This commit is contained in:
parent
2f221da2f4
commit
c85a27fb60
|
@ -1,43 +0,0 @@
|
|||
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");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,6 +2,9 @@ package catering.staff;
|
|||
|
||||
import static org.salespointframework.core.Currencies.EURO;
|
||||
|
||||
import java.time.YearMonth;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.javamoney.moneta.Money;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
@ -26,37 +29,19 @@ public class StaffController {
|
|||
|
||||
@GetMapping("/staff")
|
||||
@PreAuthorize("hasRole('ADMIN')")
|
||||
public String getStaff(Model model) {
|
||||
return getStaff(model, new StaffForm());
|
||||
public String getStaff(Model model, @RequestParam Optional<YearMonth> month) {
|
||||
return getStaff(model, new StaffForm(), month.orElseGet(YearMonth::now));
|
||||
}
|
||||
|
||||
public String getStaff(Model model, @Valid StaffForm form) {
|
||||
return getStaff(model, form, YearMonth.now());
|
||||
}
|
||||
|
||||
public String getStaff(Model model, @Valid StaffForm form, YearMonth month) {
|
||||
model.addAttribute("staff", staffManagement.findAll());
|
||||
model.addAttribute("form", form);
|
||||
model.addAttribute("month", month);
|
||||
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";
|
||||
}
|
||||
|
||||
|
|
|
@ -111,8 +111,4 @@ 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,16 +10,11 @@
|
|||
<div layout:fragment="content">
|
||||
<div>
|
||||
<h2>Mitarbeiterdetails</h2>
|
||||
<form th:object="${dateForm}" th:action="@{/staff/updateYearMonth}" method="post">
|
||||
<form method="get">
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="year">Jahr:</label>
|
||||
<input class="form-control" type="year" th:field="*{year}" th:errorclass="is-invalid" required>
|
||||
<div th:if="${#fields.hasErrors('year')}" class="invalid-feedback">Ungültiges Jahr</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="month">Monat:</label>
|
||||
<input class="form-control" type="month" th:field="*{month}" th:errorclass="is-invalid" required>
|
||||
<div th:if="${#fields.hasErrors('month')}" class="invalid-feedback">Ungültiger Monat</div>
|
||||
<label class="form-label" for="month">Monat</label>
|
||||
<input class="form-control" type="month" name="month" th:value="${month}" required>
|
||||
</div>
|
||||
<button class="btn btn-primary" type="submit">Zeitangabe aktualisieren</button>
|
||||
</form>
|
||||
|
@ -37,7 +32,7 @@
|
|||
<td th:text="${employee.name}">Max</td>
|
||||
<td th:text="${employee.job}">Koch</td>
|
||||
<td th:text="${employee.wage}"></td>
|
||||
<td th:with="year=${dataForm.getYear},month=${dataForm.getMonth}" th:text="${management.getWorkingHoursByEmployee(employee, year, month)}"></td>
|
||||
<td th:text="${management.getWorkingHoursByEmployee(employee, month)}"></td>
|
||||
<td>
|
||||
<a th:href="@{'/staff/edit/' + ${employee.id}}"
|
||||
><button class="btn btn-warning">Bearbeiten</button></a
|
||||
|
|
Loading…
Reference in a new issue