using System.Security.Cryptography; using System.Text; using Entidades; using Entidades.Dto; using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.AspNetCore.Mvc; using Modelo; namespace AlquilaFacil.Controllers; [ApiController] public class PropietarioController: ControllerBase { [HttpGet("api/propietario")] public IActionResult ObtenerPropietarioPorDni(long Dni, [FromHeader(Name ="Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 14); if (validacion1 == false) return Unauthorized(); var ret = RepositorioPropietario.Singleton.ObtenerPropietarioPorDni(Dni); return Ok(ret); } [HttpPost("api/propietario")] public IActionResult AltaPropietario([FromBody]CrearClienteDto Propietario, [FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 5); if (validacion1 == false) return Unauthorized(); Cliente? rep = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); if (rep == null) return Unauthorized(); string validacion2 = verificarCrearUsuario(Propietario); if (validacion2 != "") return BadRequest(validacion2); var cli = new Cliente { Dni = Propietario.dni, Nombre = Propietario.nombre, Domicilio = Propietario.domicilio, Apellido = Propietario.apellido, Celular = Propietario.celular, Email = Propietario.email, Contraseña = Encoding.UTF8.GetBytes(HacerHash(Propietario.contraseña)), Habilitado = 1, }; bool ret = RepositorioUsuarios.Singleton.AltaPropietario(cli, rep.Dni); return ret ? Ok(new {message = "Se añadio el propietario exitosamente"}) : BadRequest(); } [HttpPatch("api/propietarios")] public IActionResult PatchPropietario([FromBody]CrearClienteDto Propietario, [FromHeader(Name = "Auth")] string Auth){ if (String.IsNullOrEmpty(Auth)) return Unauthorized(); var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 5); if (validacion1 == false) return Unauthorized(); string validacion2 = verificarCrearUsuario(Propietario); if (validacion2 != "") return BadRequest(validacion2); var cli = new Cliente { Dni = Propietario.dni, Nombre = Propietario.nombre, Domicilio = Propietario.domicilio, Apellido = Propietario.apellido, Celular = Propietario.celular, Email = Propietario.email, Contraseña = Encoding.UTF8.GetBytes(HacerHash(Propietario.contraseña)) }; var ret = RepositorioUsuarios.Singleton.ActualizarPropietario(cli); return ret ? Ok(new {message = "Se Modifico el propietario exitosamente"}) : BadRequest(); } private string verificarCrearUsuario(CrearClienteDto cid) { string msg = ""; if (cid.email == string.Empty) msg += "Falta ingresar el email\n"; if (cid.contraseña.Length < 8) msg += "Por lo menos 8 caracteres en la contraseña\n"; if (cid.apellido == string.Empty) msg += "Falta Ingresar apellido\n"; if (cid.nombre == string.Empty) msg += "Falta Ingresar nombre\n"; if (cid.dni <= 0) msg += "Falta Ingresar dni o elejiste un numero negativo\n"; if (cid.celular == string.Empty) msg += "Falta Ingresar Numero de Contacto\n"; if (cid.domicilio == string.Empty) msg += "Falta Ingresar Domicilio Legal"; return msg; } private string HacerHash(string pass){ var buf = SHA256.HashData(Encoding.UTF8.GetBytes(pass)); return BitConverter.ToString(buf).Replace("-",""); } }