RentalResponse.java

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

import io.swagger.v3.oas.annotations.media.Schema;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.UUID;

@Schema(description = "Full rental details")
public record RentalResponse(
        @Schema(description = "Rental ID", example = "1") Long id,
        @Schema(description = "Customer UUID") UUID customerId,
        @Schema(description = "List of equipment items in this rental") List<EquipmentItemResponse> equipmentItems,
        @Schema(description = "Rental status", example = "ACTIVE") String status,
        @Schema(description = "Rental start time") LocalDateTime startedAt,
        @Schema(description = "Expected return time") LocalDateTime expectedReturnAt,
        @Schema(description = "Actual return time (null if not returned)") LocalDateTime actualReturnAt,
        @Schema(description = "Planned duration in minutes", example = "120") Integer plannedDurationMinutes,
        @Schema(description = "Actual duration in minutes (null until returned)", example = "130") Integer actualDurationMinutes,
        @Schema(description = "Estimated rental cost", example = "200.00") BigDecimal estimatedCost,
        @Schema(description = "Final rental cost (null until returned)", example = "250.00") BigDecimal finalCost
) {
}