CreateRentalUseCase.java

package com.github.jenkaby.bikerental.rental.application.usecase;

import com.github.jenkaby.bikerental.rental.domain.model.Rental;
import com.github.jenkaby.bikerental.shared.domain.model.vo.DiscountPercent;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Money;

import java.time.Duration;
import java.util.List;
import java.util.UUID;

public interface CreateRentalUseCase {


    Rental execute(CreateRentalCommand command);

    Rental execute(CreateDraftCommand command);

    record CreateRentalCommand(
            UUID customerId,
            List<Long> equipmentIds,
            Duration duration,
            String operatorId,
            Long tariffId,
            Long specialTariffId,
            Money specialPrice,
            DiscountPercent discountPercent
    ) {
    }

    record CreateDraftCommand() {
    }
}