diff --git a/Aspnet/AlquilaFacil.csproj b/Aspnet/AlquilaFacil.csproj index 842f7c7..a513915 100644 --- a/Aspnet/AlquilaFacil.csproj +++ b/Aspnet/AlquilaFacil.csproj @@ -9,6 +9,7 @@ + diff --git a/Aspnet/Aspnet.sln b/Aspnet/Aspnet.sln new file mode 100644 index 0000000..baec485 --- /dev/null +++ b/Aspnet/Aspnet.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AlquilaFacil", "AlquilaFacil.csproj", "{76BA8B31-BAD3-49CD-B8B8-BE22D8AEA281}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {76BA8B31-BAD3-49CD-B8B8-BE22D8AEA281}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {76BA8B31-BAD3-49CD-B8B8-BE22D8AEA281}.Debug|Any CPU.Build.0 = Debug|Any CPU + {76BA8B31-BAD3-49CD-B8B8-BE22D8AEA281}.Release|Any CPU.ActiveCfg = Release|Any CPU + {76BA8B31-BAD3-49CD-B8B8-BE22D8AEA281}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CF93AFAC-32EF-4993-84A2-CA2EB32F58FF} + EndGlobalSection +EndGlobal diff --git a/Aspnet/Controllers/PropiedadesController.cs b/Aspnet/Controllers/PropiedadesController.cs index b81634e..2c35437 100644 --- a/Aspnet/Controllers/PropiedadesController.cs +++ b/Aspnet/Controllers/PropiedadesController.cs @@ -1,8 +1,16 @@ 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(); + } } \ No newline at end of file diff --git a/Aspnet/Controllers/PropietarioController.cs b/Aspnet/Controllers/PropietarioController.cs index 6b0d395..84a54d4 100644 --- a/Aspnet/Controllers/PropietarioController.cs +++ b/Aspnet/Controllers/PropietarioController.cs @@ -10,11 +10,6 @@ namespace AlquilaFacil.Controllers; [ApiController] public class PropietarioController: ControllerBase { - [HttpGet("api/propietario")] - public IActionResult ListarPropietarios([FromHeader(Name = "Auth")] string Auth) { - return Ok(); - } - [HttpPost("api/propietarios")] public IActionResult AltaPropietario([FromBody]CrearClienteDto Propietario,[FromHeader(Name = "Auth")] string Auth) { if (String.IsNullOrEmpty(Auth)) return Unauthorized(); @@ -38,6 +33,30 @@ public class PropietarioController: ControllerBase { return ret ? Ok(new {message = "Se añadio el propietario exitosamente"}) : BadRequest(); } + + [HttpPatch("api/propietarios")] + public IActionResult PatchPropietario([FromBody]CrearClienteDto Propietario, [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 = verificarCrearUsuario(Propietario); + if (validacion2 != "") return BadRequest(validacion2); + + var cli = new Cliente { + Dni = Propietario.dni, + Nombre = Propietario.nombre, + Domicilio = Propietario.domicilio, + Apellido = Propietario.apellido, + Celular = Propietario.celular, + Email = Propietario.email, + Contraseña = Encoding.UTF8.GetBytes(HacerHash(Propietario.contraseña)) + }; + var ret = RepositorioUsuarios.Singleton.ActualizarPropietario(cli); + return ret ? + Ok(new {message = "Se Modifico el propietario exitosamente"}) : BadRequest(); + } + private string verificarCrearUsuario(CrearClienteDto cid) { string msg = ""; diff --git a/Entidades/Dto/PropiedadDto.cs b/Entidades/Dto/PropiedadDto.cs new file mode 100644 index 0000000..fef97c8 --- /dev/null +++ b/Entidades/Dto/PropiedadDto.cs @@ -0,0 +1,9 @@ +namespace Entidades.Dto; +public class PropiedadDto { + public string Ubicacion { get; set; } = null!; + public int Canthabitaciones { get; set; } + public int? Piso { get; set; } + public string? Letra { get; set; } + public string Email { get; set; } + public int Idtipropiedad { get; set; } +} \ No newline at end of file diff --git a/Modelo/RepositorioBase.cs b/Modelo/RepositorioBase.cs index 2315c13..6454fa3 100644 --- a/Modelo/RepositorioBase.cs +++ b/Modelo/RepositorioBase.cs @@ -7,11 +7,11 @@ namespace Modelo; public abstract class RepositorioBase where S : new() { - protected AlquilaFacilContext Context { get{ return new AlquilaFacilContext();}} + protected AlquilaFacilContext Context { get { return new AlquilaFacilContext(); }} private static readonly S instance = new(); - public static S Singleton { get{return instance;}} + public static S Singleton { get { return instance; }} - public bool Guardar(AlquilaFacilContext context){ + public bool Guardar(AlquilaFacilContext context) { bool ret = false; try { diff --git a/Modelo/RepositorioInquilinos.cs b/Modelo/RepositorioInquilinos.cs index 809b15e..48de959 100644 --- a/Modelo/RepositorioInquilinos.cs +++ b/Modelo/RepositorioInquilinos.cs @@ -8,7 +8,9 @@ public class RepositorioInquilinos: RepositorioBase { { FormattableString sqlq = $""" - SELECT I.Dni, I.Nombre, I.Apellido FROM Inquilinos + SELECT I.Dni, I.Nombre, I.Apellido FROM Clientes I + JOIN cliente_Grupos cg on cg.idcliente = I.Dni + WHERE cg.idgrupo = 2; """; return Context.Database.SqlQuery(sqlq); } diff --git a/Modelo/RepositorioPropiedades.cs b/Modelo/RepositorioPropiedades.cs index b911e46..3375117 100644 --- a/Modelo/RepositorioPropiedades.cs +++ b/Modelo/RepositorioPropiedades.cs @@ -1,9 +1,22 @@ +using Entidades; +using Microsoft.EntityFrameworkCore; using Modelo; public class RepositorioPropiedades: RepositorioBase { + public IQueryable ListarPropiedades(){ + var con = Context; + return con.Propiedades.AsQueryable(); + } - public bool AñadirPropiedad(){ - return false; + public bool AñadirPropiedad(Propiedade prop){ + var con = Context; + + int count = con.Propiedades.Count()+1; + + prop.Id = count; + prop.Idestado = 1; + con.Propiedades.Add(prop); + return Guardar(con); } } \ No newline at end of file diff --git a/Modelo/RepositorioPropietario.cs b/Modelo/RepositorioPropietario.cs new file mode 100644 index 0000000..56e8510 --- /dev/null +++ b/Modelo/RepositorioPropietario.cs @@ -0,0 +1,13 @@ +using Entidades; +using Microsoft.EntityFrameworkCore; +using Modelo; + +public class RepositorioPropietario: RepositorioBase { + public Cliente? ObtenerClientePorEmail(string email){ + var con = Context; + + Cliente? cli = con.Clientes.FirstOrDefault(c => c.Email == email); + return cli; + } + +} diff --git a/Modelo/RepositorioUsuarios.cs b/Modelo/RepositorioUsuarios.cs index b139d04..1a0a657 100644 --- a/Modelo/RepositorioUsuarios.cs +++ b/Modelo/RepositorioUsuarios.cs @@ -7,9 +7,8 @@ using System.Reflection.Metadata.Ecma335; namespace Modelo; -public class RepositorioUsuarios: RepositorioBase -{ - public bool AltaInquilino(Cliente cli){ +public class RepositorioUsuarios: RepositorioBase { + public bool AltaInquilino(Cliente cli) { var con = Context; //check por si la cuenta ya existe (puede ser propietario) @@ -34,8 +33,7 @@ public class RepositorioUsuarios: RepositorioBase } - public bool AltaPropietario(Cliente cli) - { + public bool AltaPropietario(Cliente cli) { var con = Context; //check por si la cuenta ya existe (puede ser propietario) @@ -58,6 +56,16 @@ public class RepositorioUsuarios: RepositorioBase return Guardar(con); } + public bool ActualizarPropietario(Cliente cli) { + var con = Context; + Cliente? cliOld = con.Clientes.Find(cli.Dni); + if (cliOld == null) return false; + + cliOld = cli; + + } + + public bool CheckUsuario(LoginDto logindto) { string Contraseña = HacerHash(logindto.Contraseña); @@ -71,12 +79,12 @@ public class RepositorioUsuarios: RepositorioBase return false; } - private string HacerHash(string pass){ + private string HacerHash(string pass) { var buf = SHA256.HashData(Encoding.UTF8.GetBytes(pass)); return BitConverter.ToString(buf).Replace("-",""); } - public bool CheckToken(string email, string token){ + public bool CheckToken(string email, string token) { var usu = Context.Clientes.FirstOrDefault(x => x.Email == email); if (usu == null) return false; @@ -87,8 +95,7 @@ public class RepositorioUsuarios: RepositorioBase return usu.Token == token; } - public void GuardarToken(LoginDto login, string tokenString) - { + public void GuardarToken(LoginDto login, string tokenString) { var con = Context; var usu = con.Clientes.FirstOrDefault(x => x.Email == login.Email); if (usu == null) return;