using SIGCM2.Domain.Entities;

namespace SIGCM2.Application.TiposDeIva.Dtos;

public static class TipoDeIvaMapper
{
    public static TipoDeIvaDto ToDto(TipoDeIva entity) => new(
        Id: entity.Id,
        Codigo: entity.Codigo,
        Descripcion: entity.Descripcion,
        Porcentaje: entity.Porcentaje,
        AplicaIVA: entity.AplicaIVA,
        Activo: entity.Activo,
        VigenciaDesde: entity.VigenciaDesde,
        VigenciaHasta: entity.VigenciaHasta,
        PredecesorId: entity.PredecesorId,
        FechaCreacion: entity.FechaCreacion,
        FechaModificacion: entity.FechaModificacion
    );

    public static IReadOnlyList<HistorialCadenaDto> ToHistorialChain(IReadOnlyList<TipoDeIva> chain)
    {
        var result = new List<HistorialCadenaDto>(chain.Count);
        for (var i = 0; i < chain.Count; i++)
        {
            var item = chain[i];
            result.Add(new HistorialCadenaDto(
                Id: item.Id,
                Codigo: item.Codigo,
                Porcentaje: item.Porcentaje,
                VigenciaDesde: item.VigenciaDesde,
                VigenciaHasta: item.VigenciaHasta,
                PredecesorId: item.PredecesorId,
                Version: i + 1
            ));
        }
        return result;
    }
}
