Files
mws.backend.dotnet/application/Permissions/Commands/DeleteRole.cs
T
2026-08-19 23:25:08 +07:00

29 lines
852 B
C#

using MediatR;
using mws.backend.dotnet.application.Common;
namespace mws.backend.dotnet.application.Permissions;
public record DeleteRoleCommand(Guid Id) : IRequest;
public class DeleteRoleHandler(IUnitOfWork uow) : IRequestHandler<DeleteRoleCommand>
{
public async Task Handle(DeleteRoleCommand command, CancellationToken ct)
{
var role = await uow.Roles.GetByIdAsync(command.Id, ct)
?? throw new NotFoundException("Role not found");
if (role.IsSystem)
{
throw new BadRequestException("Cannot delete a system role");
}
if (await uow.Users.ExistsByRoleIdAsync(command.Id, ct))
{
throw new BadRequestException("Cannot delete a role that is assigned to accounts");
}
uow.Roles.Remove(role);
await uow.SaveChangesAsync(ct);
}
}