From 8a329314d9a24255632cd8c40c99b28e3f56ee3b Mon Sep 17 00:00:00 2001 From: Perea Date: Tue, 9 Sep 2025 13:18:33 +0200 Subject: [PATCH] =?UTF-8?q?acabado=20la=20primera=20versi=C3=B3n=20de=20ag?= =?UTF-8?q?regar=20las=20estadisticas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Components/Pages/HerramientaCASAS.razor | 4 +- .../Components/Pages/HerramientaURBAN.razor | 2 + .../Components/Pages/Licitaciones.razor | 2 + .../Components/Pages/LicitacionesURBAN.razor | 2 + HerramientaCASA/UtilidadesCASA.cs | 150 ++++++++++++++++++ bdHerramientaCACOA/db/estadisticas.cs | 8 +- .../dbcontext/herramientascacoaContext.cs | 4 - 7 files changed, 163 insertions(+), 9 deletions(-) diff --git a/HerramientaCASA/Components/Pages/HerramientaCASAS.razor b/HerramientaCASA/Components/Pages/HerramientaCASAS.razor index cee269e..c8efe9e 100644 --- a/HerramientaCASA/Components/Pages/HerramientaCASAS.razor +++ b/HerramientaCASA/Components/Pages/HerramientaCASAS.razor @@ -191,7 +191,7 @@ { int idtipoSimulacion = bd.enumeraciones.First(x => x.Codigo == HerramientaCASA.UtilidadesCASA.obtenerTipoSimulacion(HerramientaCASA.UtilidadesCASA.TiposSimulaciones.CASA)).idEnumeracion; - + string jsonObjeto = Newtonsoft.Json.JsonConvert.SerializeObject(casa); @@ -229,6 +229,8 @@ actualizarSimulacion(jsonObjeto); } } + + HerramientaCASA.UtilidadesCASA.guardarEstadisticas(bd, HerramientaCASA.UtilidadesCASA.TiposSimulaciones.CASA,jsonObjeto,int.Parse(idSimulador)); } private void crearSimulacion(string jsonObjeto) diff --git a/HerramientaCASA/Components/Pages/HerramientaURBAN.razor b/HerramientaCASA/Components/Pages/HerramientaURBAN.razor index 88061ab..3c8297d 100644 --- a/HerramientaCASA/Components/Pages/HerramientaURBAN.razor +++ b/HerramientaCASA/Components/Pages/HerramientaURBAN.razor @@ -208,6 +208,8 @@ actualizarSimulacion(jsonObjeto); } } + + HerramientaCASA.UtilidadesCASA.guardarEstadisticas(bd, HerramientaCASA.UtilidadesCASA.TiposSimulaciones.URBAN, jsonObjeto, int.Parse(idSimulador)); } private void crearSimulacion(string jsonObjeto) { diff --git a/HerramientaCASA/Components/Pages/Licitaciones.razor b/HerramientaCASA/Components/Pages/Licitaciones.razor index 8913be4..f2e9950 100644 --- a/HerramientaCASA/Components/Pages/Licitaciones.razor +++ b/HerramientaCASA/Components/Pages/Licitaciones.razor @@ -334,6 +334,8 @@ actualizarLicitacion(jsonObjeto); } } + + HerramientaCASA.UtilidadesCASA.guardarEstadisticas(bd, HerramientaCASA.UtilidadesCASA.TiposSimulaciones.LICITACIONCASA, jsonObjeto, int.Parse(idSimulador)); } private void crearLicitacion(string jsonObjeto) diff --git a/HerramientaCASA/Components/Pages/LicitacionesURBAN.razor b/HerramientaCASA/Components/Pages/LicitacionesURBAN.razor index ccfb93f..09b0d51 100644 --- a/HerramientaCASA/Components/Pages/LicitacionesURBAN.razor +++ b/HerramientaCASA/Components/Pages/LicitacionesURBAN.razor @@ -363,6 +363,8 @@ } } + + HerramientaCASA.UtilidadesCASA.guardarEstadisticas(bd, HerramientaCASA.UtilidadesCASA.TiposSimulaciones.URBANDSIMP, jsonObjeto, int.Parse(idSimulador)); } private void crearSimulacion(string jsonObjeto) { diff --git a/HerramientaCASA/UtilidadesCASA.cs b/HerramientaCASA/UtilidadesCASA.cs index 938017e..a3a9334 100644 --- a/HerramientaCASA/UtilidadesCASA.cs +++ b/HerramientaCASA/UtilidadesCASA.cs @@ -1,11 +1,16 @@ using bdHerramientaCACOA; using bdHerramientaCACOA.db; using bdHerramientaCACOA.dbcontext; +using bdHerramientaCACOA.HerramientaURBAN; using BlazorBootstrap; +using HerramientaCASA.Components.Pages; +using HerramientaCASA.Components.Pages.HerramientaCASATabs; using HerramientaCASA.Model; using HerramientaCASA.ViewModel; +using IbanNet; using Microsoft.AspNetCore.Components; using System.Text; +using static bdHerramientaCACOA.CASA; using static HerramientaCASA.Components.Pages.ConfiguracionPages.ConvenioColectivo; namespace HerramientaCASA @@ -641,5 +646,150 @@ namespace HerramientaCASA __builder.CloseComponent(); } }; + + public static void guardarEstadisticas(tsHerramientasCACOA bd, HerramientaCASA.UtilidadesCASA.TiposSimulaciones tipoSimulacion, string jsonObjeto, int idSimulador) + { + estadisticas estadisticas = new estadisticas(); + + try + { + switch (tipoSimulacion) + { + case TiposSimulaciones.CASA: + var casa = System.Text.Json.JsonSerializer.Deserialize(jsonObjeto); + casa.CalcularFinales(); + + if (!comprobarExisteEstadistica(bd, idSimulador)) + { + mapearEstadisticasCASA(estadisticas,casa,idSimulador); + bd.estadisticas.Add(estadisticas); + } + else + { + var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador); + mapearEstadisticasCASA(estadisticaExistente, casa, idSimulador); + } + break; + case TiposSimulaciones.BAJA: + break; + case TiposSimulaciones.LICITACIONCASA: + var licitacionCASA = System.Text.Json.JsonSerializer.Deserialize(jsonObjeto); + + if (!comprobarExisteEstadistica(bd, idSimulador)) + { + mapearEstadisticasLicitacionCASA(estadisticas, licitacionCASA, idSimulador); + bd.estadisticas.Add(estadisticas); + } + else + { + var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador); + mapearEstadisticasLicitacionCASA(estadisticaExistente, licitacionCASA, idSimulador); + } + + break; + case TiposSimulaciones.URBAN: + var urban = System.Text.Json.JsonSerializer.Deserialize(jsonObjeto); + urban.CalcularFinales(); + + if (!comprobarExisteEstadistica(bd, idSimulador)) + { + mapearEstadisticasURBAN(estadisticas, urban, idSimulador); + bd.estadisticas.Add(estadisticas); + } + else + { + var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador); + mapearEstadisticasURBAN(estadisticaExistente, urban, idSimulador); + } + break; + case TiposSimulaciones.URBANDSIMP: + + var licitacionUrban = System.Text.Json.JsonSerializer.Deserialize(jsonObjeto); + + if (!comprobarExisteEstadistica(bd, idSimulador)) + { + mapearEstadisticasLicitacionURBAN(estadisticas, licitacionUrban, idSimulador); + bd.estadisticas.Add(estadisticas); + } + else + { + var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador); + mapearEstadisticasLicitacionURBAN(estadisticaExistente, licitacionUrban, idSimulador); + } + break; + } + + bd.SaveChanges(); + } + catch (Exception ex) { + throw new Exception(ex.Message); + } + } + + private static bool comprobarExisteEstadistica(tsHerramientasCACOA bd, int idSimulacion) + { + bool existeEstadistica = false; + + if (bd.estadisticas.Any(x=> x.idSimulacion == idSimulacion)) + { + existeEstadistica = true; + } + return existeEstadistica; + } + + private static void mapearEstadisticasCASA(estadisticas estadistica, CASA casa, int idSimulador) + { + estadistica.idSimulacion = idSimulador; + estadistica.costeDirecto = casa.DespachoProfesional.CostesDirectos; + estadistica.costeIndirecto = casa.DespachoProfesional.TasaCostesIndirectos; + estadistica.costeVariable = casa.CostesProduccion.CostesVariables; + estadistica.costeHoraDespachoProf = casa.DespachoProfesional.CosteHoraDespachoProfesional; + estadistica.totalFases = casa.TrabajoProfesional.FasesTrabajo.Sum(x => x.Porcentaje); + estadistica.horasTPEDocumentacion = casa.TrabajoProfesional.HorasTPEDocumentacion; + estadistica.horasTPEDireccionObra = casa.TrabajoProfesional.HorasTPEDireccion; + estadistica.horasTPE = casa.TrabajoProfesional.TotalHorasTPE; + estadistica.porcentajeExternalizacion = casa.CostesProduccion.CoeficienteCostesExternalizacion; + estadistica.plazoPresentacion = casa.CostesProduccion.PlazoPresentacionDocumentos; + estadistica.costeProduccion = casa.CostesProduccion.CostesProduccionTrabProf; + estadistica.totalOtrosTrabajos = casa.CostesProduccion.TotalOtrosTrabajos; + estadistica.porcentajeBeneficio = casa.CostesProduccion.Beneficio; + estadistica.numeroTrabajadores = casa.DespachoProfesional.Trabajadores.Sum(x => x.NumTrabajadores); + } + + private static void mapearEstadisticasLicitacionCASA(estadisticas estadistica, LICITACIONES licitacion, int idSimulador) + { + estadistica.idSimulacion = idSimulador; + estadistica.costeHoraDespachoProf = licitacion.costeHoraProduccion; + estadistica.totalFases = licitacion.FasesTrabajo.Sum(x=> x.Porcentaje); + estadistica.horasTPE = licitacion.horasProduccion; + estadistica.plazoPresentacion = licitacion.PlazoPresentacionDocumentos; + estadistica.costeProduccion = licitacion.CostesProduccionTrabProf; + estadistica.totalOtrosTrabajos = licitacion.TotalOtrosTrabajos; + } + + private static void mapearEstadisticasURBAN(estadisticas estadistica, URBAN urban, int idSimulador) + { + estadistica.idSimulacion = idSimulador; + estadistica.costeDirecto = urban.DespachoProfesional.CostesDirectos; + estadistica.costeIndirecto = urban.DespachoProfesional.TasaCostesIndirectos; + estadistica.costeVariable = urban.CostesProduccion.CostesVariables; + estadistica.costeHoraDespachoProf = urban.DespachoProfesional.CosteHoraDespachoProfesional; + estadistica.horasTPE = urban.TrabajoProfesional.horasTrabProfesional; + estadistica.porcentajeExternalizacion = urban.CostesProduccion.CoeficienteCostesExternalizacion; + estadistica.plazoPresentacion = urban.CostesProduccion.PlazoPresentacionDocumentos; + estadistica.costeProduccion = urban.CostesProduccion.CostesProduccionTrabProf; + estadistica.porcentajeBeneficio = urban.CostesProduccion.Beneficio; + estadistica.numeroTrabajadores = urban.DespachoProfesional.Trabajadores.Sum(x => x.NumTrabajadores); + } + + private static void mapearEstadisticasLicitacionURBAN(estadisticas estadistica, bdHerramientaCACOA.LicitacionesURBAN licitacionUrban, int idSimulador) + { + estadistica.idSimulacion = idSimulador; + estadistica.costeHoraDespachoProf = licitacionUrban.CosteHP; + estadistica.horasTPE = licitacionUrban.TrabajoProfesional.horasTrabProfesional; + estadistica.plazoPresentacion = licitacionUrban.PlazoPresentacionDocumentos; + estadistica.costeProduccion = licitacionUrban.CostesProduccionTrabProf; + estadistica.numeroTrabajadores = licitacionUrban.ListaSolvenciaTecnica.Sum(x => x.Cantidad); + } } } diff --git a/bdHerramientaCACOA/db/estadisticas.cs b/bdHerramientaCACOA/db/estadisticas.cs index 643cd22..33d99a2 100644 --- a/bdHerramientaCACOA/db/estadisticas.cs +++ b/bdHerramientaCACOA/db/estadisticas.cs @@ -17,7 +17,7 @@ public partial class estadisticas public double? costeHoraDespachoProf { get; set; } - public int? totalFases { get; set; } + public double? totalFases { get; set; } public double? horasTPEDocumentacion { get; set; } @@ -25,7 +25,7 @@ public partial class estadisticas public double? horasTPE { get; set; } - public int? porcentajeExternalizacion { get; set; } + public double? porcentajeExternalizacion { get; set; } public double? plazoPresentacion { get; set; } @@ -33,9 +33,9 @@ public partial class estadisticas public double? totalOtrosTrabajos { get; set; } - public int? porcentajeBeneficio { get; set; } + public double? porcentajeBeneficio { get; set; } - public int? numeroTrabajadores { get; set; } + public double? numeroTrabajadores { get; set; } public virtual simulaciones? idSimulacionNavigation { get; set; } } diff --git a/bdHerramientaCACOA/dbcontext/herramientascacoaContext.cs b/bdHerramientaCACOA/dbcontext/herramientascacoaContext.cs index 99206a8..a474d42 100644 --- a/bdHerramientaCACOA/dbcontext/herramientascacoaContext.cs +++ b/bdHerramientaCACOA/dbcontext/herramientascacoaContext.cs @@ -166,10 +166,6 @@ public partial class herramientascacoaContext : DbContext entity.Property(e => e.idEstadistica).HasColumnType("int(11)"); entity.Property(e => e.idSimulacion).HasColumnType("int(11)"); - entity.Property(e => e.numeroTrabajadores).HasColumnType("int(11)"); - entity.Property(e => e.porcentajeBeneficio).HasColumnType("int(11)"); - entity.Property(e => e.porcentajeExternalizacion).HasColumnType("int(11)"); - entity.Property(e => e.totalFases).HasColumnType("int(11)"); entity.HasOne(d => d.idSimulacionNavigation).WithMany(p => p.estadisticas) .HasForeignKey(d => d.idSimulacion)