TariffV2CommandToDomainMapper.java
package com.github.jenkaby.bikerental.tariff.application.mapper;
import com.github.jenkaby.bikerental.tariff.application.shared.mapper.TariffV2ParamsToDomainMapper;
import com.github.jenkaby.bikerental.tariff.application.usecase.CreateTariffV2UseCase;
import com.github.jenkaby.bikerental.tariff.application.usecase.UpdateTariffV2UseCase;
import com.github.jenkaby.bikerental.tariff.domain.model.TariffV2;
import com.github.jenkaby.bikerental.tariff.domain.model.TariffV2Status;
import org.springframework.stereotype.Component;
import java.util.Map;
// FIXME use mapper here
@Component
public class TariffV2CommandToDomainMapper {
private static final String VERSION_DEFAULT = "v2";
private final TariffV2ParamsToDomainMapper paramsToDomainMapper;
public TariffV2CommandToDomainMapper(TariffV2ParamsToDomainMapper paramsToDomainMapper) {
this.paramsToDomainMapper = paramsToDomainMapper;
}
public TariffV2 toTariffV2(CreateTariffV2UseCase.CreateTariffV2Command command) {
Map<String, Object> params = command.params() != null ? command.params() : Map.of();
return paramsToDomainMapper.buildTariff(
null,
command.name(),
command.description(),
command.equipmentTypeSlug(),
command.pricingType(),
VERSION_DEFAULT,
command.validFrom(),
command.validTo(),
TariffV2Status.INACTIVE,
params
);
}
public TariffV2 toTariffV2(UpdateTariffV2UseCase.UpdateTariffV2Command command, TariffV2Status status) {
Map<String, Object> params = command.params() != null ? command.params() : Map.of();
return paramsToDomainMapper.buildTariff(
command.id(),
command.name(),
command.description(),
command.equipmentTypeSlug(),
command.pricingType(),
VERSION_DEFAULT,
command.validFrom(),
command.validTo(),
status,
params
);
}
}