diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index 05daf81..bfc470c 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -73,6 +73,35 @@ public class PropiedadesController: ControllerBase { BadRequest(new { message = "Fallo al momento de añadir la propiedad a la base de datos"}); } + [HttpPatch("api/propiedad")] + public IActionResult PatchPropiedad([FromBody] PatchPropiedadDto propiedad, [FromHeader(Name = "Auth")] string Auth) { + + if (String.IsNullOrEmpty(Auth)) return Unauthorized(); + var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); + 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(new { message = "El email no corresponde a un propietario"}); + + Propiedade Prop = new Propiedade{ + Id = propiedad.id, + Canthabitaciones = propiedad.Canthabitaciones, + Dnipropietario = cli.Dni, + Idtipropiedad = propiedad.tipo, + Ubicacion = propiedad.Ubicacion, + Letra = propiedad.Letra ?? null, + Piso = propiedad.Piso ?? null, + }; + + bool ret = RepositorioPropiedades.Singleton.PatchPropiedad(Prop); + return (ret)? + Ok(new {message = "Fue modificado Correctamente"}): + BadRequest(new {message = "Fallo al modificar la base de datos"}); + } + [HttpDelete("api/propiedad")] public IActionResult BajaPropiedad(int id, [FromHeader(Name = "Auth")] string Auth, [FromHeader(Name = "Email")] string email){ if (String.IsNullOrEmpty(Auth)) return Unauthorized(); @@ -140,8 +169,29 @@ public class PropiedadesController: ControllerBase { 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; + + } + private string ValidarPropiedad(PatchPropiedadDto prop) { + if (prop == null) return "Esta mal formado el body de la request"; + + string ret = ""; + if (prop.id <1) ret += "No Cargo el dato de id"; + if (String.IsNullOrEmpty(prop.Email)) ret += "Falta Definir un email de propietario\n"; + + if (prop.id <1 ) ret += "No puede haber una id menor a 1"; + + if (prop.Canthabitaciones < 0) ret += "No se puede tener una cantidad de habitaciones negativa\n"; + + if (prop.tipo <= 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; diff --git a/Entidades/Dto/PatchPropiedadDto.cs b/Entidades/Dto/PatchPropiedadDto.cs new file mode 100644 index 0000000..3426407 --- /dev/null +++ b/Entidades/Dto/PatchPropiedadDto.cs @@ -0,0 +1,3 @@ +namespace Entidades.Dto; + +public record PatchPropiedadDto(int id, string Ubicacion, int Canthabitaciones, int? Piso, string? Letra, string Email, int tipo); diff --git a/Front/src/Componentes/RowPropiedad.svelte b/Front/src/Componentes/RowPropiedad.svelte index e054ef4..9894728 100644 --- a/Front/src/Componentes/RowPropiedad.svelte +++ b/Front/src/Componentes/RowPropiedad.svelte @@ -1,8 +1,9 @@ +{#if showAlert} + +{/if}
@@ -28,7 +81,7 @@ type="number" id="canthabitaciones" class="form-control" - bind:value={propi.canthabitaciones} + bind:value={canthabitaciones} min="1" placeholder="Cantidad de Habitaciones" required @@ -40,7 +93,7 @@ type="number" id="piso" class="form-control" - bind:value={propi.piso} + bind:value={piso} min="0" placeholder="Piso" /> @@ -51,7 +104,7 @@ type="text" id="letra" class="form-control" - bind:value={propi.letra} + bind:value={letra} maxlength="1" placeholder="Letra" /> @@ -59,9 +112,9 @@
- +
diff --git a/Front/src/paginas/MisPropiedades.svelte b/Front/src/paginas/MisPropiedades.svelte index e47d944..4bccc8e 100644 --- a/Front/src/paginas/MisPropiedades.svelte +++ b/Front/src/paginas/MisPropiedades.svelte @@ -1,39 +1,39 @@ @@ -52,7 +52,7 @@ onMount(async ()=> { {#each $propiedades as propiedad} - + {/each} diff --git a/Front/src/stores/urlStore.js b/Front/src/stores/urlStore.js new file mode 100644 index 0000000..4ef3ca2 --- /dev/null +++ b/Front/src/stores/urlStore.js @@ -0,0 +1,3 @@ +import { readable } from 'svelte/store'; + +export const urlG = readable('http://localhost:5007'); diff --git a/Modelo/RepositorioBase.cs b/Modelo/RepositorioBase.cs index 1eb07d1..11eeabc 100644 --- a/Modelo/RepositorioBase.cs +++ b/Modelo/RepositorioBase.cs @@ -1,6 +1,4 @@ -using System.Collections.ObjectModel; -using Entidades; -using Microsoft.EntityFrameworkCore; +using Entidades; namespace Modelo; diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index 5d6d374..cd4c24b 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -66,6 +66,21 @@ public bool AñadirPropiedad(Propiedade? prop) { return (int)filasInsertadasParam.Value == 1? true: false; } + public bool PatchPropiedad(Propiedade prop) { + var con = Context; + Propiedade? propi = con.Propiedades.FirstOrDefault(x=>x.Id == prop.Id); + + if (propi == null) return false; + + propi.Canthabitaciones = prop.Canthabitaciones; + propi.Idtipropiedad = prop.Idtipropiedad; + propi.Ubicacion = prop.Ubicacion; + propi.Piso = prop.Piso; + propi.Letra = prop.Letra; + + return Guardar(con); + } + public IQueryable ObtenerPropiedadesPorEmail(string email) { FormattableString sqlq = $""" SELECT p.id, p.ubicacion as Ubicacion, p.canthabitaciones, p.piso, p.letra, tp.descripcion as Tipo From Propiedades p @@ -98,7 +113,6 @@ public bool AñadirPropiedad(Propiedade? prop) { var con = Context; Propiedade? prop = con.Propiedades.FirstOrDefault(x=>x.Id == id); if (prop == null) return false; - Console.WriteLine("prop.dni: "+prop.Dnipropietario+", cli.dni: "+cli.Dni); if (prop.Dnipropietario != cli.Dni) return false; prop.Idestado = 3; diff --git a/makefile b/makefile index fda237e..6833aa4 100644 --- a/makefile +++ b/makefile @@ -1,2 +1,2 @@ run: - dotnet run --project Aspnet/AlquilaFacil.csproj + dotnet watch run --project Aspnet/AlquilaFacil.csproj