You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/10/05 15:22:28 UTC

[isis-app-demo] 02/05: adds bookVisit mixin action for Pet

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to tag tags/05-03-schedule-visit-action
in repository https://gitbox.apache.org/repos/asf/isis-app-demo.git

commit fbf30e6ccbedef39228e17c44c7606804296c29c
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Oct 5 16:16:30 2021 +0100

    adds bookVisit mixin action for Pet
---
 .../visits/contributions/pet/Pet_bookVisit.java    | 57 ++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java
new file mode 100644
index 0000000..6d1146d
--- /dev/null
+++ b/module-visits/src/main/java/petclinic/modules/visits/contributions/pet/Pet_bookVisit.java
@@ -0,0 +1,57 @@
+package petclinic.modules.visits.contributions.pet;
+
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.clock.ClockService;
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+import lombok.RequiredArgsConstructor;
+
+import petclinic.modules.pets.dom.pet.Pet;
+import petclinic.modules.pets.dom.pet.PetRepository;
+import petclinic.modules.pets.dom.pet.PetSpecies;
+import petclinic.modules.pets.dom.petowner.PetOwner;
+import petclinic.modules.pets.types.PetName;
+import petclinic.modules.visits.dom.visit.Visit;
+import petclinic.modules.visits.types.Reason;
+
+@Action(
+        semantics = SemanticsOf.IDEMPOTENT,
+        commandPublishing = Publishing.ENABLED,
+        executionPublishing = Publishing.ENABLED
+)
+@ActionLayout(associateWith = "visits", sequence = "1")
+@RequiredArgsConstructor
+public class Pet_bookVisit {
+
+    private final Pet pet;
+
+    public Visit act(
+            LocalDateTime visitAt,
+            @Reason final String reason
+            ) {
+        return repositoryService.persist(new Visit(pet, visitAt, reason));
+    }
+    public String validate0Act(LocalDateTime visitAt) {
+        return clockService.getClock().nowAsLocalDateTime().isBefore(visitAt)
+                ? null
+                : "Must be in the future";
+    }
+    public LocalDateTime default0Act() {
+        return clockService.getClock().nowAsLocalDateTime()
+                .toLocalDate()
+                .plusDays(1)
+                .atTime(LocalTime.of(9, 0));
+    }
+
+    @Inject ClockService clockService;
+    @Inject RepositoryService repositoryService;
+}