This commit is contained in:
2025-05-22 16:58:26 -03:00
parent 76f5c3a9e9
commit 3a477e8dc5
+274 -200
View File
@@ -15,30 +15,34 @@ using Modelo;
namespace AlquilaFacil.Controllers; namespace AlquilaFacil.Controllers;
[ApiController] [ApiController]
public class ContratoController: ControllerBase { public class ContratoController : ControllerBase
{
[HttpPost("api/contrato/GenerarRecibo")] [HttpPost("api/contrato/GenerarRecibo")]
public ActionResult GenerarRecibo([FromHeader(Name="Auth")]string Auth, MarcarPagoDto dto, bool html= true) { public ActionResult GenerarRecibo([FromHeader(Name = "Auth")] string Auth, MarcarPagoDto dto, bool html = true)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false){ if (validacion1 == false)
{
validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) { if (validacion1 == false)
{
return Unauthorized(); return Unauthorized();
} }
} }
if (dto.Idcontrato <= 0) return BadRequest(new { message = "No puede tener un contrato con id 0 o menor"}); if (dto.Idcontrato <= 0) return BadRequest(new { message = "No puede tener un contrato con id 0 o menor" });
Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato); Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato);
if (cont == null) return BadRequest(new { message = "No hay un contrato por ese id"}); if (cont == null) return BadRequest(new { message = "No hay un contrato por ese id" });
if (cont.DniinquilinoNavigation == null || cont.DnipropietarioNavigation == null || cont.IdpropiedadNavigation == null || if (cont.DniinquilinoNavigation == null || cont.DnipropietarioNavigation == null || cont.IdpropiedadNavigation == null ||
cont.IdpropiedadNavigation.IdtipropiedadNavigation == null) return BadRequest(new { message = "comunicate con el admin esta mal cargado el contratod de alguina forma"}); cont.IdpropiedadNavigation.IdtipropiedadNavigation == null) return BadRequest(new { message = "comunicate con el admin esta mal cargado el contratod de alguina forma" });
Canon? can = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato); Canon? can = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato);
if (can == null) return BadRequest(new { message = "no hay un canon para ese contrato con esa fecha"}); if (can == null) return BadRequest(new { message = "no hay un canon para ese contrato con esa fecha" });
if (can.IdreciboNavigation == null) return BadRequest(new { message = "No hay un recibo para ese canon"}); if (can.IdreciboNavigation == null) return BadRequest(new { message = "No hay un recibo para ese canon" });
var cdb = new ContratoDtoBuilder() var cdb = new ContratoDtoBuilder()
.SetInquilino($"{cont.DniinquilinoNavigation.Nombre} {cont.DniinquilinoNavigation.Apellido}") .SetInquilino($"{cont.DniinquilinoNavigation.Nombre} {cont.DniinquilinoNavigation.Apellido}")
@@ -52,122 +56,134 @@ public class ContratoController: ControllerBase {
var dof = new DocumentoFacade(); var dof = new DocumentoFacade();
MemoryStream? memstr = new(); MemoryStream? memstr = new();
if (html){ if (html)
{
dof.GenerarHtml(cdb, can.IdreciboNavigation, memstr); dof.GenerarHtml(cdb, can.IdreciboNavigation, memstr);
return File(memstr, "text/html", "Recibo.html"); return File(memstr, "text/html", "Recibo.html");
} else { }
dof.GenerarPdf (cdb, can.IdreciboNavigation, memstr); else
{
dof.GenerarPdf(cdb, can.IdreciboNavigation, memstr);
return File(memstr, "application/pdf", "Recibo.pdf"); return File(memstr, "application/pdf", "Recibo.pdf");
} }
} }
[HttpPost("api/contratos/marcarPago")] [HttpPost("api/contratos/marcarPago")]
public IActionResult marcarPago([FromHeader(Name="Auth")]string Auth, MarcarPagoDto dto) { public IActionResult marcarPago([FromHeader(Name = "Auth")] string Auth, MarcarPagoDto dto)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false)return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (dto.Idcontrato<=0) return BadRequest(new { message = "No puede existir un contrato con id 0 o menor"}); if (dto.Idcontrato <= 0) return BadRequest(new { message = "No puede existir un contrato con id 0 o menor" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null)return Unauthorized(); if (cli == null) return Unauthorized();
Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato); Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato);
if (cont == null) return BadRequest(new { message = "No hay un contrato por esa id"}); if (cont == null) return BadRequest(new { message = "No hay un contrato por esa id" });
if (cli.Dni != cont.Dnipropietario) return BadRequest(new {message = "No sos propietario o intenta volviendote a logear"}); if (cli.Dni != cont.Dnipropietario) return BadRequest(new { message = "No sos propietario o intenta volviendote a logear" });
Canon? c = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato); Canon? c = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato);
if (c == null) return BadRequest(new { message = "no hay un canon por esa id"}); if (c == null) return BadRequest(new { message = "no hay un canon por esa id" });
Recibo re = new Recibo{ Recibo re = new Recibo
{
Monto = c.Monto, Monto = c.Monto,
Fecha = DateTime.Now, Fecha = DateTime.Now,
}; };
bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni); bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni);
return ret ? return ret ?
Ok(new { message = "Se guardo correctamente"}):BadRequest(new { message = "No se pudo guardar"}); Ok(new { message = "Se guardo correctamente" }) : BadRequest(new { message = "No se pudo guardar" });
} }
[HttpPost("api/contratos/realizarPago")] [HttpPost("api/contratos/realizarPago")]
public IActionResult realizarPago([FromHeader(Name="Auth")]string Auth, MarcarPagoDto dto) { public IActionResult realizarPago([FromHeader(Name = "Auth")] string Auth, MarcarPagoDto dto)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (dto.Idcontrato<=0) return BadRequest(new { message = "No puede existir un contrato con id 0 o menor"}); if (dto.Idcontrato <= 0) return BadRequest(new { message = "No puede existir un contrato con id 0 o menor" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null)return Unauthorized(); if (cli == null) return Unauthorized();
Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato); Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.Idcontrato);
if (cont == null) return BadRequest(new { message = "No hay un contrato por esa id"}); if (cont == null) return BadRequest(new { message = "No hay un contrato por esa id" });
if (cli.Dni != cont.Dniinquilino) return BadRequest(new {message = "No sos inquilino o intenta volviendote a logear"}); if (cli.Dni != cont.Dniinquilino) return BadRequest(new { message = "No sos inquilino o intenta volviendote a logear" });
Canon? c = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato); Canon? c = RepositorioCanons.Singleton.ObtenerCanonContrato(dto.fecha, dto.Idcontrato);
if (c == null) return BadRequest(new { message = "no hay un canon por esa id"}); if (c == null) return BadRequest(new { message = "no hay un canon por esa id" });
Recibo re = new Recibo{ Recibo re = new Recibo
{
Monto = c.Monto, Monto = c.Monto,
Fecha = DateTime.Now, Fecha = DateTime.Now,
}; };
bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni); bool ret = RepositorioCanons.Singleton.SetRecibo(c, re, cli.Dni);
return ret ? return ret ?
Ok(new { message = "Se guardo correctamente"}):BadRequest(new { message = "No se pudo guardar"}); Ok(new { message = "Se guardo correctamente" }) : BadRequest(new { message = "No se pudo guardar" });
} }
[HttpPost("api/contratos/crearcanons")] [HttpPost("api/contratos/crearcanons")]
public IActionResult crearCanons([FromHeader(Name="Auth")]string Auth, CrearCanonsDto dto){ public IActionResult crearCanons([FromHeader(Name = "Auth")] string Auth, CrearCanonsDto dto)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false)return Unauthorized(); if (validacion1 == false) return Unauthorized();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return Unauthorized(); if (cli == null) return Unauthorized();
if (dto.idcontrato <=0) return BadRequest(new { message ="estan mal cargados los datos"}); if (dto.idcontrato <= 0) return BadRequest(new { message = "estan mal cargados los datos" });
Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.idcontrato); Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(dto.idcontrato);
if (cont == null) return BadRequest(new { message = "no hay un contrato por esa id"}); if (cont == null) return BadRequest(new { message = "no hay un contrato por esa id" });
if (cli.Dni != cont.Dnipropietario) return BadRequest(new {message = "No sos el propietario o intenta volviendote a logear"}); if (cli.Dni != cont.Dnipropietario) return BadRequest(new { message = "No sos el propietario o intenta volviendote a logear" });
var ret = RepositorioCanons.Singleton.CrearCanons(dto.aumento, dto.idcontrato, cli.Dni); var ret = RepositorioCanons.Singleton.CrearCanons(dto.aumento, dto.idcontrato, cli.Dni);
return ret ? return ret ?
Ok(new { message = "Se crearon los canons correctamente"}):BadRequest(new { message = "No se pudo guardar"}); Ok(new { message = "Se crearon los canons correctamente" }) : BadRequest(new { message = "No se pudo guardar" });
} }
[HttpGet("api/contratos/canon")] [HttpGet("api/contratos/canon")]
public ActionResult getCanons([FromHeader(Name="Auth")]string Auth, int id = 0) { public ActionResult getCanons([FromHeader(Name = "Auth")] string Auth, int id = 0)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false){ if (validacion1 == false)
{
validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) { if (validacion1 == false)
{
return Unauthorized(); return Unauthorized();
} }
} }
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if(cli == null) return Unauthorized(); if (cli == null) return Unauthorized();
var cont = RepositorioContratos.Singleton.ObtenerContratoPorId(id); var cont = RepositorioContratos.Singleton.ObtenerContratoPorId(id);
if (cont == null) return BadRequest(new { message = "No existe el contrato"}); if (cont == null) return BadRequest(new { message = "No existe el contrato" });
if ( cont.Dnipropietario != cli.Dni && cont.Dniinquilino != cli.Dni) return Unauthorized(); if (cont.Dnipropietario != cli.Dni && cont.Dniinquilino != cli.Dni) return Unauthorized();
var list = RepositorioCanons.Singleton.ObtenerCanonsPorContrato(id); var list = RepositorioCanons.Singleton.ObtenerCanonsPorContrato(id);
if (list == null) return BadRequest(new { message = "No hay contrato por esa id"}); if (list == null) return BadRequest(new { message = "No hay contrato por esa id" });
string divisa =""; string divisa = "";
if (cont.Iddivisa == 0) divisa = "AR$"; else if (cont.Iddivisa == 1) divisa = "US$"; if (cont.Iddivisa == 0) divisa = "AR$"; else if (cont.Iddivisa == 1) divisa = "US$";
List<CanonDto> d = new(); List<CanonDto> d = new();
foreach (var i in list) { foreach (var i in list)
{
var c = new CanonDtoBuilder() var c = new CanonDtoBuilder()
.SetId(i.Id) .SetId(i.Id)
.SetPago(i.Idrecibo==null?false:true) .SetPago(i.Idrecibo == null ? false : true)
.SetDivisa(divisa==""?"Ugh esta mal cargado la divisa en el contrato":divisa) .SetDivisa(divisa == "" ? "Ugh esta mal cargado la divisa en el contrato" : divisa)
.SetMes(i.Fecha) .SetMes(i.Fecha)
.SetMesNum(int.Parse((i.Fecha.Month - cont.Fechainicio.Month).ToString()) + 1) .SetMesNum(int.Parse((i.Fecha.Month - cont.Fechainicio.Month).ToString()) + 1)
.SetMonto(i.Monto) .SetMonto(i.Monto)
@@ -179,18 +195,20 @@ public class ContratoController: ControllerBase {
} }
[HttpGet("api/contratos/propietario")] [HttpGet("api/contratos/propietario")]
public IActionResult ObtenerContratosPorPropietario([FromHeader(Name="Auth")]string Auth) { public IActionResult ObtenerContratosPorPropietario([FromHeader(Name = "Auth")] string Auth)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli==null) return Unauthorized(); if (cli == null) return Unauthorized();
var list = RepositorioContratos.Singleton.ObtenerContratosDePropietario(cli.Dni); var list = RepositorioContratos.Singleton.ObtenerContratosDePropietario(cli.Dni);
List<ContratoDto> dtos = new(); List<ContratoDto> dtos = new();
foreach (var i in list) { foreach (var i in list)
{
if (i.DniinquilinoNavigation == null || i.IdpropiedadNavigation == null if (i.DniinquilinoNavigation == null || i.IdpropiedadNavigation == null
|| i.DnipropietarioNavigation == null) continue; || i.DnipropietarioNavigation == null) continue;
@@ -209,19 +227,20 @@ public class ContratoController: ControllerBase {
} }
[HttpGet("api/contrato/propietario")] [HttpGet("api/contrato/propietario")]
public IActionResult ObtenerContratoPorPropietarioPorId([FromHeader(Name="Auth")]string Auth, int id=0) { public IActionResult ObtenerContratoPorPropietarioPorId([FromHeader(Name = "Auth")] string Auth, int id = 0)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli==null) return Unauthorized(); if (cli == null) return Unauthorized();
if (id <= 0) return BadRequest(new { message = "No hay propiedades con id igual o menor a 0"}); if (id <= 0) return BadRequest(new { message = "No hay propiedades con id igual o menor a 0" });
var i = RepositorioContratos.Singleton.ObtenerContratoPorId(id); var i = RepositorioContratos.Singleton.ObtenerContratoPorId(id);
if (i == null || i.DniinquilinoNavigation == null || if (i == null || i.DniinquilinoNavigation == null ||
i.IdpropiedadNavigation == null || i.DnipropietarioNavigation == null)return BadRequest(new { message = "Fallo la query"}); i.IdpropiedadNavigation == null || i.DnipropietarioNavigation == null) return BadRequest(new { message = "Fallo la query" });
if (cli.Dni != i.Dnipropietario) return BadRequest(new { message = "No sos el propietario"}); if (cli.Dni != i.Dnipropietario) return BadRequest(new { message = "No sos el propietario" });
var cont = new ContratoPropiedadDtoBuilder() var cont = new ContratoPropiedadDtoBuilder()
.SetInquilino($"{i.DniinquilinoNavigation.Nombre} {i.DniinquilinoNavigation.Apellido}") .SetInquilino($"{i.DniinquilinoNavigation.Nombre} {i.DniinquilinoNavigation.Apellido}")
@@ -232,8 +251,8 @@ public class ContratoController: ControllerBase {
.SetFechaInicio(i.Fechainicio) .SetFechaInicio(i.Fechainicio)
.SetEstado(i.Habilitado, i.Cancelado) .SetEstado(i.Habilitado, i.Cancelado)
.SetHabitaciones(i.IdpropiedadNavigation.Canthabitaciones) .SetHabitaciones(i.IdpropiedadNavigation.Canthabitaciones)
.SetPiso(i.IdpropiedadNavigation.Piso??0) .SetPiso(i.IdpropiedadNavigation.Piso ?? 0)
.SetLetra(i.IdpropiedadNavigation.Letra??"") .SetLetra(i.IdpropiedadNavigation.Letra ?? "")
.SetMesesAumento(i.MesesHastaAumento) .SetMesesAumento(i.MesesHastaAumento)
.SetMesesDuracion(i.MesesDurationContrato) .SetMesesDuracion(i.MesesDurationContrato)
.Build(); .Build();
@@ -242,18 +261,20 @@ public class ContratoController: ControllerBase {
} }
[HttpGet("api/contratos/inquilino")] [HttpGet("api/contratos/inquilino")]
public IActionResult ObtenerContratosPorInquilino([FromHeader(Name="Auth")]string Auth) { public IActionResult ObtenerContratosPorInquilino([FromHeader(Name = "Auth")] string Auth)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli==null) return Unauthorized(); if (cli == null) return Unauthorized();
var list = RepositorioContratos.Singleton.ObtenerContratosDeInquilino(cli.Dni); var list = RepositorioContratos.Singleton.ObtenerContratosDeInquilino(cli.Dni);
List<ContratoDto> dtos = new(); List<ContratoDto> dtos = new();
foreach (var i in list) { foreach (var i in list)
{
if (i.DniinquilinoNavigation == null || i.IdpropiedadNavigation == null if (i.DniinquilinoNavigation == null || i.IdpropiedadNavigation == null
|| i.DnipropietarioNavigation == null) continue; || i.DnipropietarioNavigation == null) continue;
@@ -272,19 +293,20 @@ public class ContratoController: ControllerBase {
} }
[HttpGet("api/contrato/inquilino")] [HttpGet("api/contrato/inquilino")]
public IActionResult ObtenerContratoPorInquilinoPorId([FromHeader(Name="Auth")]string Auth, int id=0) { public IActionResult ObtenerContratoPorInquilinoPorId([FromHeader(Name = "Auth")] string Auth, int id = 0)
{
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli==null) return Unauthorized(); if (cli == null) return Unauthorized();
if (id <= 0) return BadRequest(new { message = "No hay propiedades con id igual o menor a 0"}); if (id <= 0) return BadRequest(new { message = "No hay propiedades con id igual o menor a 0" });
var i = RepositorioContratos.Singleton.ObtenerContratoPorId(id); var i = RepositorioContratos.Singleton.ObtenerContratoPorId(id);
if (i == null || i.DniinquilinoNavigation == null || if (i == null || i.DniinquilinoNavigation == null ||
i.IdpropiedadNavigation == null || i.DnipropietarioNavigation == null)return BadRequest(new { message = "Fallo la query"}); i.IdpropiedadNavigation == null || i.DnipropietarioNavigation == null) return BadRequest(new { message = "Fallo la query" });
if (cli.Dni != i.Dniinquilino) return BadRequest(new { message = "No sos el inquilino"}); if (cli.Dni != i.Dniinquilino) return BadRequest(new { message = "No sos el inquilino" });
var cont = new ContratoPropiedadDtoBuilder() var cont = new ContratoPropiedadDtoBuilder()
.SetInquilino($"{i.DniinquilinoNavigation.Nombre} {i.DniinquilinoNavigation.Apellido}") .SetInquilino($"{i.DniinquilinoNavigation.Nombre} {i.DniinquilinoNavigation.Apellido}")
@@ -295,8 +317,8 @@ public class ContratoController: ControllerBase {
.SetFechaInicio(i.Fechainicio) .SetFechaInicio(i.Fechainicio)
.SetEstado(i.Habilitado, i.Cancelado) .SetEstado(i.Habilitado, i.Cancelado)
.SetHabitaciones(i.IdpropiedadNavigation.Canthabitaciones) .SetHabitaciones(i.IdpropiedadNavigation.Canthabitaciones)
.SetPiso(i.IdpropiedadNavigation.Piso??0) .SetPiso(i.IdpropiedadNavigation.Piso ?? 0)
.SetLetra(i.IdpropiedadNavigation.Letra??"") .SetLetra(i.IdpropiedadNavigation.Letra ?? "")
.SetMesesAumento(i.MesesHastaAumento) .SetMesesAumento(i.MesesHastaAumento)
.SetMesesDuracion(i.MesesDurationContrato) .SetMesesDuracion(i.MesesDurationContrato)
.Build(); .Build();
@@ -305,26 +327,27 @@ public class ContratoController: ControllerBase {
} }
[HttpPost("api/contratos/precontrato")] [HttpPost("api/contratos/precontrato")]
public IActionResult IniciarPrecontrato([FromHeader(Name = "Auth")]string Auth, [FromBody] PrecontratoDto dto) { public IActionResult IniciarPrecontrato([FromHeader(Name = "Auth")] string Auth, [FromBody] PrecontratoDto dto)
if (String.IsNullOrEmpty(Auth)) return Unauthorized(); {
if (String.IsNullOrEmpty(Auth)) return Unauthorized();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
string validacion2 = ValidarDtoPrecontrato(dto); string validacion2 = ValidarDtoPrecontrato(dto);
if (validacion2 != "") return BadRequest(new {message = validacion2}); if (validacion2 != "") return BadRequest(new { message = validacion2 });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new {message = "Tu token no corresponde a ningun cliente (volvete a logear)"}); if (cli == null) return BadRequest(new { message = "Tu token no corresponde a ningun cliente (volvete a logear)" });
if (cli.Email != dto.EmailPropietario) return BadRequest(new {message = "No Corresponde el email de propietario con el del token"}); if (cli.Email != dto.EmailPropietario) return BadRequest(new { message = "No Corresponde el email de propietario con el del token" });
Cliente? propi = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(dto.EmailPropietario); Cliente? propi = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(dto.EmailPropietario);
if (propi == null || propi.Dni == 0) return BadRequest(new {message = "No hay propietario por ese email"}); if (propi == null || propi.Dni == 0) return BadRequest(new { message = "No hay propietario por ese email" });
Cliente? inq = RepositorioInquilinos.Singleton.ObtenerInquilinoPorEmail(dto.EmailInquilino); Cliente? inq = RepositorioInquilinos.Singleton.ObtenerInquilinoPorEmail(dto.EmailInquilino);
if (inq == null || inq.Dni == 0) return BadRequest(new {message = "No hay inquilinos por ese email"}); if (inq == null || inq.Dni == 0) return BadRequest(new { message = "No hay inquilinos por ese email" });
Propiedade? p = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(dto.IdPropiedad); Propiedade? p = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(dto.IdPropiedad);
if (p == null || p.Id == 0) return BadRequest(new {message = "La id de propiedad no corresponde a una propiedad"}); if (p == null || p.Id == 0) return BadRequest(new { message = "La id de propiedad no corresponde a una propiedad" });
var precontrato = new PrecontratoBuilder() var precontrato = new PrecontratoBuilder()
.SetHabilitado() .SetHabilitado()
@@ -351,10 +374,14 @@ public class ContratoController: ControllerBase {
.Build(); .Build();
bool ret; bool ret;
if (dto.TieneOpcionVenta==false){ if (dto.TieneOpcionVenta == false)
{
ret = RepositorioContratos.Singleton.CargaPrecontrato(cli.Dni, precontrato, notificacion); ret = RepositorioContratos.Singleton.CargaPrecontrato(cli.Dni, precontrato, notificacion);
} else { }
Venta v = new Venta{ else
{
Venta v = new Venta
{
Idestado = 1, Idestado = 1,
Iddivisa = dto.iddivisa, Iddivisa = dto.iddivisa,
Monto = dto.MontoOpcion, Monto = dto.MontoOpcion,
@@ -362,41 +389,45 @@ public class ContratoController: ControllerBase {
ret = RepositorioContratos.Singleton.CargaPrecontratoOpcionVenta(precontrato, notificacion, v, cli.Dni); ret = RepositorioContratos.Singleton.CargaPrecontratoOpcionVenta(precontrato, notificacion, v, cli.Dni);
} }
if (ret) { if (ret)
{
ret = RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, DateTime.Parse(dto.fechaprimernotificacion)); ret = RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, DateTime.Parse(dto.fechaprimernotificacion));
} }
return (ret)? return (ret) ?
Ok(new {message = "Se Cargo el precontrato y envio una notificacion al inquilino"}): Ok(new { message = "Se Cargo el precontrato y envio una notificacion al inquilino" }) :
BadRequest(new {message = "No se pudo cargar el precontrato"}); BadRequest(new { message = "No se pudo cargar el precontrato" });
} }
[HttpPut("api/contratos/addGarantes")] [HttpPut("api/contratos/addGarantes")]
public IActionResult AddGarantes([FromHeader(Name = "Auth")]string Auth, AltaGarantesDto dto) { public IActionResult AddGarantes([FromHeader(Name = "Auth")] string Auth, AltaGarantesDto dto)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
var validacion2 = ValidarDtoAltaGarantes(dto); var validacion2 = ValidarDtoAltaGarantes(dto);
if (validacion2 != "") return BadRequest(new {message = validacion2}); if (validacion2 != "") return BadRequest(new { message = validacion2 });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new {message = "Tu token no corresponde a ningun cliente (volvete a logear)"}); if (cli == null) return BadRequest(new { message = "Tu token no corresponde a ningun cliente (volvete a logear)" });
if (cli.Email != dto.EmailInquilino) return BadRequest(new {message = "No Corresponde el email de inquilino con el del token"}); if (cli.Email != dto.EmailInquilino) return BadRequest(new { message = "No Corresponde el email de inquilino con el del token" });
var validacion4 = RepositorioContratos.Singleton.CantidadGarantesEncontrato(dto.EmailInquilino, dto.Idpropiedad); var validacion4 = RepositorioContratos.Singleton.CantidadGarantesEncontrato(dto.EmailInquilino, dto.Idpropiedad);
if (validacion4 <= 0 || dto.garantes.Count()!=validacion4) return BadRequest(new{message="Cantidad de garantes incorrecta"}); if (validacion4 <= 0 || dto.garantes.Count() != validacion4) return BadRequest(new { message = "Cantidad de garantes incorrecta" });
Cliente? propi = RepositorioPropietario.Singleton.ObtenerPropietarioPorIdPropiedad(dto.Idpropiedad); Cliente? propi = RepositorioPropietario.Singleton.ObtenerPropietarioPorIdPropiedad(dto.Idpropiedad);
if(propi == null) return BadRequest(new{message = "No se encuentra el propietario de la propiedad"}); if (propi == null) return BadRequest(new { message = "No se encuentra el propietario de la propiedad" });
foreach (var i in dto.garantes) { foreach (var i in dto.garantes)
{
string validacion3 = ValidarDtoGarante(i); string validacion3 = ValidarDtoGarante(i);
if (validacion3 != "") return BadRequest( new { message = validacion3 }); if (validacion3 != "") return BadRequest(new { message = validacion3 });
} }
List<Garante> gar = new(); List<Garante> gar = new();
foreach (var i in dto.garantes) { foreach (var i in dto.garantes)
{
Garante g = new GaranteBuilder() Garante g = new GaranteBuilder()
.SetNombre(i.Nombre) .SetNombre(i.Nombre)
.SetApellido(i.Apellido) .SetApellido(i.Apellido)
@@ -409,10 +440,11 @@ public class ContratoController: ControllerBase {
} }
var contr = RepositorioContratos.Singleton.ObtenerContrato(dto.EmailInquilino, dto.Idpropiedad); var contr = RepositorioContratos.Singleton.ObtenerContrato(dto.EmailInquilino, dto.Idpropiedad);
if (contr == null) return BadRequest(new { message = "No existe el contrato o ya fue activado"}); if (contr == null) return BadRequest(new { message = "No existe el contrato o ya fue activado" });
var ret = RepositorioContratos.Singleton.CargaGarantes(gar, dto.EmailInquilino, dto.Idpropiedad, cli.Dni); var ret = RepositorioContratos.Singleton.CargaGarantes(gar, dto.EmailInquilino, dto.Idpropiedad, cli.Dni);
if (ret) { if (ret)
{
Console.WriteLine(dto.fecha); Console.WriteLine(dto.fecha);
RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.fecha); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.fecha);
@@ -428,37 +460,40 @@ public class ContratoController: ControllerBase {
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
} }
return ret ? return ret ?
Ok(new {message = "Se Añadieron los Garantes"}):BadRequest(new { message = "Fallo la carga"}); Ok(new { message = "Se Añadieron los Garantes" }) : BadRequest(new { message = "Fallo la carga" });
} }
[HttpPut("api/contratos/cancelar")] [HttpPut("api/contratos/cancelar")]
public IActionResult CancelarPrecontrato([FromHeader(Name = "Auth")]string Auth, CancelarPrecontratoDto dto) { public IActionResult CancelarPrecontrato([FromHeader(Name = "Auth")] string Auth, CancelarPrecontratoDto dto)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
var validacion2 = ValidarCancelarDto(dto); var validacion2 = ValidarCancelarDto(dto);
if (validacion2 != "") return BadRequest(new {message = validacion2}); if (validacion2 != "") return BadRequest(new { message = validacion2 });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli==null) return Unauthorized(); if (cli == null) return Unauthorized();
Cliente? pro = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(dto.EmailPropietario); Cliente? pro = RepositorioPropietario.Singleton.ObtenerPropietarioPorEmail(dto.EmailPropietario);
if (pro == null) return BadRequest(new {message = "No Existe Usuario con ese email"}); if (pro == null) return BadRequest(new { message = "No Existe Usuario con ese email" });
if (pro.Token != Auth) return BadRequest(new {message = "El token de auth no corresponde al token el usuario propietario"}); if (pro.Token != Auth) return BadRequest(new { message = "El token de auth no corresponde al token el usuario propietario" });
Propiedade? prop = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(dto.idpropiedad); Propiedade? prop = RepositorioPropiedades.Singleton.ObtenerPropiedadPorId(dto.idpropiedad);
if (prop == null) return BadRequest(new {message = "No existe la propiedad por esa id"}); if (prop == null) return BadRequest(new { message = "No existe la propiedad por esa id" });
if (prop.Dnipropietario != pro.Dni) return BadRequest(new {message = "Este propietario no es el dueño de la propiedad"}); if (prop.Dnipropietario != pro.Dni) return BadRequest(new { message = "Este propietario no es el dueño de la propiedad" });
var inq = RepositorioInquilinos.Singleton.ObtenerInquilinoPorEmail(dto.EmailInquilino); var inq = RepositorioInquilinos.Singleton.ObtenerInquilinoPorEmail(dto.EmailInquilino);
if (inq == null) return BadRequest(new {message = "No hay un inquilino por ese email"}); if (inq == null) return BadRequest(new { message = "No hay un inquilino por ese email" });
var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.EmailInquilino, dto.idpropiedad, cli.Dni); var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.EmailInquilino, dto.idpropiedad, cli.Dni);
if (ret) { if (ret)
{
prop.Idestado = 1; prop.Idestado = 1;
ret = RepositorioPropiedades.Singleton.PatchPropiedad(prop, pro.Dni); ret = RepositorioPropiedades.Singleton.PatchPropiedad(prop, pro.Dni);
if (ret){ if (ret)
{
RepositorioNotificaciones.Singleton.MarcarComoLeido(pro.Dni, dto.fecha); RepositorioNotificaciones.Singleton.MarcarComoLeido(pro.Dni, dto.fecha);
var noti = new NotificacioneBuilder() var noti = new NotificacioneBuilder()
.SetAccion("ContratoCancelado") .SetAccion("ContratoCancelado")
@@ -470,35 +505,44 @@ public class ContratoController: ControllerBase {
.SetLeido(false) .SetLeido(false)
.Build(); .Build();
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
if (ret){ if (ret)
return Ok(new {message = "Se cancelo el precontrato"}); {
}else{ return Ok(new { message = "Se cancelo el precontrato" });
return Ok(new {message = "Se cancelo el precontrato, pero no se pudo notificar al inquilino"}); }
else
{
return Ok(new { message = "Se cancelo el precontrato, pero no se pudo notificar al inquilino" });
} }
}else{
return BadRequest(new {message = "No se pudo setear la propiedad como Disponible en busqueda"});
} }
}else{ else
return BadRequest(new {message = "Se fallo al intentar cancelar el precontrato"}); {
return BadRequest(new { message = "No se pudo setear la propiedad como Disponible en busqueda" });
}
}
else
{
return BadRequest(new { message = "Se fallo al intentar cancelar el precontrato" });
} }
} }
[HttpGet("api/contratos/precontrato/listaGarantes")] [HttpGet("api/contratos/precontrato/listaGarantes")]
public IActionResult ObtenerListaGarantes([FromHeader(Name = "Auth")]string Auth, long idcontrato = 0, [FromQuery] string EmailPropietario = "" ) { public IActionResult ObtenerListaGarantes([FromHeader(Name = "Auth")] string Auth, long idcontrato = 0, [FromQuery] string EmailPropietario = "")
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (idcontrato == 0 || EmailPropietario == "") return BadRequest(new { message = "Estan mal cargados los datos"}); if (idcontrato == 0 || EmailPropietario == "") return BadRequest(new { message = "Estan mal cargados los datos" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new {message = "No hay un propietario por ese token"}); if (cli == null) return BadRequest(new { message = "No hay un propietario por ese token" });
if (cli.Email != EmailPropietario) return BadRequest(new {message = "El Email del usuario no coinside con el del token"}); if (cli.Email != EmailPropietario) return BadRequest(new { message = "El Email del usuario no coinside con el del token" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato);
if (contr == null) return BadRequest(new {message = "No hay un precontrato por esa id"}); if (contr == null) return BadRequest(new { message = "No hay un precontrato por esa id" });
LinkedList<GaranteDto> list = new(); LinkedList<GaranteDto> list = new();
foreach (var i in contr.Idgarantes) { foreach (var i in contr.Idgarantes)
{
list.AddFirst(new GaranteDtoBuilder() list.AddFirst(new GaranteDtoBuilder()
.SetCelular(i.Celular) .SetCelular(i.Celular)
.SetDni(i.Dni) .SetDni(i.Dni)
@@ -512,10 +556,12 @@ public class ContratoController: ControllerBase {
} }
private readonly IMinioClient mc; private readonly IMinioClient mc;
public ContratoController(IMinioClient minioClient) { public ContratoController(IMinioClient minioClient)
{
mc = minioClient; mc = minioClient;
if (mc == null){ if (mc == null)
MinioConfigcus? mcon = JsonSerializer.Deserialize<MinioConfigcus>(System.IO.File.ReadAllText("./settings.json"))?? null; {
MinioConfigcus? mcon = JsonSerializer.Deserialize<MinioConfigcus>(System.IO.File.ReadAllText("./settings.json")) ?? null;
if (mcon == null) throw new Exception(); if (mcon == null) throw new Exception();
mc = new MinioClient().WithCredentials(mcon.usr, mcon.scrt) mc = new MinioClient().WithCredentials(mcon.usr, mcon.scrt)
@@ -526,22 +572,24 @@ public class ContratoController: ControllerBase {
} }
[HttpPost("api/contratos/subirContrato")] [HttpPost("api/contratos/subirContrato")]
public async Task<IActionResult> subirContrato([FromHeader(Name = "Auth")]string Auth, [FromForm]long idcontrato, [FromForm]DateTime ubicarnotificacion, IFormFile contrato) { public async Task<IActionResult> subirContrato([FromHeader(Name = "Auth")] string Auth, [FromForm] long idcontrato, [FromForm] DateTime ubicarnotificacion, IFormFile contrato)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (idcontrato<=0) return BadRequest(new {message = "No puede tener un id contrato menor o igual a 0"}); if (idcontrato <= 0) return BadRequest(new { message = "No puede tener un id contrato menor o igual a 0" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato);
if (contr == null) return BadRequest(new { message = "No hay precontrato por esa id"}); if (contr == null) return BadRequest(new { message = "No hay precontrato por esa id" });
if (contr.Dniinquilino == 0 || contr.Dnipropietario == 0 || contr.Idpropiedad == 0 || if (contr.Dniinquilino == 0 || contr.Dnipropietario == 0 || contr.Idpropiedad == 0 ||
contr.Dniinquilino == null || contr.Dnipropietario == null || contr.Idpropiedad == null) { contr.Dniinquilino == null || contr.Dnipropietario == null || contr.Idpropiedad == null)
return BadRequest(new { message = "Estan mal cargados los datos del precontrato comunicate con un administrador"}); {
return BadRequest(new { message = "Estan mal cargados los datos del precontrato comunicate con un administrador" });
} }
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null || contr.DnipropietarioNavigation == null) return BadRequest(new { message ="No se pudo checkear que el token corresponda al propietario"}); if (cli == null || contr.DnipropietarioNavigation == null) return BadRequest(new { message = "No se pudo checkear que el token corresponda al propietario" });
if (cli.Dni != contr.DnipropietarioNavigation.Dni) return BadRequest(new { message = "el token de usuario no coinside con el usuario propietario"}); if (cli.Dni != contr.DnipropietarioNavigation.Dni) return BadRequest(new { message = "el token de usuario no coinside con el usuario propietario" });
if (contrato == null) return BadRequest(new { message = "Debe subir un archivo." }); if (contrato == null) return BadRequest(new { message = "Debe subir un archivo." });
if (contrato.ContentType != "application/pdf") return BadRequest(new { message = "El archivo debe ser un documento PDF." }); if (contrato.ContentType != "application/pdf") return BadRequest(new { message = "El archivo debe ser un documento PDF." });
@@ -550,15 +598,15 @@ public class ContratoController: ControllerBase {
string nuevoNombreArchivo = $"id:{contr.Id}-inq:{contr.Dniinquilino}-propi:{contr.Dnipropietario}-idprop:{contr.Idpropiedad}.pdf"; string nuevoNombreArchivo = $"id:{contr.Id}-inq:{contr.Dniinquilino}-propi:{contr.Dnipropietario}-idprop:{contr.Idpropiedad}.pdf";
bool ret = await subirContrato(contrato, nuevoNombreArchivo); bool ret = await subirContrato(contrato, nuevoNombreArchivo);
if(ret == false) return BadRequest(new {message = "No se pudo subir el archivo"}); if (ret == false) return BadRequest(new { message = "No se pudo subir el archivo" });
ret = RepositorioContratos.Singleton.AddUrl(contr.Id, nuevoNombreArchivo, cli.Dni); ret = RepositorioContratos.Singleton.AddUrl(contr.Id, nuevoNombreArchivo, cli.Dni);
if (ret == false) return BadRequest(new { message = "No se pudo guardar la url del contrato" }); if (ret == false) return BadRequest(new { message = "No se pudo guardar la url del contrato" });
var noti = new NotificacioneBuilder() var noti = new NotificacioneBuilder()
.SetDniremitente(contr.Dnipropietario??0) .SetDniremitente(contr.Dnipropietario ?? 0)
.SetIdpropiedad(contr.Idpropiedad??0) .SetIdpropiedad(contr.Idpropiedad ?? 0)
.SetDnicliente(contr.Dniinquilino??0) .SetDnicliente(contr.Dniinquilino ?? 0)
.SetAccion("Aceptar Contrato") .SetAccion("Aceptar Contrato")
.SetMensaje($"El propietario: {contr.Dnipropietario}, hizo un documento de contrato: {contr.Id}") .SetMensaje($"El propietario: {contr.Dnipropietario}, hizo un documento de contrato: {contr.Id}")
.SetFecha(DateTime.Now) .SetFecha(DateTime.Now)
@@ -568,36 +616,40 @@ public class ContratoController: ControllerBase {
RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, ubicarnotificacion); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, ubicarnotificacion);
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
return (ret)? return (ret) ?
Ok(new { message = "se notifico al futuro inquilino"}): BadRequest(new { message = "No se pudo enviar la notificacion"}); Ok(new { message = "se notifico al futuro inquilino" }) : BadRequest(new { message = "No se pudo enviar la notificacion" });
} }
[HttpGet("api/contrato/DocumentoFinal")] [HttpGet("api/contrato/DocumentoFinal")]
public IActionResult ObtenerContratoFinal ([FromHeader(Name = "Auth")]string Auth, [FromQuery]long idcontrato) { public IActionResult ObtenerContratoFinal([FromHeader(Name = "Auth")] string Auth, [FromQuery] long idcontrato)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false){ if (validacion1 == false)
{
validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
} }
if (idcontrato <= 0) return BadRequest(new {message = "La id no puede ser igual o menor a 0"}); if (idcontrato <= 0) return BadRequest(new { message = "La id no puede ser igual o menor a 0" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerContratoPorId(idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerContratoPorId(idcontrato);
if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un contrato por esa id"}); if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un contrato por esa id" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token" });
if (cli.Dni != contr.Dniinquilino && cli.Dni != contr.Dnipropietario) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); if (cli.Dni != contr.Dniinquilino && cli.Dni != contr.Dnipropietario) return BadRequest(new { message = "El token no corresponde con el del inquilino" });
try{ try
var memstream = new MemoryStream(); {
var memstream = new MemoryStream();
var goa = new GetObjectArgs() var goa = new GetObjectArgs()
.WithBucket("alquilafacil") .WithBucket("alquilafacil")
.WithObject(contr.UrlContrato) .WithObject(contr.UrlContrato)
.WithCallbackStream(stream => { .WithCallbackStream(stream =>
memstream.Position=0; {
memstream.Position = 0;
stream.CopyTo(memstream); stream.CopyTo(memstream);
}); });
@@ -608,39 +660,45 @@ public class ContratoController: ControllerBase {
return File(memstream, "application/pdf", contr.UrlContrato); return File(memstream, "application/pdf", contr.UrlContrato);
} catch (Exception e){ }
catch (Exception e)
{
Console.Error.WriteLine(e); Console.Error.WriteLine(e);
return BadRequest(new { message = "Fallo al intentar obtener el archivo del almacenamiento o este no existe"}); return BadRequest(new { message = "Fallo al intentar obtener el archivo del almacenamiento o este no existe" });
} }
} }
[HttpGet("api/contrato/getdocumento")] [HttpGet("api/contrato/getdocumento")]
public IActionResult ObtenerContrato([FromHeader(Name = "Auth")]string Auth, [FromQuery]long idcontrato) { public IActionResult ObtenerContrato([FromHeader(Name = "Auth")] string Auth, [FromQuery] long idcontrato)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(""); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest("");
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false){ if (validacion1 == false)
{
validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario"); validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Propietario");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
} }
if (idcontrato <= 0) return BadRequest(new {message = "La id no puede ser igual o menor a 0"}); if (idcontrato <= 0) return BadRequest(new { message = "La id no puede ser igual o menor a 0" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(idcontrato);
if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id"}); if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token" });
if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino" });
string nuevoNombreArchivo = $"id:{contr.Id}-inq:{contr.Dniinquilino}-propi:{contr.Dnipropietario}-idprop:{contr.Idpropiedad}.pdf"; string nuevoNombreArchivo = $"id:{contr.Id}-inq:{contr.Dniinquilino}-propi:{contr.Dnipropietario}-idprop:{contr.Idpropiedad}.pdf";
try{ try
var memstream = new MemoryStream(); {
var memstream = new MemoryStream();
var goa = new GetObjectArgs() var goa = new GetObjectArgs()
.WithBucket("alquilafacil") .WithBucket("alquilafacil")
.WithObject(nuevoNombreArchivo) .WithObject(nuevoNombreArchivo)
.WithCallbackStream(stream => { .WithCallbackStream(stream =>
memstream.Position=0; {
memstream.Position = 0;
stream.CopyTo(memstream); stream.CopyTo(memstream);
}); });
@@ -651,37 +709,40 @@ public class ContratoController: ControllerBase {
return File(memstream, "application/pdf", nuevoNombreArchivo); return File(memstream, "application/pdf", nuevoNombreArchivo);
} catch (Exception e){ }
catch (Exception e)
{
Console.Error.WriteLine(e); Console.Error.WriteLine(e);
return BadRequest(new { message = "Fallo al intentar obtener el archivo del almacenamiento o este no existe"}); return BadRequest(new { message = "Fallo al intentar obtener el archivo del almacenamiento o este no existe" });
} }
} }
[HttpPost("api/contratos/aceptarContrato")] [HttpPost("api/contratos/aceptarContrato")]
public IActionResult AceptarContrato([FromHeader(Name = "Auth")]string Auth, [FromBody] AceptarContratoDto dto){ public IActionResult AceptarContrato([FromHeader(Name = "Auth")] string Auth, [FromBody] AceptarContratoDto dto)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (dto.Idcontrato <= 0) return BadRequest(new {message = "La id no puede ser igual o menor a 0"}); if (dto.Idcontrato <= 0) return BadRequest(new { message = "La id no puede ser igual o menor a 0" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(dto.Idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(dto.Idcontrato);
if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id"}); if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token" });
if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino" });
bool ret = RepositorioContratos.Singleton.AceptarContrato(dto.Idcontrato, cli.Dni); bool ret = RepositorioContratos.Singleton.AceptarContrato(dto.Idcontrato, cli.Dni);
if (ret == false) return BadRequest(new { message ="fallo al aceptar el contrato"}); if (ret == false) return BadRequest(new { message = "fallo al aceptar el contrato" });
RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha);
var noti = new NotificacioneBuilder() var noti = new NotificacioneBuilder()
.SetDniremitente(cli.Dni) .SetDniremitente(cli.Dni)
.SetIdpropiedad(contr.Idpropiedad??0) .SetIdpropiedad(contr.Idpropiedad ?? 0)
.SetDnicliente(contr.Dnipropietario??0) .SetDnicliente(contr.Dnipropietario ?? 0)
.SetAccion("Aceptado Contrato") .SetAccion("Aceptado Contrato")
.SetMensaje($"Se inicio el alquiler") .SetMensaje($"Se inicio el alquiler")
.SetFecha(DateTime.Now) .SetFecha(DateTime.Now)
@@ -690,34 +751,35 @@ public class ContratoController: ControllerBase {
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
return ret ? return ret ?
Ok(new { message = "Se acepto el contrato y se crearon los Canons a ser pagados"}) : Ok(new { message = "Se acepto el contrato y se crearon los Canons a ser pagados" }) :
BadRequest(new { message = "No se pudo aceptar el contrato"}); BadRequest(new { message = "No se pudo aceptar el contrato" });
} }
[HttpPut("api/contratos/rechazarPreContrato")] [HttpPut("api/contratos/rechazarPreContrato")]
public IActionResult CancelarContrato([FromHeader(Name = "Auth")]string Auth, [FromBody] RechazarPreContrato dto ) { public IActionResult CancelarContrato([FromHeader(Name = "Auth")] string Auth, [FromBody] RechazarPreContrato dto)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest();
var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino"); var validacion1 = RepositorioGrupos.Singleton.CheckGrupos(Auth, "Inquilino");
if (validacion1 == false) return Unauthorized(); if (validacion1 == false) return Unauthorized();
if (dto.Idcontrato <= 0) return BadRequest(new {message = "La id no puede ser igual o menor a 0"}); if (dto.Idcontrato <= 0) return BadRequest(new { message = "La id no puede ser igual o menor a 0" });
Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(dto.Idcontrato); Contrato? contr = RepositorioContratos.Singleton.ObtenerPreContratoPorId(dto.Idcontrato);
if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id"}); if (contr == null || contr.Dniinquilino == 0) return BadRequest(new { message = "No hay un precontrato por esa id" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token"}); if (cli == null) return BadRequest(new { message = "No hay un cliente por ese token" });
if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino"}); if (cli.Dni != contr.Dniinquilino) return BadRequest(new { message = "El token no corresponde con el del inquilino" });
var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.Idcontrato, cli.Dni); var ret = RepositorioContratos.Singleton.CancelarPrecontrato(dto.Idcontrato, cli.Dni);
if (ret == false) return BadRequest(new {message = "Fallo al intentar cancelar el precontrato"}); if (ret == false) return BadRequest(new { message = "Fallo al intentar cancelar el precontrato" });
RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha); RepositorioNotificaciones.Singleton.MarcarComoLeido(cli.Dni, dto.Fecha);
var noti = new NotificacioneBuilder() var noti = new NotificacioneBuilder()
.SetDniremitente(cli.Dni) .SetDniremitente(cli.Dni)
.SetIdpropiedad(contr.Idpropiedad??0) .SetIdpropiedad(contr.Idpropiedad ?? 0)
.SetDnicliente(contr.Dnipropietario??0) .SetDnicliente(contr.Dnipropietario ?? 0)
.SetAccion("Rechazo Contrato") .SetAccion("Rechazo Contrato")
.SetMensaje($"Se cancelo el proceso para alquilar de: {cli.Nombre}") .SetMensaje($"Se cancelo el proceso para alquilar de: {cli.Nombre}")
.SetFecha(DateTime.Now) .SetFecha(DateTime.Now)
@@ -725,23 +787,27 @@ public class ContratoController: ControllerBase {
.Build(); .Build();
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti); ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
return ret? return ret ?
Ok(new { message = "Se cancelo el proceso para iniciar el alquiler"}): Ok(new { message = "Se cancelo el proceso para iniciar el alquiler" }) :
BadRequest(new { message = "No se pudo cancelar"}); BadRequest(new { message = "No se pudo cancelar" });
} }
private async Task<bool> subirContrato(IFormFile f, string flname) { private async Task<bool> subirContrato(IFormFile f, string flname)
try { {
try
{
var buck = new BucketExistsArgs().WithBucket("alquilafacil"); var buck = new BucketExistsArgs().WithBucket("alquilafacil");
bool encontrado = await mc.BucketExistsAsync(buck).ConfigureAwait(false); bool encontrado = await mc.BucketExistsAsync(buck).ConfigureAwait(false);
if(!encontrado){ if (!encontrado)
{
var mb = new MakeBucketArgs().WithBucket("alquilafacil"); var mb = new MakeBucketArgs().WithBucket("alquilafacil");
await mc.MakeBucketAsync(mb).ConfigureAwait(false); await mc.MakeBucketAsync(mb).ConfigureAwait(false);
} }
using (var stream = new MemoryStream()){ using (var stream = new MemoryStream())
{
await f.CopyToAsync(stream); await f.CopyToAsync(stream);
stream.Position=0; stream.Position = 0;
PutObjectArgs putbj = new PutObjectArgs() PutObjectArgs putbj = new PutObjectArgs()
.WithBucket("alquilafacil") .WithBucket("alquilafacil")
.WithObject(flname) .WithObject(flname)
@@ -751,16 +817,19 @@ public class ContratoController: ControllerBase {
await mc.PutObjectAsync(putbj); await mc.PutObjectAsync(putbj);
} }
return true; return true;
} catch (Exception e ) { }
catch (Exception e)
{
Console.Error.WriteLine(e.Message); Console.Error.WriteLine(e.Message);
return false; return false;
} }
} }
[HttpGet("api/contratos/garantes")] [HttpGet("api/contratos/garantes")]
public IActionResult ObtenerGarantes([FromHeader(Name ="Auth")] string Auth, int idcontrato) { public IActionResult ObtenerGarantes([FromHeader(Name = "Auth")] string Auth, int idcontrato)
{
if (String.IsNullOrWhiteSpace(Auth)) return BadRequest(); if (String.IsNullOrWhiteSpace(Auth)) return BadRequest();
if(idcontrato <= 0) return BadRequest(); if (idcontrato <= 0) return BadRequest();
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth); Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(); if (cli == null) return BadRequest();
@@ -768,11 +837,12 @@ public class ContratoController: ControllerBase {
Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(idcontrato); Contrato? cont = RepositorioContratos.Singleton.ObtenerContratoPorId(idcontrato);
if (cont == null) return BadRequest(); if (cont == null) return BadRequest();
if ((cont.Dniinquilino != cli.Dni && cont.Dnipropietario != cli.Dni)|| !RepositorioGrupos.Singleton.CheckGrupos(Auth, "Admin")) return BadRequest(); if ((cont.Dniinquilino != cli.Dni && cont.Dnipropietario != cli.Dni) || !RepositorioGrupos.Singleton.CheckGrupos(Auth, "Admin")) return BadRequest();
var list = cont.Idgarantes; var list = cont.Idgarantes;
List<GaranteDto> l = new(); List<GaranteDto> l = new();
foreach (var i in list) { foreach (var i in list)
{
l.Add(new GaranteDtoBuilder() l.Add(new GaranteDtoBuilder()
.SetCelular(i.Celular) .SetCelular(i.Celular)
.SetDni(i.Dni) .SetDni(i.Dni)
@@ -785,18 +855,20 @@ public class ContratoController: ControllerBase {
return Ok(l); return Ok(l);
} }
private string ValidarCancelarDto(CancelarPrecontratoDto dto) { private string ValidarCancelarDto(CancelarPrecontratoDto dto)
{
if (dto == null) return "dto nulo"; if (dto == null) return "dto nulo";
string ret = ""; string ret = "";
if (dto.EmailInquilino =="") ret += "No puede tener un EmailInquilino Vacio\n"; if (dto.EmailInquilino == "") ret += "No puede tener un EmailInquilino Vacio\n";
if (dto.EmailPropietario =="") ret += "No puede tener un EmailPropietario Vacio\n"; if (dto.EmailPropietario == "") ret += "No puede tener un EmailPropietario Vacio\n";
if (dto.idpropiedad <= 0 ) ret += "No puede tener id propiedad igual o menor a 0\n"; if (dto.idpropiedad <= 0) ret += "No puede tener id propiedad igual o menor a 0\n";
if (dto.fecha == DateTime.MinValue) ret += "Falta fecha\n"; if (dto.fecha == DateTime.MinValue) ret += "Falta fecha\n";
return ret; return ret;
} }
private string ValidarDtoGarante(GaranteDto g) { private string ValidarDtoGarante(GaranteDto g)
{
string ret = ""; string ret = "";
if (g == null) return "dto nulo"; if (g == null) return "dto nulo";
@@ -809,29 +881,31 @@ public class ContratoController: ControllerBase {
return ret; return ret;
} }
private string ValidarDtoAltaGarantes(AltaGarantesDto dto){ private string ValidarDtoAltaGarantes(AltaGarantesDto dto)
{
string ret = ""; string ret = "";
if (dto == null) return "dto nulo"; if (dto == null) return "dto nulo";
if (dto.garantes.Count()<=0) ret += "No se puede tener 0 o menos garantes\n"; if (dto.garantes.Count() <= 0) ret += "No se puede tener 0 o menos garantes\n";
if (dto.Idpropiedad<=0) ret += "la id de propiedad no puede ser igual o menor a 0\n"; if (dto.Idpropiedad <= 0) ret += "la id de propiedad no puede ser igual o menor a 0\n";
if (dto.EmailInquilino == "") ret += "El email de inquilino no puede estar vacio\n"; if (dto.EmailInquilino == "") ret += "El email de inquilino no puede estar vacio\n";
return ret; return ret;
} }
private string ValidarDtoPrecontrato( PrecontratoDto dto) { private string ValidarDtoPrecontrato(PrecontratoDto dto)
{
string ret = ""; string ret = "";
if (dto == null) return "dto nulo"; if (dto == null) return "dto nulo";
if (dto.CantidadGarantes<0) ret += "la cantidad de garantes necesarios no pueden ser menor a 0\n"; if (dto.CantidadGarantes < 0) ret += "la cantidad de garantes necesarios no pueden ser menor a 0\n";
if (dto.CantidadGarantes>10) ret += "Hay un maximo de 10 garantes\n"; if (dto.CantidadGarantes > 10) ret += "Hay un maximo de 10 garantes\n";
if (dto.EmailInquilino == "") ret += "el email del inquilino no puede ser nulo\n"; if (dto.EmailInquilino == "") ret += "el email del inquilino no puede ser nulo\n";
if (dto.EmailPropietario == "") ret += "el email del propietario no puede estar vacio\n"; if (dto.EmailPropietario == "") ret += "el email del propietario no puede estar vacio\n";
if (dto.IdPropiedad <= 0) ret += "la id de propiedad no puede ser igual o menor a 0\n"; if (dto.IdPropiedad <= 0) ret += "la id de propiedad no puede ser igual o menor a 0\n";
if (dto.MesesHastaAumento <= 0) ret += "No puede tener 0 o menos meses hasta el aumento\n"; if (dto.MesesHastaAumento <= 0) ret += "No puede tener 0 o menos meses hasta el aumento\n";
if (dto.MesesDuracionContrato <= 0) ret += "No puede tener 0 o menos meses de duracion\n"; if (dto.MesesDuracionContrato <= 0) ret += "No puede tener 0 o menos meses de duracion\n";
if (dto.MesesDuracionContrato < dto.MesesHastaAumento) ret += "el tiempo hasta aumento no puede ser mayor de \n"; if (dto.MesesDuracionContrato < dto.MesesHastaAumento) ret += "el tiempo hasta aumento no puede ser mayor de \n";
if (dto.TieneOpcionVenta == true && dto.MontoOpcion <=0) ret +="No puede tener un monto de venta negativo o 0"; if (dto.TieneOpcionVenta == true && dto.MontoOpcion <= 0) ret += "No puede tener un monto de venta negativo o 0";
return ret; return ret;
} }