using System.Collections.ObjectModel;
using System.Security.Cryptography;
using System.Text;
using Entidades.Dto;
using Entidades;

namespace Modelo;

public class RepositorioUsuarios: RepositorioBase<Usuario, RepositorioUsuarios>
{
    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;
        
    }

    public override ReadOnlyCollection<Usuario> Listar()
    {
        throw new NotImplementedException();
    }

    public 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();
    }
}
