package infrastructure.mapper;

import application.port.input.command.RegisterSecurityCommand;
import infrastructure.client.registersecurity.dto.request.RegisterSecurityRequest;
import infrastructure.config.RegisterSecurityConfig;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;

@ApplicationScoped
public class RegisterSecurityMapper {

    private final RegisterSecurityConfig config;

    @Inject
    public RegisterSecurityMapper(RegisterSecurityConfig config) {
        this.config = config;
    }

    public RegisterSecurityRequest toRequestDto(RegisterSecurityCommand command) {
        if (command == null) {
            return null;
        }

        return new RegisterSecurityRequest(
                config.bankCod(),         // Dato de configuración
                config.curCod(),         // Dato de configuración
                config.eventCod(),         // Dato de configuración
                config.eventCod(),        // Dato de configuración
                command.getLogin(),         // Dato del comando
                command.getFecHor(),        // Dato del comando
                command.getNacCli(),        // Dato del comando
                command.getCedRifCli(),     // Dato del comando
                command.getTipoProductoCli(),
                command.getTipoProductoBen(),
                command.getProductoCli(),
                command.getCodEmpresa(),// Dato del comando
                command.getNacBen(),        // Dato del comando
                command.getCedBen(),        // Dato del comando
                command.getNombreBen(),
                command.getProductoBen(),   // Dato del comando
                command.getMonto(),         // Dato del comando
                command.getReferencia(),    // Dato del comando
                command.getNroDePago(),     // Dato del comando
                command.getDesPago(),       // Dato del comando
                command.getObjeto(),        // Dato del comando
                command.getTipoRespuesta(), // Dato del comando
                command.getMsgRespuesta(),  // Dato del comando
                command.getTiempoRespuesta(),// Dato del comando
                command.getCodFintech(),    // Dato del comando
                command.getCedRifFintech(), // Dato del comando
                command.getTipoDispositivo(),// Dato del comando
                command.getDesDispositivo(),// Dato del comando
                command.getIpCli(),         // Dato del comando
                config.sp()              // Dato de configuración
        );
    }
}