using SIGCM2.Application.Abstractions;
using SIGCM2.Application.Abstractions.Persistence;
using SIGCM2.Application.Permisos.Dtos;

namespace SIGCM2.Application.Permisos.List;

public sealed class ListPermisosQueryHandler : ICommandHandler<ListPermisosQuery, IReadOnlyList<PermisoDto>>
{
    private readonly IPermisoRepository _repository;

    public ListPermisosQueryHandler(IPermisoRepository repository)
    {
        _repository = repository;
    }

    public async Task<IReadOnlyList<PermisoDto>> Handle(ListPermisosQuery query)
    {
        var permisos = await _repository.ListAsync();
        return permisos
            .Select(p => new PermisoDto(p.Id, p.Codigo, p.Nombre, p.Descripcion, p.Modulo))
            .ToList();
    }
}
