150 lines
6.7 KiB
C#
150 lines
6.7 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, Request.Path);
|
|
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");
|
|
}
|
|
|
|
[HttpPut("api/propiedades/addServicio")]
|
|
public IActionResult AñadirServicio([FromBody] ServicioAPropiedadDto Servicios, [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 (Servicios.propiedadid <= 0) return BadRequest("No puede tener una id negativa o cero");
|
|
if (Servicios.idServicios.Count() < 1) return BadRequest("Falta añadir servicios");
|
|
if (Servicios.idServicios.Any(x => x<= 0)) return BadRequest("No tienen haber ids negativas o cero de servicio");
|
|
|
|
var serv = RepositorioServicios.Singleton.ObtenerServiciosPorPropiedad(Servicios.propiedadid);
|
|
|
|
bool validacion2 = Servicios.idServicios.Any(x => serv.Contains(x));
|
|
|
|
if (validacion2 == true) return BadRequest("Hay elementos repetidos");
|
|
|
|
bool ret = RepositorioPropiedades.
|
|
Singleton.AñadirServicioAPropiedad(Servicios.propiedadid, Servicios.idServicios);
|
|
|
|
return ret ?
|
|
Ok("Los Servicios Se Cargaron correctamente a la propiedad") : BadRequest("No se pudo Cargar los Servicios a la propiedad");
|
|
|
|
}
|
|
|
|
[HttpPut("api/propiedades/RmServicio")]
|
|
public IActionResult EliminarServicio([FromBody] ServicioAPropiedadDto servicio, [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 (servicio.propiedadid <= 0) return BadRequest("No puede tener una id negativa o cero");
|
|
if (servicio.idServicios.Count() < 1) return BadRequest("Falta añadir servicios");
|
|
if (servicio.idServicios.Any(x => x<= 0)) return BadRequest("No tienen haber ids negativas o cero de servicio");
|
|
|
|
var serv = RepositorioServicios.Singleton.ObtenerServiciosPorPropiedad(servicio.propiedadid);
|
|
|
|
var repetidos = serv.Intersect(servicio.idServicios);
|
|
|
|
bool ret = RepositorioPropiedades.Singleton.BajaServiciosAPropiedad(servicio.propiedadid, servicio.idServicios);
|
|
|
|
return ret ?
|
|
Ok("Se Eliminaron los servicios seleccionados de la propiedad") : BadRequest("Fallo al eliminarse los servicios de 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;
|
|
|
|
}
|
|
} |