RentalQueryMapperImpl.java

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

import com.github.jenkaby.bikerental.rental.domain.model.Rental;
import com.github.jenkaby.bikerental.rental.domain.model.RentalEquipment;
import com.github.jenkaby.bikerental.rental.shared.mapper.RentalEquipmentMapper;
import com.github.jenkaby.bikerental.rental.shared.mapper.RentalStatusMapper;
import com.github.jenkaby.bikerental.rental.web.query.dto.EquipmentItemResponse;
import com.github.jenkaby.bikerental.rental.web.query.dto.RentalResponse;
import com.github.jenkaby.bikerental.rental.web.query.dto.RentalSummaryResponse;
import com.github.jenkaby.bikerental.shared.mapper.DurationMapper;
import com.github.jenkaby.bikerental.shared.mapper.MoneyMapper;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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 RentalQueryMapperImpl implements RentalQueryMapper {

    private final MoneyMapper moneyMapper;
    private final RentalStatusMapper rentalStatusMapper;
    private final DurationMapper durationMapper;
    private final RentalOverdueMapper rentalOverdueMapper;
    private final RentalEquipmentWebMapper rentalEquipmentWebMapper;
    private final RentalEquipmentMapper rentalEquipmentMapper;

    @Autowired
    public RentalQueryMapperImpl(MoneyMapper moneyMapper, RentalStatusMapper rentalStatusMapper, DurationMapper durationMapper, RentalOverdueMapper rentalOverdueMapper, RentalEquipmentWebMapper rentalEquipmentWebMapper, RentalEquipmentMapper rentalEquipmentMapper) {

        this.moneyMapper = moneyMapper;
        this.rentalStatusMapper = rentalStatusMapper;
        this.durationMapper = durationMapper;
        this.rentalOverdueMapper = rentalOverdueMapper;
        this.rentalEquipmentWebMapper = rentalEquipmentWebMapper;
        this.rentalEquipmentMapper = rentalEquipmentMapper;
    }

    @Override
    public RentalResponse toResponse(Rental rental) {
        if ( rental == null ) {
            return null;
        }

        Integer actualDurationMinutes = null;
        Integer plannedDurationMinutes = null;
        List<EquipmentItemResponse> equipmentItems = null;
        Long id = null;
        UUID customerId = null;
        String status = null;
        LocalDateTime startedAt = null;
        LocalDateTime expectedReturnAt = null;
        LocalDateTime actualReturnAt = null;
        BigDecimal estimatedCost = null;
        BigDecimal finalCost = null;

        actualDurationMinutes = durationMapper.toMinutes( rental.getActualDuration() );
        plannedDurationMinutes = durationMapper.toMinutes( rental.getPlannedDuration() );
        equipmentItems = rentalEquipmentListToEquipmentItemResponseList( rental.getEquipments() );
        id = rental.getId();
        customerId = rental.getCustomerId();
        status = rentalStatusMapper.statusToString( rental.getStatus() );
        startedAt = rental.getStartedAt();
        expectedReturnAt = rental.getExpectedReturnAt();
        actualReturnAt = rental.getActualReturnAt();
        estimatedCost = moneyMapper.toBigDecimal( rental.getEstimatedCost() );
        finalCost = moneyMapper.toBigDecimal( rental.getFinalCost() );

        RentalResponse rentalResponse = new RentalResponse( id, customerId, equipmentItems, status, startedAt, expectedReturnAt, actualReturnAt, plannedDurationMinutes, actualDurationMinutes, estimatedCost, finalCost );

        return rentalResponse;
    }

    @Override
    public RentalSummaryResponse toRentalSummaryResponse(Rental rental) {
        if ( rental == null ) {
            return null;
        }

        List<Long> equipmentIds = null;
        Integer overdueMinutes = null;
        Long id = null;
        UUID customerId = null;
        String status = null;
        LocalDateTime startedAt = null;
        LocalDateTime expectedReturnAt = null;

        equipmentIds = rentalEquipmentMapper.toEquipmentIds( rental.getEquipments() );
        overdueMinutes = rentalOverdueMapper.calculate( rental );
        id = rental.getId();
        customerId = rental.getCustomerId();
        status = rentalStatusMapper.statusToString( rental.getStatus() );
        startedAt = rental.getStartedAt();
        expectedReturnAt = rental.getExpectedReturnAt();

        RentalSummaryResponse rentalSummaryResponse = new RentalSummaryResponse( id, customerId, equipmentIds, status, startedAt, expectedReturnAt, overdueMinutes );

        return rentalSummaryResponse;
    }

    protected List<EquipmentItemResponse> rentalEquipmentListToEquipmentItemResponseList(List<RentalEquipment> list) {
        if ( list == null ) {
            return null;
        }

        List<EquipmentItemResponse> list1 = new ArrayList<EquipmentItemResponse>( list.size() );
        for ( RentalEquipment rentalEquipment : list ) {
            list1.add( rentalEquipmentWebMapper.toEquipmentItemResponse( rentalEquipment ) );
        }

        return list1;
    }
}