diff --git a/src/main/asciidoc/models/design/staff.puml b/src/main/asciidoc/models/design/staff.puml index 8b227cb..6d78088 100644 --- a/src/main/asciidoc/models/design/staff.puml +++ b/src/main/asciidoc/models/design/staff.puml @@ -3,6 +3,12 @@ skinparam linetype ortho skinparam groupInheritance 2 +package javax.money { + class MonetaryAmount + class Money + class EURO +} + package Spring { class CrudRepository class Streamable @@ -21,15 +27,18 @@ package catering.staff { - name: String - id: Long + Employee() - + Employee(name: String, job: JobType) + + Employee(name: String, job: JobType, wage: MonetaryAmount) + getId(): Long + getName(): String + getJob(): JobType + + getWage(): Double + setName(name: String): void + setJob(job: JobType): void + + setWage(wage: Double): void } Employee --> JobType : -job + Employee --> MonetaryAmount : -wage enum JobType { COOK @@ -51,6 +60,8 @@ package catering.staff { StaffController ..> StaffForm StaffController ..> Model StaffController ..> Errors + StaffController ..> Money + StaffController ..> EURO class StaffManagement { + StaffManagement(staffRepository: StaffRepository, orderManagement:OrderManagement) @@ -76,8 +87,10 @@ package catering.staff { + StaffForm(): void + getName(): String + getJob(): JobType + + getWage(): Double + setName(name:String): void + setJob(job:JobType): void + + setWage( wage:Double): void + validate(e:Errors): void } StaffForm ..> JobType : -job diff --git a/src/main/asciidoc/models/design/staff.svg b/src/main/asciidoc/models/design/staff.svg index 8358674..7e12223 100644 --- a/src/main/asciidoc/models/design/staff.svg +++ b/src/main/asciidoc/models/design/staff.svg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a2f14d414c6c0ba9730741ccd2d76c70b7a1a87f0246e81f5b957fe0fd58390f -size 34925 +oid sha256:d05c92a10c3f72cc28a0a5a00eaf629d0de440deac20622caa8eadde13259cb2 +size 42634 diff --git a/src/main/java/catering/staff/Employee.java b/src/main/java/catering/staff/Employee.java index b7d077f..d14357e 100644 --- a/src/main/java/catering/staff/Employee.java +++ b/src/main/java/catering/staff/Employee.java @@ -1,5 +1,11 @@ package catering.staff; +import static org.salespointframework.core.Currencies.EURO; + +import javax.money.MonetaryAmount; + +import org.javamoney.moneta.Money; + import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; @@ -10,14 +16,16 @@ public class Employee { private String name; private JobType job; private @Id @GeneratedValue Long id; + private MonetaryAmount wage; protected Employee() { // No-argument constructor for JPA } - public Employee(String name, JobType job) { + public Employee(String name, JobType job, MonetaryAmount wage) { this.name = name; this.job = job; + this.wage = wage; } public Long getId() { @@ -32,6 +40,9 @@ public class Employee { return job; } + public Double getWage() { + return wage.getNumber().doubleValue(); + } public void setName(String name) { this.name = name; @@ -41,6 +52,10 @@ public class Employee { this.job = job; } + public void setWage(Double wage) { + this.wage = Money.of(wage, EURO); + } + @Override public boolean equals(Object obj) { if (obj instanceof Employee other) { diff --git a/src/main/java/catering/staff/StaffController.java b/src/main/java/catering/staff/StaffController.java index 13b6231..bb7aeb9 100644 --- a/src/main/java/catering/staff/StaffController.java +++ b/src/main/java/catering/staff/StaffController.java @@ -1,5 +1,8 @@ package catering.staff; +import static org.salespointframework.core.Currencies.EURO; + +import org.javamoney.moneta.Money; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -40,7 +43,7 @@ public class StaffController { if (result.hasErrors()) { return getStaff(model, form); } - staffManagement.save(new Employee(form.getName(), form.getJob())); + staffManagement.save(new Employee(form.getName(), form.getJob(), Money.of(form.getWage(), EURO))); return "redirect:/staff"; } @@ -57,6 +60,7 @@ public class StaffController { StaffForm form = new StaffForm(); form.setJob(employee.getJob()); form.setName(employee.getName()); + form.setWage(employee.getWage()); return editEmployee(model, form); } @@ -75,6 +79,7 @@ public class StaffController { } employee.setJob(form.getJob()); employee.setName(form.getName()); + employee.setWage(form.getWage()); staffManagement.save(employee); return "redirect:/staff"; } diff --git a/src/main/java/catering/staff/StaffForm.java b/src/main/java/catering/staff/StaffForm.java index cbd8961..15cf765 100644 --- a/src/main/java/catering/staff/StaffForm.java +++ b/src/main/java/catering/staff/StaffForm.java @@ -4,11 +4,13 @@ import org.springframework.validation.Errors; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.PositiveOrZero; public class StaffForm { private @NotEmpty String name; private @NotNull JobType job; + private @PositiveOrZero @NotNull Double wage; public StaffForm() { } @@ -21,6 +23,10 @@ public class StaffForm { return job; } + public Double getWage() { + return wage; + } + public void setName(String name) { this.name = name; } @@ -29,6 +35,10 @@ public class StaffForm { this.job = job; } + public void setWage(Double wage) { + this.wage = wage; + } + public void validate(Errors e) { if (job == null) { e.rejectValue("job", "job is not a job type"); diff --git a/src/main/resources/templates/edit-staff.html b/src/main/resources/templates/edit-staff.html index 2f52476..e1a55f9 100644 --- a/src/main/resources/templates/edit-staff.html +++ b/src/main/resources/templates/edit-staff.html @@ -13,6 +13,11 @@
Ungültiger Name
+
+ + +
Ungültiger Lohn
+
+
Ungültiger Lohn
+