QuoteRequestDto.java
package cl.prgm.portaltrip.infrastructure.web.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
@Schema(description = "Input used to calculate a quote without creating a reservation")
public record QuoteRequestDto(
@Schema(description = "Destination location ID", example = "3", minimum = "1", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "Destination is required")
@Min(value = 1, message = "Destination must be a positive ID")
Integer destinationId,
@Schema(description = "Number of passengers", example = "2", minimum = "1", maximum = "8", requiredMode = Schema.RequiredMode.REQUIRED)
@Min(value = 1, message = "At least one passenger is required")
@Max(value = 8, message = "A quote supports at most eight passengers")
int passengers,
@Schema(description = "Trip service level", example = "exploration", allowableValues = {"express", "exploration", "premium"}, requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank(message = "Trip type is required")
@Pattern(
regexp = "express|exploration|premium",
message = "Trip type must be express, exploration, or premium")
String tripType,
@Schema(description = "Whether interdimensional insurance is requested", example = "false", requiredMode = Schema.RequiredMode.REQUIRED)
boolean insurance) {
}