CostCalculationRequest.java

package com.github.jenkaby.bikerental.tariff.web.query.dto;

import com.github.jenkaby.bikerental.shared.web.support.PercentValue;
import com.github.jenkaby.bikerental.tariff.web.query.validation.SpecialTariffConsistency;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.Valid;
import jakarta.validation.constraints.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

@Schema(description = "Request for rental cost calculation")
@SpecialTariffConsistency
public record CostCalculationRequest(
        @NotEmpty List<@NotNull @Valid EquipmentItemRequest> equipments,
        @NotNull @Positive Integer plannedDurationMinutes,
        @Min(0) Integer actualDurationMinutes,
        @PercentValue Integer discountPercent,
        @Positive Long specialTariffId,
        @DecimalMin("0") BigDecimal specialPrice,
        LocalDate rentalDate
) {
    @Schema(description = "Single equipment item for cost calculation")
    public record EquipmentItemRequest(@NotBlank String equipmentType) {
    }
}