BatchCalculationMapperImpl.java

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

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.DurationMapper;
import com.github.jenkaby.bikerental.shared.mapper.MoneyMapper;
import com.github.jenkaby.bikerental.tariff.EquipmentCostItem;
import com.github.jenkaby.bikerental.tariff.RentalCostCalculationCommand;
import com.github.jenkaby.bikerental.tariff.web.query.dto.CostCalculationRequest;
import java.time.Duration;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
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 BatchCalculationMapperImpl extends BatchCalculationMapper {

    private final MoneyMapper moneyMapper;
    private final DurationMapper durationMapper;
    private final DiscountMapper discountMapper;

    @Autowired
    public BatchCalculationMapperImpl(MoneyMapper moneyMapper, DurationMapper durationMapper, DiscountMapper discountMapper) {

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

    @Override
    public RentalCostCalculationCommand toCommand(CostCalculationRequest request) {
        if ( request == null ) {
            return null;
        }

        List<EquipmentCostItem> equipments = null;
        Duration plannedDuration = null;
        Duration actualDuration = null;
        DiscountPercent discount = null;
        Long specialTariffId = null;
        Money specialPrice = null;
        LocalDate rentalDate = null;

        equipments = equipmentItemRequestListToEquipmentCostItemList( request.equipments() );
        plannedDuration = durationMapper.toDuration( request.plannedDurationMinutes() );
        actualDuration = durationMapper.toDuration( request.actualDurationMinutes() );
        discount = discountMapper.toDiscount( request.discountPercent() );
        specialTariffId = request.specialTariffId();
        specialPrice = moneyMapper.toMoney( request.specialPrice() );
        rentalDate = request.rentalDate();

        RentalCostCalculationCommand rentalCostCalculationCommand = new RentalCostCalculationCommand( equipments, plannedDuration, actualDuration, discount, specialTariffId, specialPrice, rentalDate );

        return rentalCostCalculationCommand;
    }

    @Override
    public EquipmentCostItem toItem(CostCalculationRequest.EquipmentItemRequest item) {
        if ( item == null ) {
            return null;
        }

        String equipmentType = null;

        equipmentType = item.equipmentType();

        EquipmentCostItem equipmentCostItem = new EquipmentCostItem( equipmentType );

        return equipmentCostItem;
    }

    protected List<EquipmentCostItem> equipmentItemRequestListToEquipmentCostItemList(List<CostCalculationRequest.EquipmentItemRequest> list) {
        if ( list == null ) {
            return null;
        }

        List<EquipmentCostItem> list1 = new ArrayList<EquipmentCostItem>( list.size() );
        for ( CostCalculationRequest.EquipmentItemRequest equipmentItemRequest : list ) {
            list1.add( toItem( equipmentItemRequest ) );
        }

        return list1;
    }
}