using AutoMapper;
using ConvertToDTE.Model;
using ConvertToDTE.Model.Dtos.Response;

namespace ConvertToDTE.Profiles;

public class DTEProfile : Profile
{
    public DTEProfile()
    {
        //! Mapear los objetos de SourceClass a DTE (PARA "DISTINTOS" NOMBRES)

        CreateMap<SourceDTE, DTE>()
            .ForMember(dest => dest.Version, opt => opt.MapFrom(src => src.Version))
            .ForMember(dest => dest.Documento, opt => opt.MapFrom(src => src.Documento));

        CreateMap<SourceDocumento, Documento>()
            .ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.ID))
            .ForMember(dest => dest.Encabezado, opt => opt.MapFrom(src => src.Encabezado))
            .ForMember(dest => dest.Detalle, opt => opt.MapFrom(src => src.Detalle))
            .ForMember(dest => dest.CAE, opt => opt.MapFrom(src => src.CAE));

        CreateMap<SourceEncabezado, Encabezado>()
            .ForMember(dest => dest.IdDoc, opt => opt.MapFrom(src => src.IdDoc))
            .ForMember(dest => dest.Emisor, opt => opt.MapFrom(src => src.Emisor))
            .ForMember(dest => dest.Receptor, opt => opt.MapFrom(src => src.Receptor))
            .ForMember(dest => dest.Totales, opt => opt.MapFrom(src => src.Totales))
            .ForMember(dest => dest.Impuestos, opt => opt.MapFrom(src => src.Impuestos))
            .ForMember(dest => dest.Retenciones, opt => opt.MapFrom(src => src.Retenciones));

        CreateMap<SourceIdDoc, IdDoc>();
        CreateMap<SourceEmisor, Emisor>();
        CreateMap<SourceNombre, NombreEmisor>();
        CreateMap<SourceCodigoEmisor, CodigoEmisor>();
        CreateMap<SourceDireccion, Direccion>();
        CreateMap<SourceContacto, ContactoEmisor>();
        CreateMap<SourceReceptor, Receptor>();
        CreateMap<SourceDocRecep, DocRecep>();
        CreateMap<SourceNombre, NombreRecep>();
        CreateMap<SourceCodigoReceptor, CodigoReceptor>();
        CreateMap<SourceContacto, ContactoReceptor>();
        CreateMap<SourceTotales, Totales>();
        CreateMap<SourceImpuestos, Impuestos>();
        CreateMap<SourceRetencion, Retencion>();
        CreateMap<SourceDetalle, Detalle>();
        CreateMap<SourceCdgItem, CdgItem>();
        CreateMap<SourceCAE, CAE>();
    }
}