View Javadoc
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  }