carga de contratos por admin funcional
This commit is contained in:
@@ -58,37 +58,74 @@ public class CargarContratoAdminController: ControllerBase{
|
||||
var validacion1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 20);
|
||||
if (validacion1 == false) return Unauthorized();
|
||||
|
||||
if (!Request.HasFormContentType)
|
||||
{
|
||||
if (!Request.HasFormContentType) {
|
||||
return BadRequest(new { message = "La solicitud debe contener datos de formulario (FormData)." });
|
||||
}
|
||||
|
||||
var formData = await Request.ReadFormAsync();
|
||||
if (formData == null)
|
||||
{
|
||||
if (formData == null) {
|
||||
return BadRequest(new { message = "No se pudieron leer los datos del formulario." });
|
||||
}
|
||||
|
||||
var archivoContrato = Request.Form.Files.FirstOrDefault(x=>x.FileName =="archivoContrato");
|
||||
var archivoContrato = Request.Form.Files.FirstOrDefault(x=>x.Name =="archivoContrato");
|
||||
if (archivoContrato == null) return BadRequest(new { message = "Falto Subir el archivo" });
|
||||
|
||||
if (archivoContrato.ContentType != "application/pdf")
|
||||
{
|
||||
if (archivoContrato.ContentType != "application/pdf") {
|
||||
return BadRequest(new { message = "El archivo debe ser un PDF." });
|
||||
}
|
||||
|
||||
Contrato? cont; ActionResult? req;
|
||||
Contrato? cont; IActionResult? req;
|
||||
|
||||
(cont, req) = ParseContratoFromForm(formData);
|
||||
if (req != null && cont == null) return req;
|
||||
|
||||
var ret = RepositorioContratos.Singleton.AdminCargaContrato(cont, cli.Dni);
|
||||
if(ret == false) return BadRequest( new {message = "No se pudo cargar el contrato" });
|
||||
|
||||
//WIP
|
||||
//Falta Carga del archivo a minio
|
||||
//Falta añadir la url al contrato
|
||||
//Falta generar canones
|
||||
//Falta mandar notificaciones
|
||||
var inq = RepositorioUsuarios.Singleton.ObtenerClientePorDni(cont.Dniinquilino??0);
|
||||
|
||||
cont = RepositorioContratos.Singleton.ObtenerContrato(inq.Email, cont.Idpropiedad ?? 0);
|
||||
if (cont == null) return BadRequest(new { message = "No se pudo recuperar el contrato" });
|
||||
|
||||
|
||||
string nuevoNombreArchivo = $"id:{cont.Id}-inq:{cont.Dniinquilino}-propi:{cont.Dnipropietario}-idprop:{cont.Idpropiedad}.pdf";
|
||||
|
||||
ret = await subirContrato(archivoContrato, nuevoNombreArchivo);
|
||||
if (ret == false) return BadRequest(new { message = "No se pudo subir el archivo" });
|
||||
|
||||
ret = RepositorioContratos.Singleton.AddUrl(cont.Id, nuevoNombreArchivo, cli.Dni);
|
||||
if (ret == false) return BadRequest(new { message = "No se pudo guardar la url del contrato" });
|
||||
|
||||
ret = RepositorioContratos.Singleton.GenerarCanones(cont.Id, cli.Dni);
|
||||
if (ret == false) return BadRequest( new { message = "Fallo al generar canones" });
|
||||
|
||||
var noti = new NotificacioneBuilder()
|
||||
.SetDniremitente(int.Parse(cli.Dni.ToString()))
|
||||
.SetIdpropiedad(cont.Idpropiedad ?? 0)
|
||||
.SetDnicliente(cont.Dniinquilino ?? 0)
|
||||
.SetAccion("Notificacion")
|
||||
.SetMensaje($"Contrato Cargado desde Administracion")
|
||||
.SetFecha(DateTime.Now)
|
||||
.SetLeido(false)
|
||||
.Build();
|
||||
|
||||
var noti2 = new NotificacioneBuilder()
|
||||
.SetDniremitente(int.Parse(cli.Dni.ToString()))
|
||||
.SetIdpropiedad(cont.Idpropiedad ?? 0)
|
||||
.SetDnicliente(cont.Dnipropietario ?? 0)
|
||||
.SetAccion("Notificacion")
|
||||
.SetMensaje($"Contrato Cargado desde Administracion")
|
||||
.SetFecha(DateTime.Now)
|
||||
.SetLeido(false)
|
||||
.Build();
|
||||
|
||||
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti);
|
||||
if (ret == false) return BadRequest( new { message = "No se pudo entregar la notificacion al inquilino" });
|
||||
|
||||
ret = RepositorioNotificaciones.Singleton.AltaNotificacion(noti2);
|
||||
if (ret == false) return BadRequest( new { message = "No se pudo entregar la notificacion al propietario" });
|
||||
|
||||
return Ok(new { message = "Se cargo el contrato" });
|
||||
|
||||
|
||||
}
|
||||
@@ -159,6 +196,7 @@ public class CargarContratoAdminController: ControllerBase{
|
||||
if (mesesHastaAumento <= 0){
|
||||
return (null, BadRequest(new { message = "No se cargaron los meses hasta el aumento" }));
|
||||
}
|
||||
if (mesesDuration<mesesHastaAumento) return (null, BadRequest( new { message = "El contrato no puede durar menos que el tiempo hasta el aumento" } ));
|
||||
|
||||
if (!formData.TryGetValue("monto", out var montoValues) ||
|
||||
string.IsNullOrEmpty(montoValues.FirstOrDefault()) ||
|
||||
@@ -199,13 +237,13 @@ public class CargarContratoAdminController: ControllerBase{
|
||||
}
|
||||
}
|
||||
|
||||
if (montoOpcionVenta <= 0.0m){
|
||||
if (montoOpcionVenta <= 0.0m && tieneOpcionVenta){
|
||||
return (null, BadRequest(new { message = "No se cargo el monto de la opcion de venta" }));
|
||||
}
|
||||
|
||||
var cont = new Contrato{
|
||||
Cancelado=0,
|
||||
Habilitado=1,
|
||||
Habilitado=0,
|
||||
Cantgarantemin=cantGarantMin,
|
||||
Dniinquilino=dniInquilino,
|
||||
Dnipropietario=dniPropietario,
|
||||
@@ -241,7 +279,14 @@ public class CargarContratoAdminController: ControllerBase{
|
||||
var garanteCount = garanteKeys.Count / 6;
|
||||
|
||||
for (int i = 0; i < garanteCount; i++) {
|
||||
var dni = formData.TryGetValue($"garantes[{i}].dni", out var dniValue) ? dniValue.ToString() ?? "" : "";
|
||||
|
||||
int dni = 0;
|
||||
if (formData.TryGetValue($"garantes[{i}].dni", out var dniValue) &&
|
||||
!string.IsNullOrEmpty(dniValue.FirstOrDefault()))
|
||||
{
|
||||
int.TryParse(dniValue.FirstOrDefault(), out dni);
|
||||
}
|
||||
|
||||
var nombre = formData.TryGetValue($"garantes[{i}].nombre", out var nombreValue) ? nombreValue.ToString() ?? "" : "";
|
||||
var apellido = formData.TryGetValue($"garantes[{i}].apellido", out var apellidoValue) ? apellidoValue.ToString() ?? "" : "";
|
||||
var domicilio = formData.TryGetValue($"garantes[{i}].domicilio", out var domicilioValue) ? domicilioValue.ToString() ?? "" : "";
|
||||
@@ -278,4 +323,31 @@ public class CargarContratoAdminController: ControllerBase{
|
||||
.Build();
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<bool> subirContrato(IFormFile f, string flname) {
|
||||
try {
|
||||
var buck = new BucketExistsArgs().WithBucket("alquilafacil");
|
||||
bool encontrado = await mc.BucketExistsAsync(buck).ConfigureAwait(false);
|
||||
|
||||
if (!encontrado) {
|
||||
var mb = new MakeBucketArgs().WithBucket("alquilafacil");
|
||||
await mc.MakeBucketAsync(mb).ConfigureAwait(false);
|
||||
}
|
||||
using (var stream = new MemoryStream()) {
|
||||
await f.CopyToAsync(stream);
|
||||
stream.Position = 0;
|
||||
PutObjectArgs putbj = new PutObjectArgs()
|
||||
.WithBucket("alquilafacil")
|
||||
.WithObject(flname)
|
||||
.WithStreamData(stream)
|
||||
.WithContentType("application/pdf")
|
||||
.WithObjectSize(stream.Length);
|
||||
await mc.PutObjectAsync(putbj);
|
||||
}
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
Console.Error.WriteLine(e.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user