AddReservationDto.java
package io.extact.rms.external.webapi.dto;
import java.time.LocalDateTime;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
import io.extact.rms.application.domain.Reservation;
import io.extact.rms.application.domain.constraint.BeforeAfterDateTime;
import io.extact.rms.application.domain.constraint.Note;
import io.extact.rms.application.domain.constraint.ReserveEndDateTime;
import io.extact.rms.application.domain.constraint.ReserveStartDateTimeFuture;
import io.extact.rms.application.domain.constraint.RmsId;
import io.extact.rms.application.domain.constraint.BeforeAfterDateTime.BeforeAfterDateTimeValidatable;
import io.extact.rms.application.domain.constraint.ValidationGroups.Add;
@Schema(description = "予約登録用DTO")
@BeforeAfterDateTime
@Getter
@Setter
public class AddReservationDto implements BeforeAfterDateTimeValidatable {
@Schema(required = true, ref = "#/components/schemas/localDateTime")
@ReserveStartDateTimeFuture(groups = Add.class)
private LocalDateTime startDateTime;
@Schema(required = true, ref = "#/components/schemas/localDateTime")
@ReserveEndDateTime
private LocalDateTime endDateTime;
@Schema(required = false)
@Note
private String note;
@RmsId
@Schema(required = true)
private int rentalItemId;
@RmsId
@Schema(required = true)
private int userAccountId;
public Reservation toEntity() {
return Reservation.ofTransient(startDateTime, endDateTime, note, rentalItemId, userAccountId);
}
}