TFS_ANTIGUO/TPAtesa_CuentasCobrar/CuentasCobrar.INFRASTRUCTURE/Repositories/UsuarioRepo.cs

93 lines
3.3 KiB
C#

using CuentasCobrar.CORE.Entities;
using CuentasCobrar.CORE.Interfaces;
using CuentasCobrar.CORE.Pagination;
using CuentasCobrar.CORE.QueryFilters;
using CuentasCobrar.INFRASTRUCTURE.Data;
using Microsoft.EntityFrameworkCore;
namespace CuentasCobrar.INFRASTRUCTURE.Repositories
{
/// <summary>
/// Clase encargada de realizar todos las operaciones de lectura, modificación y adición de datos
/// en la tabla <c>Usuario</c> de la base de datos.
/// </summary>
/// <remarks> Implementa la interfaz <c>IUsuarioRepo</c> </remarks>
public class UsuarioRepo : IUsuarioRepo
{
/// <summary>
/// Contexto de la base de datos en SQL Server.
/// </summary>
private readonly CuentasCobrarContext _cuentasCobrarContext;
public UsuarioRepo(CuentasCobrarContext cuentasCobrarContext)
{
_cuentasCobrarContext = cuentasCobrarContext;
}
public async Task<List<Usuario>> Get()
{
var usuarios = await _cuentasCobrarContext.Usuarios.OrderBy(x => x.Nombre).ToListAsync();
return usuarios;
}
public async Task<ListaDePaginacion<Usuario>> Get(PaginacionQueryFilter filtros)
{
var usuarios = await _cuentasCobrarContext.Usuarios.OrderBy(x => x.Nombre).ToListAsync();
var usuariosPaginados = new ListaDePaginacion<Usuario>(usuarios, filtros.NumeroDePagina, filtros.RegistrosPorPagina);
return usuariosPaginados;
}
public async Task<Usuario> Get(string username)
{
var usuario = await _cuentasCobrarContext.Usuarios.FirstOrDefaultAsync(x => x.IdUsuario == username);
return usuario;
}
public async Task<Usuario> GetUsuarioPorCorreo(string correo)
{
var usuario = await _cuentasCobrarContext.Usuarios.FirstOrDefaultAsync(x => x.Correo == correo);
return usuario;
}
public async Task<bool> Post(Usuario usuario)
{
bool agregado = false;
await _cuentasCobrarContext.Usuarios.AddAsync(usuario);
int filasAfectadas = await _cuentasCobrarContext.SaveChangesAsync();
if (filasAfectadas > 0)
{
agregado = true;
}
return agregado;
}
public async Task<bool> Put(Usuario usuario)
{
try
{
var usuarioActual = await Get(usuario.IdUsuario);
usuarioActual.Nombre = usuario.Nombre;
usuarioActual.Apellido1 = usuario.Apellido1;
usuarioActual.Apellido2 = usuario.Apellido2;
usuarioActual.Correo = usuario.Correo;
usuarioActual.Habilitado = usuario.Habilitado;
await _cuentasCobrarContext.SaveChangesAsync();
}
catch (Exception)
{
return false;
}
return true;
}
public async Task<bool> Delete(string id)
{
bool eliminado = false;
var usuario = await Get(id);
_cuentasCobrarContext.Remove(usuario);
int filasAfectadas = await _cuentasCobrarContext.SaveChangesAsync();
if (filasAfectadas > 0)
{
eliminado = true;
}
return eliminado;
}
}
}