using Microsoft.AspNetCore.Mvc; using System.Text; using Entidades; using Entidades.Dto; using Modelo; using System.Diagnostics.CodeAnalysis; using System.Security.Cryptography; namespace AlquilaFacil.Controllers; [ApiController] public class InquilinoController : ControllerBase { [HttpGet("api/inquilino")] public IActionResult Get([FromHeader(Name = "Auth")] string Auth) { if (!string.IsNullOrEmpty(Auth)) return BadRequest(); var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 9); if (ret == false) return BadRequest(ret); var list = RepositorioInquilinos.Singleton.GetInquilinos(); return Ok(list); } [HttpPost("api/inquilino")] public IActionResult Post([FromBody] CrearClienteDto cid, [FromHeader(Name = "Auth")] string Auth) { if (string.IsNullOrEmpty(Auth)) return BadRequest(new { message = "El String Auth Esta Vacio" }); var ret3 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 4); if (ret3 == false) return BadRequest(new { message = "Falló el permiso" }); Cliente? rep = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); if (rep == null) return Unauthorized(); var ret = verificarCrearUsuario(cid); if (ret != "") return BadRequest(new { message = ret }); var cli = new Cliente { Dni = cid.dni, Nombre = cid.nombre, Domicilio = cid.domicilio, Apellido = cid.apellido, Celular = cid.celular, Email = cid.email, Contraseña = Encoding.UTF8.GetBytes(HacerHash(cid.contraseña)), Habilitado = 1, EmailRecuperacion = cid.email, }; bool ret2 = RepositorioUsuarios.Singleton.AltaInquilino(cli, rep.Dni); return (ret2) ? Ok(new { message = "Se dio de alta la cuenta" }) : BadRequest(new { message = "Fallo Dar de Alta El inquilino" }); } 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("-", ""); } }