using SIGCM2.Application.Abstractions; using SIGCM2.Application.Abstractions.Persistence; using SIGCM2.Application.Permisos.Dtos; using SIGCM2.Domain.Exceptions; namespace SIGCM2.Application.Permisos.GetByRol; public sealed class GetRolPermisosQueryHandler : ICommandHandler> { private readonly IRolRepository _rolRepository; private readonly IRolPermisoRepository _rolPermisoRepository; public GetRolPermisosQueryHandler(IRolRepository rolRepository, IRolPermisoRepository rolPermisoRepository) { _rolRepository = rolRepository; _rolPermisoRepository = rolPermisoRepository; } public async Task> Handle(GetRolPermisosQuery query) { var rol = await _rolRepository.GetByCodigoAsync(query.RolCodigo); if (rol is null) throw new RolNotFoundException(query.RolCodigo); var permisos = await _rolPermisoRepository.GetByRolCodigoAsync(query.RolCodigo); return permisos .Select(p => new PermisoDto(p.Id, p.Codigo, p.Nombre, p.Descripcion, p.Modulo)) .ToList(); } }