31 lines
1.1 KiB
C#
31 lines
1.1 KiB
C#
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<GetRolPermisosQuery, IReadOnlyList<PermisoDto>>
|
|
{
|
|
private readonly IRolRepository _rolRepository;
|
|
private readonly IRolPermisoRepository _rolPermisoRepository;
|
|
|
|
public GetRolPermisosQueryHandler(IRolRepository rolRepository, IRolPermisoRepository rolPermisoRepository)
|
|
{
|
|
_rolRepository = rolRepository;
|
|
_rolPermisoRepository = rolPermisoRepository;
|
|
}
|
|
|
|
public async Task<IReadOnlyList<PermisoDto>> 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();
|
|
}
|
|
}
|