< Summary

Information
Class: FAU.Logica.Services.RolService
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/RolService.cs
Line coverage
90%
Covered lines: 36
Uncovered lines: 4
Coverable lines: 40
Total lines: 94
Line coverage: 90%
Branch coverage
100%
Covered branches: 8
Total branches: 8
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetByIdAsync()100%11100%
GetByNombreAsync()100%11100%
GetAllAsync()100%11100%
CreateAsync()100%2284.61%
UpdateAsync()100%6684.61%
DeleteAsync()100%11100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/RolService.cs

#LineLine coverage
 1using FAU.DataAccess.Repositories;
 2using FAU.Entidades;
 3
 4namespace FAU.Logica.Services;
 5
 6public class RolService : IRolService
 7{
 8    private readonly IRolRepository _rolRepository;
 9    private readonly IAuditoriaService _auditoriaService;
 10    private readonly ICurrentUserContext _currentUser;
 11
 1212    public RolService(IRolRepository rolRepository, IAuditoriaService auditoriaService, ICurrentUserContext currentUser)
 13    {
 1214        _rolRepository = rolRepository;
 1215        _auditoriaService = auditoriaService;
 1216        _currentUser = currentUser;
 1217    }
 18
 19    public async Task<Rol?> GetByIdAsync(long id)
 20    {
 221        return await _rolRepository.GetByIdAsync(id);
 222    }
 23
 24    public async Task<Rol?> GetByNombreAsync(string nombre)
 25    {
 226        return await _rolRepository.GetByNombreAsync(nombre);
 227    }
 28
 29    public async Task<IEnumerable<Rol>> GetAllAsync()
 30    {
 231        return await _rolRepository.GetAllAsync();
 232    }
 33
 34    public async Task<(bool Success, Rol? Rol, string? Error)> CreateAsync(string nombre, string? descripcion = null)
 35    {
 36        try
 37        {
 238            if (await _rolRepository.ExistsAsync(nombre))
 39            {
 140                return (false, null, "Ya existe un rol con ese nombre");
 41            }
 42
 143            var nuevoRol = new Rol
 144            {
 145                Nombre = nombre,
 146                Descripcion = descripcion
 147            };
 48
 149            var rolCreado = await _rolRepository.CreateAsync(nuevoRol);
 150            await _auditoriaService.LogAuditoriaAsync(_currentUser.UserId ?? 0, AccionEnum.CrearRol, ContextoEnum.Roles,
 151            return (true, rolCreado, null);
 52        }
 053        catch (Exception ex)
 54        {
 055            return (false, null, $"Error al crear rol: {ex.Message}");
 56        }
 257    }
 58
 59    public async Task<(bool Success, Rol? Rol, string? Error)> UpdateAsync(long id, string nombre, string? descripcion =
 60    {
 61        try
 62        {
 363            var rol = await _rolRepository.GetByIdAsync(id);
 364            if (rol == null)
 65            {
 166                return (false, null, "Rol no encontrado");
 67            }
 68
 69            // Verificar si el nuevo nombre ya existe (si es diferente al actual)
 270            if (rol.Nombre != nombre && await _rolRepository.ExistsAsync(nombre))
 71            {
 172                return (false, null, "Ya existe un rol con ese nombre");
 73            }
 74
 175            rol.Nombre = nombre;
 176            rol.Descripcion = descripcion;
 77
 178            var rolActualizado = await _rolRepository.UpdateAsync(rol);
 179            await _auditoriaService.LogAuditoriaAsync(_currentUser.UserId ?? 0, AccionEnum.ActualizarRol, ContextoEnum.R
 180            return (true, rolActualizado, null);
 81        }
 082        catch (Exception ex)
 83        {
 084            return (false, null, $"Error al actualizar rol: {ex.Message}");
 85        }
 386    }
 87
 88    public async Task DeleteAsync(long id)
 89    {
 190        await _auditoriaService.LogAuditoriaAsync(_currentUser.UserId ?? 0, AccionEnum.ActualizarRol, ContextoEnum.Roles
 191        await _rolRepository.DeleteAsync(id);
 192    }
 93}
 94