RentalCostCalculationCommand.java
package com.github.jenkaby.bikerental.tariff;
import com.github.jenkaby.bikerental.shared.domain.model.vo.DiscountPercent;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Money;
import org.jspecify.annotations.NonNull;
import org.jspecify.annotations.Nullable;
import java.time.Duration;
import java.time.LocalDate;
import java.util.List;
public record RentalCostCalculationCommand(
@NonNull List<EquipmentCostItem> equipments,
@NonNull Duration plannedDuration,
@Nullable Duration actualDuration,
@Nullable DiscountPercent discount,
@Nullable Long specialTariffId,
@Nullable Money specialPrice,
LocalDate rentalDate
) {
public Duration effectiveDuration() {
return actualDuration != null ? actualDuration : plannedDuration;
}
}