RentalCommandMapperImpl.java

package com.github.jenkaby.bikerental.rental.web.command.mapper;

import com.github.jenkaby.bikerental.finance.PaymentMethod;
import com.github.jenkaby.bikerental.rental.application.usecase.CreateRentalUseCase;
import com.github.jenkaby.bikerental.rental.application.usecase.ReturnEquipmentUseCase;
import com.github.jenkaby.bikerental.rental.web.command.dto.CreateRentalRequest;
import com.github.jenkaby.bikerental.rental.web.command.dto.ReturnEquipmentRequest;
import com.github.jenkaby.bikerental.shared.domain.model.vo.DiscountPercent;
import com.github.jenkaby.bikerental.shared.domain.model.vo.Money;
import com.github.jenkaby.bikerental.shared.mapper.DiscountMapper;
import com.github.jenkaby.bikerental.shared.mapper.MoneyMapper;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import javax.annotation.processing.Generated;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    comments = "version: 1.6.3, compiler: IncrementalProcessingEnvironment from gradle-language-java-9.4.1.jar, environment: Java 21.0.10 (Amazon.com Inc.)"
)
@Component
public class RentalCommandMapperImpl extends RentalCommandMapper {

    private final MoneyMapper moneyMapper;
    private final DiscountMapper discountMapper;

    @Autowired
    public RentalCommandMapperImpl(MoneyMapper moneyMapper, DiscountMapper discountMapper) {

        this.moneyMapper = moneyMapper;
        this.discountMapper = discountMapper;
    }

    @Override
    public CreateRentalUseCase.CreateRentalCommand toCreateCommand(CreateRentalRequest request) {
        if ( request == null ) {
            return null;
        }

        UUID customerId = null;
        List<Long> equipmentIds = null;
        Duration duration = null;
        String operatorId = null;
        Long tariffId = null;
        Long specialTariffId = null;
        Money specialPrice = null;
        DiscountPercent discountPercent = null;

        customerId = request.customerId();
        List<Long> list = request.equipmentIds();
        if ( list != null ) {
            equipmentIds = new ArrayList<Long>( list );
        }
        duration = request.duration();
        operatorId = request.operatorId();
        tariffId = request.tariffId();
        specialTariffId = request.specialTariffId();
        specialPrice = moneyMapper.toMoney( request.specialPrice() );
        discountPercent = discountMapper.toDiscount( request.discountPercent() );

        CreateRentalUseCase.CreateRentalCommand createRentalCommand = new CreateRentalUseCase.CreateRentalCommand( customerId, equipmentIds, duration, operatorId, tariffId, specialTariffId, specialPrice, discountPercent );

        return createRentalCommand;
    }

    @Override
    public ReturnEquipmentUseCase.ReturnEquipmentCommand toReturnCommand(ReturnEquipmentRequest request) {
        if ( request == null ) {
            return null;
        }

        Long rentalId = null;
        List<Long> equipmentIds = null;
        List<String> equipmentUids = null;
        PaymentMethod paymentMethod = null;
        String operatorId = null;

        rentalId = request.rentalId();
        List<Long> list = request.equipmentIds();
        if ( list != null ) {
            equipmentIds = new ArrayList<Long>( list );
        }
        List<String> list1 = request.equipmentUids();
        if ( list1 != null ) {
            equipmentUids = new ArrayList<String>( list1 );
        }
        paymentMethod = request.paymentMethod();
        operatorId = request.operatorId();

        ReturnEquipmentUseCase.ReturnEquipmentCommand returnEquipmentCommand = new ReturnEquipmentUseCase.ReturnEquipmentCommand( rentalId, equipmentIds, equipmentUids, paymentMethod, operatorId );

        return returnEquipmentCommand;
    }
}