1 package io.extact.rms.external.webapi.dto; 2 3 import java.time.LocalDateTime; 4 5 import org.eclipse.microprofile.openapi.annotations.media.Schema; 6 7 import lombok.Getter; 8 import lombok.Setter; 9 10 import io.extact.rms.application.domain.Reservation; 11 import io.extact.rms.application.domain.constraint.BeforeAfterDateTime; 12 import io.extact.rms.application.domain.constraint.Note; 13 import io.extact.rms.application.domain.constraint.ReserveEndDateTime; 14 import io.extact.rms.application.domain.constraint.ReserveStartDateTimeFuture; 15 import io.extact.rms.application.domain.constraint.RmsId; 16 import io.extact.rms.application.domain.constraint.BeforeAfterDateTime.BeforeAfterDateTimeValidatable; 17 import io.extact.rms.application.domain.constraint.ValidationGroups.Add; 18 19 @Schema(description = "予約登録用DTO") 20 @BeforeAfterDateTime 21 @Getter 22 @Setter 23 public class AddReservationDto implements BeforeAfterDateTimeValidatable { 24 25 @Schema(required = true, ref = "#/components/schemas/localDateTime") 26 @ReserveStartDateTimeFuture(groups = Add.class) 27 private LocalDateTime startDateTime; 28 29 @Schema(required = true, ref = "#/components/schemas/localDateTime") 30 @ReserveEndDateTime 31 private LocalDateTime endDateTime; 32 33 @Schema(required = false) 34 @Note 35 private String note; 36 37 @RmsId 38 @Schema(required = true) 39 private int rentalItemId; 40 41 @RmsId 42 @Schema(required = true) 43 private int userAccountId; 44 45 public Reservation toEntity() { 46 return Reservation.ofTransient(startDateTime, endDateTime, note, rentalItemId, userAccountId); 47 } 48 }