Files
AlquilaFacil/Aspnet/Controllers/PropiedadesController.cs

105 lines
4.3 KiB
C#

using Entidades;
using Entidades.Dto;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Modelo;
namespace AlquilaFacil.Controllers;
[ApiController]
public class PropiedadesController: ControllerBase {
[HttpGet("api/propiedades")]
public IActionResult ListarPropietarios([FromHeader(Name = "Auth")] string Auth) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
if (validacion1 == false) return Unauthorized();
var ret = RepositorioPropiedades.Singleton.ListarPropiedades();
return Ok(ret);
}
[HttpGet("api/propiedad")]
public IActionResult ObtenerPropiedadPorId(int Id, [FromHeader(Name = "Auth")] string Auth) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
if (validacion1 == false) return Unauthorized();
if (Id < 0) return BadRequest("la id de propiedad no puede ser negativa");
var ret = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(Id);
if (ret == null) return BadRequest("No existe la propiedad");
return Ok(ret);
}
[HttpGet("api/propiedades/Propietario")]
public IActionResult ObtenerPropiedadesPorPropietario(
[FromBody] string email,
[FromHeader(Name = "Auth")] string Auth) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
if (validacion1 == false) return Unauthorized();
email = email.Trim();
if (String.IsNullOrEmpty(email)) return BadRequest("falta campo email");
var ret = RepositorioPropiedades.Singleton.ObtenerPropiedadesPorEmail(email);
return Ok(ret);
}
[HttpPost("api/propiedad")]
public IActionResult AltaPropiedad([FromBody] AltaPropiedadDto propiedad, [FromHeader(Name = "Auth")] string Auth) {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
if (validacion1 == false) return Unauthorized();
string validacion2 = ValidarPropiedad(propiedad);
if (validacion2 != "") return BadRequest(new { message = validacion2 });
Cliente? cli = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(propiedad.Email);
if (cli == null) return BadRequest("El email no corresponde a un propietario");
Propiedade Prop = new Propiedade{
Canthabitaciones = propiedad.Canthabitaciones,
Dnipropietario = cli.Dni,
Idtipropiedad = propiedad.Idtipropiedad,
Ubicacion = propiedad.Ubicacion,
Letra = propiedad.Letra != null ? propiedad.Letra : null,
Piso = propiedad.Piso != null ? propiedad.Piso : null,
};
var ret = RepositorioPropiedades.Singleton.AñadirPropiedad(Prop);
return (ret)?
Ok("Fue Cargado Correctamente") :
BadRequest("Fallo al momento de añadir la propiedad a la base de datos");
}
[HttpDelete("api/propiedad")]
public IActionResult BajaPropiedad(int id, [FromHeader(Name = "Auth")] string Auth){
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, "/accion/2");
if (validacion1 == false) return Unauthorized();
if (id <= 0) return BadRequest("No es una id valida");
var ret = RepositorioPropiedades.Singleton.BajaPropiedad(id);
return ret ?
Ok(new {message = $"la propiedad con id {id} fue dada de baja"}):
BadRequest("Fallo al dar de baja la propiedad");
}
private string ValidarPropiedad(AltaPropiedadDto prop) {
if (prop == null) return "Esta mal formado el body de la request";
string ret = "";
if (String.IsNullOrEmpty(prop.Email)) ret += "Falta Definir un email de propietario\n";
if (prop.Canthabitaciones < 0) ret += "No se puede tener una cantidad de habitaciones negativa\n";
if (prop.Idtipropiedad <= 0) ret += "No tiene un tipo de propiedad asociada";
if (String.IsNullOrEmpty(prop.Ubicacion)) ret += "Tiene que definir la ubicacion de la propiedad\n";
return ret;
}
}