using System.Collections.ObjectModel; using System.Security.Cryptography; using System.Text; using Entidades.Dto; using Entidades; namespace Modelo; public class RepositorioUsuarios: RepositorioBase { public bool AltaCliente(CrearClienteDto cid){ var usu = new Usuario { email = cid.email, contraseña = Encoding.UTF8.GetBytes(HacerHash(cid.contraseña)) }; var cli = new Cliente { dni = cid.dni, nombre = cid.nombre, domicilio = cid.domicilio, apellido = cid.apellido, celular = cid.celular }; var cant = Context.Usuarios .GroupBy(u => u.id) .Select(x => x.Count()) .ToList(); if (cant.Count < 1) return false; usu.id = cant.Count() + 1; cli.idusuario = cant.Count() + 1; var grupo = Context.Grupos.Find(2); if (grupo == null || grupo.id == 0) return false; Context.Usuarios.Add(usu); Guardar(); var usut = Context.Usuarios.Find(usu.id); usut.idgrupos.Add(grupo); Guardar(); Context.Clientes.Add(cli); return Guardar(); } public bool CheckUsuario(LoginDto logindto) { string Contraseña = HacerHash(logindto.Contraseña); Usuario? usu = Context.Usuarios.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(TokenDto token){ var usu = Context.Usuarios.FirstOrDefault(x => x.email == token.Email); if (usu == null) return false; return usu.token == token.Token; } public void GuardarToken(LoginDto login, string tokenString) { var usu = Context.Usuarios.FirstOrDefault(x => x.email == login.Email); if (usu == null) return; usu.token = tokenString; Guardar(); } }