Initial commit

This commit is contained in:
Paul-Henri Froidmont 2025-02-27 18:45:46 +01:00
commit 1919e4b72c
Signed by: phfroidmont
GPG key ID: BE948AFD7E7873BE
14 changed files with 640 additions and 0 deletions

View file

@ -0,0 +1,23 @@
package lu.foyer
package clients
import zio.schema.*
import java.time.LocalDate
enum ClientCommand derives Schema:
case Create(
lastName: ClientLastName,
firstName: ClientFirstName,
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])
case Update(
lastName: Option[ClientLastName],
firstName: Option[ClientFirstName],
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])
case Disable(reason: ClientDisabledReason)

View file

@ -0,0 +1,24 @@
package lu.foyer
package clients
import zio.schema.*
import java.time.LocalDate
enum ClientEvent derives Schema:
case Created(
lastName: ClientLastName,
firstName: ClientFirstName,
birthDate: ClientBirthDate,
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])
case Updated(
lastName: Option[ClientLastName],
firstName: Option[ClientFirstName],
birthDate: Option[ClientBirthDate],
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])

View file

@ -0,0 +1,24 @@
package lu.foyer
package clients
import zio.schema.*
import java.time.LocalDate
enum ClientState derives Schema:
case Actif(
lastName: ClientLastName,
firstName: ClientFirstName,
birthDate: ClientBirthDate,
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])
case Inactif(
lastName: ClientLastName,
firstName: ClientFirstName,
birthDate: ClientBirthDate,
drivingLicenseDate: Option[ClientDrivingLicenseDate],
phoneNumber: Option[PhoneNumberInput],
email: Option[Email],
address: Option[Address])