using CuentasCobrar.CORE.Entities;
using CuentasCobrar.CORE.Interfaces;
using CuentasCobrar.INFRASTRUCTURE.Data;
using Microsoft.EntityFrameworkCore;
namespace CuentasCobrar.INFRASTRUCTURE.Repositories
{
///
/// Clase encargada de realizar todos las operaciones de lectura, modificación y adición de datos
/// en la tabla Rol De Usuario de la base de datos.
///
/// Implementa la interfaz IRolDeUsuarioRepo
public class RolDeUsuarioRepo : IRolDeUsuarioRepo
{
///
/// Contexto de la base de datos en SQL Server.
///
private readonly CuentasCobrarContext _cuentasCobrarContext;
public RolDeUsuarioRepo(CuentasCobrarContext cuentasCobrarContext)
{
_cuentasCobrarContext = cuentasCobrarContext;
}
public async Task> Get(string idUsuario)
{
var rolesDeUsuario = await _cuentasCobrarContext.RolesDeUsuarios.Where(x => x.IdUsuario == idUsuario).OrderBy(x => x.DescripcionDeRol).ToListAsync();
return rolesDeUsuario;
}
public async Task Get(string idUsuario, int idRol)
{
var rolDeUsuario = await _cuentasCobrarContext.RolesDeUsuarios.FirstOrDefaultAsync(x => x.IdUsuario == idUsuario && x.IdRol == idRol);
return rolDeUsuario;
}
public async Task Post(RolDeUsuario RolDeUsuario)
{
bool agregado = false;
await _cuentasCobrarContext.RolesDeUsuarios.AddAsync(RolDeUsuario);
int filasAfectadas = await _cuentasCobrarContext.SaveChangesAsync();
if (filasAfectadas > 0)
{
agregado = true;
}
return agregado;
}
public async Task Delete(string idUsuario, int idRol)
{
bool eliminado = false;
var rolDeUsuario = await Get(idUsuario, idRol);
_cuentasCobrarContext.Remove(rolDeUsuario);
int filasAfectadas = await _cuentasCobrarContext.SaveChangesAsync();
if (filasAfectadas > 0)
{
eliminado = true;
}
return eliminado;
}
}
}