Propiedades_abm #11

Merged
fede merged 5 commits from Propiedades_abm into acciones_admin 2024-11-18 16:09:24 -03:00
7 changed files with 109 additions and 1 deletions
Showing only changes of commit ef93c52a5a - Show all commits

View File

@@ -78,7 +78,7 @@ public class PropiedadesController: ControllerBase {
[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");
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, Request.Path);
if (validacion1 == false) return Unauthorized();
if (id <= 0) return BadRequest("No es una id valida");
@@ -90,6 +90,51 @@ public class PropiedadesController: ControllerBase {
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";

View File

@@ -0,0 +1,12 @@
using Entidades;
using Entidades.Dto;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Modelo;
namespace AlquilaFacil.Controllers;
[ApiController]
public class ServiciosController: ControllerBase {
}

View File

@@ -0,0 +1,2 @@
namespace Entidades.Dto;
public record ServicioAPropiedadDto(int propiedadid, List<int> idServicios);

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace Entidades;
@@ -9,5 +10,6 @@ public partial class Servicio
public string Descripcion { get; set; } = null!;
[JsonIgnore]
public virtual ICollection<Propiedade> IdPropiedads { get; set; } = new List<Propiedade>();
}

View File

@@ -59,6 +59,21 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades>
return ret;
}
public bool AñadirServicioAPropiedad(int idprop, List<int> idserv){
var con = Context;
Propiedade? prop = con.Propiedades.Find(idprop);
if (prop == null) return false;
foreach (int id in idserv) {
Servicio? servicio = con.Servicios.Find(id);
if (servicio == null) return false;
prop.IdServicios.Add(servicio);
}
return Guardar(con);
}
public bool BajaPropiedad(int id) {
var con = Context;
Propiedade prop = con.Propiedades.Find(id);
@@ -67,4 +82,23 @@ public class RepositorioPropiedades: RepositorioBase<RepositorioPropiedades>
return Guardar(con);
}
public bool BajaServiciosAPropiedad(int idprop, List<int> idserv)
{
var con = Context;
Propiedade? prop = con.Propiedades.Include(x=>x.IdServicios).FirstOrDefault(x => x.Id == idprop);
if (prop == null) return false;
foreach (int id in idserv) {
Servicio? servicio = con.Servicios.Find(id);
if (servicio == null) return false;
if (prop.IdServicios.Contains(servicio)){
prop.IdServicios.Remove(servicio);
}
}
return Guardar(con);
}
}

View File

@@ -17,6 +17,7 @@ public class RepositorioPropietario: RepositorioBase<RepositorioPropietario> {
""";
Cliente? cli = Context.Database.SqlQuery<Cliente?>(sqlq).First();
if (cli == null|| cli.Dni == 0) return null;
if (cli.Dni == 0 || cli == null) return null;
return cli;
@@ -32,6 +33,7 @@ public class RepositorioPropietario: RepositorioBase<RepositorioPropietario> {
""";
Cliente? cli = Context.Database.SqlQuery<Cliente?>(sqlq).First();
if (cli == null|| cli.Dni == 0) return null;
if (cli.Dni == 0 || cli == null) return null;
return cli;
}

View File

@@ -0,0 +1,11 @@
using Modelo;
using Entidades;
public class RepositorioServicios: RepositorioBase<RepositorioServicios> {
public IQueryable<int> ObtenerServiciosPorPropiedad(int idpropiedad){
var con = Context;
return con.Propiedades
.Where(x => x.Id == idpropiedad)
.SelectMany(x => x.IdServicios)
.Select(x=>x.Id);
}
}