205 lines
6.3 KiB
C#
205 lines
6.3 KiB
C#
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using Entidades.Dto;
|
|
using Entidades;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Entidades.Admin;
|
|
|
|
namespace Modelo;
|
|
|
|
public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios> {
|
|
public bool AltaInquilino(Cliente cli, long dni) {
|
|
var con = Context;
|
|
|
|
Grupo? grupo;
|
|
//check por si la cuenta ya existe (puede ser propietario)
|
|
Cliente? cli2 = con.Clientes.FirstOrDefault(x=>x.Email == cli.Email);
|
|
if (cli2 != null) {
|
|
grupo = con.Grupos.Find(2);
|
|
if (grupo == null || grupo.Id == 0) return false;
|
|
cli2.Idgrupos.Add(grupo);
|
|
return Guardar(con);
|
|
}
|
|
|
|
grupo = con.Grupos.Find(2);
|
|
if (grupo == null || grupo.Id == 0) return false;
|
|
|
|
con.Clientes.Add(cli);
|
|
|
|
if (cli.Dni == 0) return false;
|
|
|
|
cli.Idgrupos.Add(grupo);
|
|
GenerarLog(con, dni, $"Alta Inquilino: {cli.Dni}");
|
|
return Guardar(con);
|
|
}
|
|
|
|
public bool AltaPropietario(Cliente cli, long dni) {
|
|
var con = Context;
|
|
|
|
Grupo? grupo;
|
|
//check por si la cuenta ya existe (puede ser propietario)
|
|
Cliente? cli2 = con.Clientes.Find(cli.Dni);
|
|
if (cli2 != null) {
|
|
grupo = con.Grupos.Find(1);
|
|
if (grupo == null || grupo.Id == 0) return false;
|
|
cli2.Idgrupos.Add(grupo);
|
|
return Guardar(con);
|
|
}
|
|
|
|
grupo = con.Grupos.Find(1);
|
|
if (grupo == null || grupo.Id == 0) return false;
|
|
|
|
con.Clientes.Add(cli);
|
|
|
|
if (cli.Dni == 0) return false;
|
|
|
|
cli.Idgrupos.Add(grupo);
|
|
GenerarLog(con, dni, $"Alta Propietario: {cli.Dni}");
|
|
return Guardar(con);
|
|
}
|
|
|
|
public bool ActualizarPropietario(Cliente cli) {
|
|
var con = Context;
|
|
Cliente? cliOld = con.Clientes.Find(cli.Dni);
|
|
if (cliOld == null) return false;
|
|
if (cli.Dni != cliOld.Dni) return false;
|
|
|
|
cliOld = cli;
|
|
return Guardar(con);
|
|
}
|
|
|
|
|
|
public bool CheckUsuario(LoginDto logindto) {
|
|
if (logindto.Contraseña ==null)return false;
|
|
|
|
string Contraseña = HacerHash(logindto.Contraseña);
|
|
|
|
Cliente? usu = Context.Clientes.FirstOrDefault(a => a.Email == logindto.Email);
|
|
if (usu == null) return false;
|
|
|
|
string hashdb = Encoding.UTF8.GetString(usu.Contraseña);
|
|
|
|
if (hashdb == Contraseña) return true;
|
|
return false;
|
|
|
|
}
|
|
private string HacerHash(string pass) {
|
|
var buf = SHA256.HashData(Encoding.UTF8.GetBytes(pass));
|
|
return BitConverter.ToString(buf).Replace("-","");
|
|
}
|
|
|
|
public bool CheckToken(string email, string token) {
|
|
var usu = Context.Clientes.FirstOrDefault(x => x.Email == email);
|
|
if (usu == null) return false;
|
|
|
|
return usu.Token == token;
|
|
}
|
|
|
|
public void GuardarToken(LoginDto login, string tokenString) {
|
|
var con = Context;
|
|
var usu = con.Clientes.FirstOrDefault(x => x.Email == login.Email);
|
|
if (usu == null) return;
|
|
usu.Token = tokenString;
|
|
Guardar(con);
|
|
}
|
|
|
|
public bool CheckGrupo(string email, string grupo) {
|
|
var con = Context;
|
|
var usu = con.Clientes.Include(x=>x.Idgrupos).FirstOrDefault(x=>x.Email == email);
|
|
bool ret = false;
|
|
|
|
if (usu != null && usu.Idgrupos != null) {
|
|
Parallel.ForEach(usu.Idgrupos, (idGrupo, state) => {
|
|
if (idGrupo.Nombre == grupo) {
|
|
ret = true;
|
|
state.Break();
|
|
}
|
|
});
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
public IEnumerable<Entidades.Admin.UsuarioAdmin> GetClientes(){
|
|
var con = Context;
|
|
var list = con.Clientes.ToList().Select(x => new Entidades.Admin.UsuarioAdmin {
|
|
Dni = x.Dni,
|
|
Email = x.Email,
|
|
Nombre = x.Nombre+" "+x.Apellido,
|
|
Habilitado = x.Habilitado});
|
|
return list;
|
|
}
|
|
|
|
public bool AñadirClienteAGrupo(string email, string grupo, long dni) {
|
|
var con = Context;
|
|
|
|
var cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(x => x.Email == email);
|
|
var gru = con.Grupos.FirstOrDefault(x => x.Nombre == grupo);
|
|
|
|
if (cli == null || gru == null) {
|
|
return false;
|
|
}
|
|
|
|
cli.Idgrupos.Add(gru);
|
|
GenerarLog(con, dni, $"Añadir grupo: {gru.Nombre}");
|
|
return Guardar(con);
|
|
}
|
|
|
|
public bool EliminarClienteAGrupo(string email, string grupo, long dniresponsable) {
|
|
var con = Context;
|
|
|
|
var cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(x => x.Email == email);
|
|
var gru = con.Grupos.FirstOrDefault(x => x.Nombre == grupo);
|
|
|
|
if (cli == null || gru == null) {
|
|
return false;
|
|
}
|
|
cli.Idgrupos.Remove(gru);
|
|
GenerarLog(con, dniresponsable, $"Eliminar de grupo: {gru.Nombre}");
|
|
return Guardar(con);
|
|
}
|
|
|
|
public bool BajaCliente(long dni) {
|
|
var con = Context;
|
|
|
|
Cliente? cli = con.Clientes.Include(x=>x.Idgrupos).FirstOrDefault(x=>x.Dni == dni);
|
|
if (cli == null) return false;
|
|
|
|
if (cli.Habilitado == 0) {
|
|
cli.Habilitado = 1;
|
|
} else {
|
|
cli.Habilitado = 0;
|
|
}
|
|
GenerarLog(con, cli.Dni, $"Baja cliente id: {cli.Dni}");
|
|
return Guardar(con);
|
|
}
|
|
|
|
public Cliente? ObtenerClientePorDni(long dni) {
|
|
var con = Context;
|
|
Cliente? cli = con.Clientes.FirstOrDefault(x=>x.Dni == dni);
|
|
return cli;
|
|
}
|
|
|
|
public Cliente? ObtenerClientePorToken(string token) {
|
|
var con = Context;
|
|
Cliente? cli = con.Clientes.Include(x=>x.NotificacioneDniclienteNavigations).FirstOrDefault(x=>x.Token == token);
|
|
|
|
if (cli == null|| cli.Dni == 0) return null;
|
|
return cli;
|
|
}
|
|
|
|
public bool PatchUsuario(UpdateUsuarioAdmin dto, long dni, long responsabledni) {
|
|
var con = Context;
|
|
var usu = con.Clientes.FirstOrDefault(x=>x.Dni ==dni);
|
|
if (usu == null) return false;
|
|
|
|
usu.Nombre = dto.Nombre;
|
|
usu.Apellido = dto.Apellido;
|
|
usu.Celular = dto.Celular;
|
|
usu.Domicilio = dto.Domicilio;
|
|
|
|
GenerarLog(con, responsabledni, "Patch Usuario");
|
|
return Guardar(con);
|
|
}
|
|
}
|