Files
HerramientaCASA/HerramientaCASA/UtilidadesCASA.cs

1107 lines
46 KiB
C#

using bdHerramientaCACOA;
using bdHerramientaCACOA.db;
using bdHerramientaCACOA.dbcontext;
using bdHerramientaCACOA.HerramientaURBAN;
using BlazorBootstrap;
using DocumentFormat.OpenXml.Office2013.Drawing.ChartStyle;
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
{
public class UtilidadesCASA
{
public static int crearObjeto(tsHerramientasCACOA bd, TiposSimulaciones tipoSimulacion, string jsonObjeto, string descripcion, string nombreFichero, int idUsuario)
{
int idtipoFichero = bd.enumeraciones.First(x => x.Codigo == "TIPFIC.JSON").idEnumeracion;
int idtipoSimulacion = bd.enumeraciones.First(x => x.Codigo == obtenerTipoSimulacion(tipoSimulacion)).idEnumeracion;
bdHerramientaCACOA.db.ficheros ficheroCASA = new bdHerramientaCACOA.db.ficheros()
{
FechaCreacion = DateTime.Now,
idTipo = idtipoFichero,
Fichero = Encoding.UTF8.GetBytes(jsonObjeto),
NombreFichero = nombreFichero
};
bdHerramientaCACOA.db.simulaciones simulacion = new bdHerramientaCACOA.db.simulaciones()
{
idCodigo = idUsuario,
idTipoSimulacion = idtipoSimulacion,
Descripcion = descripcion,
idFicheroJSONNavigation = ficheroCASA,
FechaCreacion = DateTime.Now
};
bd.simulaciones.Add(simulacion);
bd.SaveChanges();
return simulacion.idSimulacion;
}
public static void actualziarObjeto(tsHerramientasCACOA bd, string jsonObjeto, string descripcion, string idSimulacion)
{
simulaciones simulacionObtenida = bd.simulaciones.First(x => x.idSimulacion == int.Parse(idSimulacion));
ficheros ficheroObtenido = bd.ficheros.First(x => x.idFichero == simulacionObtenida.idFicheroJSON);
ficheroObtenido.Fichero = Encoding.UTF8.GetBytes(jsonObjeto);
simulacionObtenida.FechaModificacion = DateTime.Now;
simulacionObtenida.Descripcion = descripcion;
bd.ficheros.Update(ficheroObtenido);
bd.simulaciones.Update(simulacionObtenida);
bd.SaveChanges();
}
public static string obtenerTipoSimulacion(TiposSimulaciones simulacion)
{
string tipoSimulacion = "";
switch (simulacion)
{
case TiposSimulaciones.CASA:
tipoSimulacion = "TIPOHERRAMIENTA.CASA";
break;
case TiposSimulaciones.BAJA:
tipoSimulacion = "TIPOHERRAMIENTA.BAJAS";
break;
case TiposSimulaciones.LICITACIONCASA:
tipoSimulacion = "TIPOHERRAMIENTA.LICITACIONCASA";
break;
case TiposSimulaciones.URBAN:
tipoSimulacion = "TIPOHERRAMIENTA.URBAND";
break;
case TiposSimulaciones.URBANDSIMP:
tipoSimulacion = "TIPOHERRAMIENTA.URBANDSIMP";
break;
}
;
return tipoSimulacion;
}
public static void guardarEnumeracion(tsHerramientasCACOA bd, enumeraciones nuevaEnumeracion, string codigo, bool nuevoElemento = true, enumeraciones enumeracionObtenida = null)
{
try
{
if (nuevoElemento)
{
int grupoEnum = (int)bd.enumeraciones.First(x => x.Codigo.Contains(codigo)).idGrupoEnumeracion;
nuevaEnumeracion.Descripcion = nuevaEnumeracion.ValorAlfabetico1.ToUpper();
nuevaEnumeracion.Codigo = codigo + "." + nuevaEnumeracion.ValorAlfabetico1.ToUpper();
nuevaEnumeracion.Codigo = nuevaEnumeracion.Codigo.Trim().Replace(" ", "");
nuevaEnumeracion.idGrupoEnumeracion = grupoEnum;
bd.enumeraciones.Add(nuevaEnumeracion);
}
else
{
enumeracionObtenida.ValorAlfabetico1 = nuevaEnumeracion.ValorAlfabetico1;
enumeracionObtenida.ValorNumerico1 = nuevaEnumeracion.ValorNumerico1;
enumeracionObtenida.ValorNumerico2 = nuevaEnumeracion.ValorNumerico2;
enumeracionObtenida.ValorAlfabeticoLargo = nuevaEnumeracion.ValorAlfabeticoLargo;
enumeracionObtenida.Descripcion = nuevaEnumeracion.ValorAlfabetico1.ToUpper();
//enumeracionObtenida.Codigo = codigo + "." + nuevaEnumeracion.ValorAlfabetico1.ToUpper();
//enumeracionObtenida.Codigo = nuevaEnumeracion.Codigo.Trim().Replace(" ", "");
bd.enumeraciones.Update(enumeracionObtenida);
}
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarEnumeracion(tsHerramientasCACOA bd, enumeraciones enumeracionObtenida)
{
try
{
bd.enumeraciones.Remove(enumeracionObtenida);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarFactorCorrecion(tsHerramientasCACOA bd, factorescorreccion factorCorrecc, factorescorreccion facturaEdit)
{
try
{
factorCorrecc.Descripcion = facturaEdit.Descripcion;
factorCorrecc.Coeficiente = facturaEdit.Coeficiente;
bd.factorescorreccion.Update(factorCorrecc);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearFactorCorrecion(tsHerramientasCACOA bd, factorescorreccion factorCorrecc)
{
try
{
string descripcion = factorCorrecc.Descripcion;
factorCorrecc.Descripcion = descripcion;
bd.factorescorreccion.Add(factorCorrecc);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarFactorCorrecion(tsHerramientasCACOA bd, factorescorreccion factorObtenido)
{
try
{
//Comprobamos si es el ultimo de su especie
var total = bd.factorescorreccion.Where(x => x.idEnumeracion == factorObtenido.idEnumeracion).Count();
var idenu = factorObtenido.idEnumeracion;
bd.factorescorreccion.Remove(factorObtenido);
bd.SaveChanges();
if (total == 1)
{
var enu = bd.enumeraciones.First(x => x.idEnumeracion == idenu);
bd.enumeraciones.Remove(enu);
}
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarPuntoInformacion(tsHerramientasCACOA bd, puntosinformacion puntoOrig, puntosinformacion puntoEdit)
{
try
{
puntoOrig.Descripcion = puntoEdit.Descripcion;
puntoOrig.Titulo = puntoEdit.Titulo;
bd.puntosinformacion.Update(puntoOrig);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
//public static void actualizarCosteDespachoProfesional(tsHerramientasCACOA bd, costedespachoprofesional coste, costedespachoprofesional costeEdit)
//{
// try
// {
// coste.numTrabajadores = costeEdit.numTrabajadores;
// coste.HorasProduccionAnuales = costeEdit.HorasProduccionAnuales;
// coste.CosteMinimoPersonal = costeEdit.CosteMinimoPersonal;
// coste.CosteMaxPersonal = costeEdit.CosteMaxPersonal;
// coste.CosteDirectoMedio = costeEdit.CosteDirectoMedio;
// coste.CostesDirectos = costeEdit.CostesDirectos;
// coste.CostesIndirectos = costeEdit.CostesIndirectos;
// coste.TotalDespachoProfesional = costeEdit.TotalDespachoProfesional;
// bd.costedespachoprofesional.Update(coste);
// var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
// cambiarFecha.Fecha1 = DateTime.Now;
// bd.enumeraciones.Update(cambiarFecha);
// }
// catch (Exception ex)
// {
// }
//}
//public static void crearCosteDespachoProfesional(tsHerramientasCACOA bd, costedespachoprofesional coste)
//{
// try
// {
// //string descripcion = factorCorrecc.Descripcion;
// //factorCorrecc.Descripcion = descripcion;
// bd.costedespachoprofesional.Add(coste);
// var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
// cambiarFecha.Fecha1 = DateTime.Now;
// bd.enumeraciones.Update(cambiarFecha);
// }
// catch (Exception ex)
// {
// }
//}
//public static void eliminarCosteDespachoProfesional(tsHerramientasCACOA bd, costedespachoprofesional costeObtenido)
//{
// try
// {
// bd.costedespachoprofesional.Remove(costeObtenido);
// var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
// cambiarFecha.Fecha1 = DateTime.Now;
// bd.enumeraciones.Update(cambiarFecha);
// }
// catch (Exception ex)
// {
// }
//}
public static void actualizarTipologias(tsHerramientasCACOA bd, tipologias tipologiaObtenida, tipologias tipologiaEdit)
{
try
{
tipologiaObtenida.Descripcion = tipologiaEdit.Descripcion;
tipologiaObtenida.CoeficienteUso = tipologiaEdit.CoeficienteUso;
bd.tipologias.Update(tipologiaObtenida);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearTipologia(tsHerramientasCACOA bd, tipologias tipologiaObtenida)
{
try
{
string descripcion = tipologiaObtenida.Descripcion;
tipologiaObtenida.Descripcion = descripcion;
bd.tipologias.Add(tipologiaObtenida);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarConvenioColectivo(tsHerramientasCACOA bd, conveniocolectivo convcol, conveniocolectivo concolEdit)
{
try
{
convcol.CosteAnualTrabajador = concolEdit.CosteAnualTrabajador;
bd.conveniocolectivo.Update(convcol);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarConvenioColectivo(tsHerramientasCACOA bd, ConvenioProvincia concolEdit)
{
try
{
var gradSup = bd.conveniocolectivo.First(x => x.idConvenioColectivo == concolEdit.idGradoSup);
gradSup.CosteAnualTrabajador = concolEdit.valorGradoSup;
var gradMed = bd.conveniocolectivo.First(x => x.idConvenioColectivo == concolEdit.idGradoMedio);
gradSup.CosteAnualTrabajador = concolEdit.valorGradoMed;
var delin = bd.conveniocolectivo.First(x => x.idConvenioColectivo == concolEdit.idDelinPro);
gradSup.CosteAnualTrabajador = concolEdit.valorDelinPro;
var admin = bd.conveniocolectivo.First(x => x.idConvenioColectivo == concolEdit.idAdmin);
gradSup.CosteAnualTrabajador = concolEdit.valorAdmin;
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearConvenioColectivo(tsHerramientasCACOA bd, ConvenioProvincia concolEdit)
{
try
{
bdHerramientaCACOA.db.conveniocolectivo nuevoConvenio;
var gradoSup = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.TECGRADSUP");
var gradoMed = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.GESTPROY");
var delin = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.DELINPROY");
var admin = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.ADMIN");
agregarConvenio(bd, concolEdit.valorGradoSup, concolEdit.idProvincia, gradoSup.idEnumeracion);
agregarConvenio(bd, concolEdit.valorGradoMed, concolEdit.idProvincia, gradoMed.idEnumeracion);
agregarConvenio(bd, concolEdit.valorDelinPro, concolEdit.idProvincia, delin.idEnumeracion);
agregarConvenio(bd, concolEdit.valorAdmin, concolEdit.idProvincia, admin.idEnumeracion);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarConvenioColectivo(tsHerramientasCACOA bd, ConvenioProvincia convenioColectivo)
{
try
{
var listaConveniosBorrar = bd.conveniocolectivo.Where(x => x.idProvincia == convenioColectivo.idProvincia).ToList();
bd.conveniocolectivo.RemoveRange(listaConveniosBorrar);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
private static void agregarConvenio(tsHerramientasCACOA bd, double valor, string idProvincia, int idGrupo)
{
bd.conveniocolectivo.Add(new conveniocolectivo
{
idEnumeracion = idGrupo,
idProvincia = idProvincia,
CosteAnualTrabajador = valor
});
}
public static void eliminarTipologia(tsHerramientasCACOA bd, tipologias tipologiaObtenida)
{
try
{
bd.tipologias.Remove(tipologiaObtenida);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarTipoProyecto(tsHerramientasCACOA bd, tipoproyectos proyecto, tipoproyectos proyectoEdit)
{
try
{
proyecto.Descripcion = proyectoEdit.Descripcion;
proyecto.Abreviatura = proyectoEdit.Abreviatura;
proyecto.idTipoDocumento = proyectoEdit.idTipoDocumento;
bd.tipoproyectos.Update(proyecto);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearTipoProyecto(tsHerramientasCACOA bd, tipoproyectos proyecto)
{
try
{
bd.tipoproyectos.Add(proyecto);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarTipoProyecto(tsHerramientasCACOA bd, tipoproyectos proyecto)
{
try
{
//Comprobamos si es el ultimo de su especie
var total = bd.tipoproyectos.Where(x => x.idTipoDocumento == proyecto.idTipoDocumento).Count();
var idenu = proyecto.idTipoDocumento;
bd.tipoproyectos.Remove(proyecto);
bd.SaveChanges();
if (total == 1)
{
var enu = bd.enumeraciones.First(x => x.idEnumeracion == idenu);
bd.enumeraciones.Remove(enu);
}
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarDocumentacion(tsHerramientasCACOA bd, documentacion docu, documentacion docuEdit)
{
try
{
docu.Descripcion = docuEdit.Descripcion;
docu.CoeficienteHoras = docuEdit.CoeficienteHoras;
docu.Checkeable = docuEdit.Checkeable;
bd.documentacion.Update(docu);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearDocumentacion(tsHerramientasCACOA bd, documentacion docu)
{
try
{
bd.documentacion.Add(docu);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarDocumentacion(tsHerramientasCACOA bd, documentacion docu)
{
try
{
bd.documentacion.Remove(docu);
bd.SaveChanges();
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void actualizarProyecto_Documentacion(tsHerramientasCACOA bd, tipoproyecto_documentacion docu, v_tipoproyecto_documentacion docuEdit)
{
try
{
docu.idtipoproyecto = docuEdit.idtipoproyecto;
docu.iddocumentacion = docuEdit.iddocumentacion;
docu.esMinima = docuEdit.esMinima;
docu.esOpcional = docuEdit.esOpcional;
docu.esNecesario = docuEdit.esNecesario;
docu.orden = docuEdit.orden;
bd.tipoproyecto_documentacion.Update(docu);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void crearProyecto_Documentacion(tsHerramientasCACOA bd, v_tipoproyecto_documentacion docu)
{
try
{
tipoproyecto_documentacion proyeDocu = new tipoproyecto_documentacion()
{
idtipoproyecto = docu.idtipoproyecto,
iddocumentacion = docu.iddocumentacion,
esMinima = docu.esMinima,
esOpcional = docu.esOpcional,
esNecesario = docu.esNecesario,
orden = docu.orden,
};
bd.tipoproyecto_documentacion.Add(proyeDocu);
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static void eliminarProyecto_Documentacion(tsHerramientasCACOA bd, tipoproyecto_documentacion docu)
{
try
{
bd.tipoproyecto_documentacion.Remove(docu);
bd.SaveChanges();
var cambiarFecha = bd.enumeraciones.First(x => x.Codigo == "CW.FECHAULTMOD");
cambiarFecha.Fecha1 = DateTime.Now;
bd.enumeraciones.Update(cambiarFecha);
}
catch (Exception ex)
{
}
}
public static List<enumeraciones> devolverListadoOrdenadoEnumeracion(tsHerramientasCACOA bd, string codigoEnumeracion)
{
return bd.enumeraciones.Where(x => x.Codigo.Contains(codigoEnumeracion + ".")).OrderBy(x => x.Orden).ToList();
}
public enum TiposSimulaciones
{
CASA,
BAJA,
LICITACIONCASA,
URBAN,
URBANDSIMP
}
public static RenderFragment CreateTooltip(string titulo) => __builder =>
{
if (titulo != "") {
__builder.OpenComponent(0, typeof(Tooltip));
__builder.AddAttribute(1, "Title", titulo);
__builder.AddAttribute(2, "class", "custom-tooltip");
__builder.AddAttribute(3, "role", "button");
__builder.AddAttribute(4, "ChildContent", (RenderFragment)(__builder2 =>
{
__builder2.OpenComponent(5, typeof(Icon));
__builder2.AddAttribute(6, "Name", IconName.InfoCircleFill);
__builder2.AddAttribute(7, "Class", "text-primary ");
__builder2.CloseComponent();
}));
__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<CASA>(jsonObjeto);
casa.CalcularFinales();
if (!comprobarExisteEstadistica(bd, idSimulador))
{
mapearEstadisticasCASA(bd,estadisticas,casa,idSimulador);
bd.estadisticas.Add(estadisticas);
}
else
{
var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador);
mapearEstadisticasCASA(bd,estadisticaExistente, casa, idSimulador);
}
break;
case TiposSimulaciones.BAJA:
break;
case TiposSimulaciones.LICITACIONCASA:
var licitacionCASA = System.Text.Json.JsonSerializer.Deserialize<LICITACIONES>(jsonObjeto);
if (!comprobarExisteEstadistica(bd, idSimulador))
{
mapearEstadisticasLicitacionCASA(bd,estadisticas, licitacionCASA, idSimulador);
bd.estadisticas.Add(estadisticas);
}
else
{
var estadisticaExistente = bd.estadisticas.First(x => x.idSimulacion == idSimulador);
mapearEstadisticasLicitacionCASA(bd, estadisticaExistente, licitacionCASA, idSimulador);
}
break;
case TiposSimulaciones.URBAN:
var urban = System.Text.Json.JsonSerializer.Deserialize<URBAN>(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<bdHerramientaCACOA.LicitacionesURBAN>(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(tsHerramientasCACOA bd,estadisticas estadistica, CASA casa, int idSimulador)
{
estadistica.idSimulacion = idSimulador;
estadistica.numeroTrabajadores = casa.DespachoProfesional.Trabajadores.Sum(x => x.NumTrabajadores);
estadistica.totalCosteAnual = casa.DespachoProfesional.CostesDirectosAnuales;
estadistica.horasProduccion = casa.DespachoProfesional.HorasTotalesProduccion;
estadistica.costeDirecto = casa.DespachoProfesional.CostesDirectos;
estadistica.costeIndirecto = casa.DespachoProfesional.TasaCostesIndirectos;
estadistica.costeVariable = casa.CostesProduccion.CostesVariables;
estadistica.costeHoraDespachoProf = casa.DespachoProfesional.CosteHoraDespachoProfesional;
estadistica.totalSupeficie = casa.TrabajoProfesional.Usos.Sum(x=> x.superficie);
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.costeHoraExternalizacion = casa.CostesProduccion.CosteHoraExternalizacion;
estadistica.plazoPresentacion = casa.CostesProduccion.PlazoPresentacionDocumentos;
estadistica.costeProduccion = casa.CostesProduccion.CostesProduccionTrabProf;
estadistica.porcentajeBeneficio = casa.CostesProduccion.Beneficio;
estadistica.precioTrabajo = casa.CostesProduccion.PrecioTrabProf;
estadistica.totalOtrosTrabajos = casa.CostesProduccion.TotalOtrosTrabajos;
estadistica.precioEncargo = casa.CostesProduccion.PrecioDelEncargo;
// Rellenar listado usos
if (casa.TrabajoProfesional.Usos.Count != 0)
{
var listadoBorrar = bd.estadisticasusos.Where(x=> x.idSimulacion == idSimulador).ToList();
bd.estadisticasusos.RemoveRange(listadoBorrar);
foreach (var uso in casa.TrabajoProfesional.Usos)
{
bd.estadisticasusos.Add(new estadisticasusos
{
idSimulacion = idSimulador,
superficie = uso.superficie,
idUso = uso.idGrupoTipologia,
idTipologia = uso.idTipologia,
idIntervencion = uso.idTipoIntervencion
});
}
}
// Rellenar listado factores complejidad
if (casa.TrabajoProfesional.FactoresComplejidad.Count != 0)
{
var listadoBorrar = bd.estadisticasfactores.Where(x => x.idsimulacion == idSimulador).ToList();
bd.estadisticasfactores.RemoveRange(listadoBorrar);
foreach (var factor in casa.TrabajoProfesional.FactoresComplejidad)
{
bd.estadisticasfactores.Add(new estadisticasfactores
{
idsimulacion = idSimulador,
nombre = factor.Nombre,
coeficiente = factor.coeficiente,
tipo = "Complejidad"
});
}
}
// Rellenar listado factores rendimiento
if (casa.TrabajoProfesional.FactoresRendimiento.Count != 0)
{
var listadoBorrar = bd.estadisticasfactores.Where(x => x.idsimulacion == idSimulador).ToList();
bd.estadisticasfactores.RemoveRange(listadoBorrar);
foreach (var factor in casa.TrabajoProfesional.FactoresRendimiento)
{
bd.estadisticasfactores.Add(new estadisticasfactores
{
idsimulacion = idSimulador,
nombre = factor.Nombre,
coeficiente = factor.coeficiente,
tipo = "Rendimiento"
});
}
}
}
private static void mapearEstadisticasLicitacionCASA(tsHerramientasCACOA bd, estadisticas estadistica, LICITACIONES licitacion, int idSimulador)
{
estadistica.idSimulacion = idSimulador;
estadistica.costeHoraDespachoProf = licitacion.costeHoraProduccion;
estadistica.totalSupeficie = licitacion.Usos.Sum(x => x.superficie);
estadistica.totalFases = licitacion.FasesTrabajo.Sum(x=> x.Porcentaje);
estadistica.horasTPE = licitacion.horasProduccion;
estadistica.plazoPresentacion = licitacion.PlazoPresentacionDocumentos;
estadistica.costeProduccion = licitacion.CostesProduccionTrabProf;
estadistica.precioTrabajo = licitacion.PrecioTrabProf;
estadistica.totalOtrosTrabajos = licitacion.TotalOtrosTrabajos;
estadistica.precioEncargo = licitacion.PrecioDelEncargo;
// Rellenar listado usos
if (licitacion.Usos.Count != 0)
{
var listadoBorrar = bd.estadisticasusos.Where(x => x.idSimulacion == idSimulador).ToList();
bd.estadisticasusos.RemoveRange(listadoBorrar);
foreach (var uso in licitacion.Usos)
{
bd.estadisticasusos.Add(new estadisticasusos
{
idSimulacion = idSimulador,
superficie = uso.superficie,
idUso = uso.idGrupoTipologia,
idTipologia = uso.idTipologia,
idIntervencion = uso.idTipoIntervencion
});
}
}
}
private static void mapearEstadisticasURBAN(estadisticas estadistica, URBAN urban, int idSimulador)
{
estadistica.idSimulacion = idSimulador;
estadistica.numeroTrabajadores = urban.DespachoProfesional.Trabajadores.Sum(x => x.NumTrabajadores);
estadistica.totalCosteAnual = urban.DespachoProfesional.CostesDirectosAnuales;
estadistica.costeDirecto = urban.DespachoProfesional.CostesDirectos;
estadistica.costeIndirecto = urban.DespachoProfesional.TasaCostesIndirectos;
estadistica.costeVariable = urban.CostesProduccion.CostesVariables;
estadistica.costeHoraDespachoProf = urban.DespachoProfesional.CosteHoraDespachoProfesional;
//obtener tipodocumento
estadistica.tipoDocumento = urban.Enumerados.TiposDeDocumentos.First(x=> x.idEnumeracion == urban.TrabajoProfesional.idTipoDocumentacion).ValorAlfabetico1;
//obtener documento
var listadoDocumentos = urban.Enumerados.ProyectosPorTipo(urban.TrabajoProfesional.idTipoDocumentacion);
estadistica.documento = listadoDocumentos.First(x=> x.idtipoproyectos == urban.TrabajoProfesional.idTipoProyecto).Descripcion;
//obtener datos necesarios
var listadoDocumentacionNecesaria = urban.TrabajoProfesional.DatosNecesarios;
estadistica.dato1 = listadoDocumentacionNecesaria[0].ValorNecesario.ToString();
estadistica.dato2 = listadoDocumentacionNecesaria[1].ValorNecesario.ToString();
var valorDato3 = listadoDocumentacionNecesaria[2].esCheckbox ? listadoDocumentacionNecesaria[2].esCheckbox.ToString() : listadoDocumentacionNecesaria[2].ValorNecesario.ToString();
if (valorDato3.ToLower().Contains("false"))
{
estadistica.dato3 = "FALSO";
}else if (valorDato3.ToLower().Contains("true"))
{
estadistica.dato3 = "VERDADERO";
}
else
{
estadistica.dato3 = valorDato3.ToString();
}
estadistica.totalFases = urban.TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
estadistica.innovacion = urban.TrabajoProfesional.valorInstrumentos;
estadistica.horasTPE = urban.TrabajoProfesional.horasTrabProfesional;
estadistica.porcentajeExternalizacion = urban.CostesProduccion.CoeficienteCostesExternalizacion;
estadistica.costeHoraExternalizacion = urban.CostesProduccion.CosteHoraExternalizacion;
estadistica.plazoPresentacion = urban.CostesProduccion.PlazoPresentacionDocumentos;
estadistica.costeProduccion = urban.CostesProduccion.CostesProduccionTrabProf;
estadistica.porcentajeBeneficio = urban.CostesProduccion.Beneficio;
estadistica.precioTrabajo = urban.CostesProduccion.PrecioTrabajoProfesional;
}
private static void mapearEstadisticasLicitacionURBAN(estadisticas estadistica, bdHerramientaCACOA.LicitacionesURBAN licitacionUrban, int idSimulador)
{
estadistica.idSimulacion = idSimulador;
estadistica.costeHoraDespachoProf = licitacionUrban.CosteHP;
//obtener tipodocumento
estadistica.tipoDocumento = licitacionUrban.Enumerados.TiposDeDocumentos.First(x => x.idEnumeracion == licitacionUrban.TrabajoProfesional.idTipoDocumentacion).ValorAlfabetico1;
//obtener documento
var listadoDocumentos = licitacionUrban.Enumerados.ProyectosPorTipo(licitacionUrban.TrabajoProfesional.idTipoDocumentacion);
estadistica.documento = listadoDocumentos.First(x => x.idtipoproyectos == licitacionUrban.TrabajoProfesional.idTipoProyecto).Descripcion;
//obtener datos necesarios
var listadoDocumentacionNecesaria = licitacionUrban.TrabajoProfesional.DatosNecesarios;
estadistica.dato1 = listadoDocumentacionNecesaria[0].ValorNecesario.ToString();
estadistica.dato2 = listadoDocumentacionNecesaria[1].ValorNecesario.ToString();
var valorDato3 = listadoDocumentacionNecesaria[2].esCheckbox ? listadoDocumentacionNecesaria[2].esCheckbox.ToString() : listadoDocumentacionNecesaria[2].ValorNecesario.ToString();
if (valorDato3.ToLower().Contains("false"))
{
estadistica.dato3 = "FALSO";
}
else if (valorDato3.ToLower().Contains("true"))
{
estadistica.dato3 = "VERDADERO";
}
else
{
estadistica.dato3 = valorDato3.ToString();
}
estadistica.totalFases = licitacionUrban.TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje);
estadistica.innovacion = licitacionUrban.TrabajoProfesional.valorInstrumentos;
estadistica.horasTPE = licitacionUrban.TrabajoProfesional.horasTrabProfesional;
estadistica.plazoPresentacion = licitacionUrban.PlazoPresentacionDocumentos;
estadistica.costeProduccion = licitacionUrban.CostesProduccionTrabProf;
estadistica.precioTrabajo = licitacionUrban.PrecioDelTrabajo;
}
public static double? comprobarNull(double? dato, int cantidadProyecto)
{
double? datoFinal = null;
if (dato != null)
{
datoFinal = dato / cantidadProyecto;
}
return datoFinal;
}
public static bool comprobarFechas(DateTime fechaInicio, DateTime fechaFinal)
{
bool fechaValida = false;
if (fechaFinal.Date >= fechaInicio.Date)
{
fechaValida = true;
}
return fechaValida;
}
public static bool comprobarFechasNulas(DateTime? fechaInicio, DateTime? fechaFinal)
{
bool fechaValida = false;
if (fechaFinal != null && fechaInicio != null)
{
fechaValida = true;
}
return fechaValida;
}
public static List<EstadistiaHerraCasaVM> rellenarListadoCASA(List<bdHerramientaCACOA.db.estadisticas> listadoEstadistica)
{
List<EstadistiaHerraCasaVM> listadoEstadisticasExcel = new List<EstadistiaHerraCasaVM> ();
foreach (estadisticas estadistica in listadoEstadistica)
{
listadoEstadisticasExcel.Add(new EstadistiaHerraCasaVM
{
idSimulacion = estadistica.idSimulacionNavigation?.Descripcion,
numeroTrabajadores = estadistica.numeroTrabajadores,
costeAnualTotal = estadistica.totalCosteAnual,
horasProduccion = estadistica.horasProduccion,
costesDirectos = estadistica.costeDirecto,
costesIndirectos = estadistica.costeIndirecto,
costesVariables = estadistica.costeVariable,
costeDespacho = estadistica.costeHoraDespachoProf,
totalSuperficie = estadistica.totalSupeficie,
porcentajeFases = estadistica.totalFases,
horasDocumentacion = estadistica.horasTPEDocumentacion,
horasDireccionObra = estadistica.horasTPEDireccionObra,
horasTrabajo = estadistica.horasTPE,
porcentajeExternalizacion = estadistica.porcentajeExternalizacion,
costeExternalizacion = estadistica.costeHoraExternalizacion,
plazoPresentacion = estadistica.plazoPresentacion,
costeProduccion = estadistica.costeProduccion,
beneficio = estadistica.porcentajeBeneficio,
precioTrabajo = estadistica.precioTrabajo,
totalOtrosTrabajos = estadistica.totalOtrosTrabajos,
precioEncargo = estadistica.precioEncargo
});
}
return listadoEstadisticasExcel;
}
public static List<EstadisticaUsosVM> rellenarListadoUsos(tsHerramientasCACOA bd, List<bdHerramientaCACOA.db.estadisticasusos> listadoEstadisticaUsos)
{
List<EstadisticaUsosVM> listadoEstadisticasUsosExcel = new List<EstadisticaUsosVM>();
foreach (estadisticasusos estadistica in listadoEstadisticaUsos)
{
listadoEstadisticasUsosExcel.Add(new EstadisticaUsosVM
{
idSimulacion = estadistica.idSimulacionNavigation?.Descripcion,
superficie = estadistica.superficie,
uso = bd.enumeraciones.First(x=> x.idEnumeracion == estadistica.idUso).ValorAlfabetico1,
tipologia = bd.tipologias.First(x=> x.idtipologia == estadistica.idTipologia).Descripcion,
intervencion = bd.enumeraciones.First(x=> x.idEnumeracion == estadistica.idIntervencion).ValorAlfabetico1,
});
}
return listadoEstadisticasUsosExcel;
}
public static List<EstadisticasFactoresVM> rellenarListadoFactores(tsHerramientasCACOA bd, List<bdHerramientaCACOA.db.estadisticasfactores> listadoEstadisticaFactores)
{
List<EstadisticasFactoresVM> listadoEstadisticaFactoresExcel = new List<EstadisticasFactoresVM>();
foreach (estadisticasfactores estadistica in listadoEstadisticaFactores)
{
listadoEstadisticaFactoresExcel.Add(new EstadisticasFactoresVM
{
idSimulacion = estadistica.idsimulacionNavigation?.Descripcion,
nombre = estadistica.nombre,
coeficiente =estadistica.coeficiente,
tipo = estadistica.tipo
});
}
return listadoEstadisticaFactoresExcel;
}
public static List<EstadisticasUrbanVM> rellenarListadoURBAN(tsHerramientasCACOA bd, List<bdHerramientaCACOA.db.estadisticas> listadoEstadisticaUrban)
{
List<EstadisticasUrbanVM> listadoEstadisticasUrbanExcel = new List<EstadisticasUrbanVM>();
foreach (estadisticas estadistica in listadoEstadisticaUrban)
{
listadoEstadisticasUrbanExcel.Add(new EstadisticasUrbanVM
{
idSimulacion = estadistica.idSimulacionNavigation?.Descripcion,
numeroTrabajadores = estadistica.numeroTrabajadores,
costeAnualTotal = estadistica.totalCosteAnual,
horasProduccion = estadistica.horasProduccion,
costesDirectos = estadistica.costeDirecto,
costesIndirectos = estadistica.costeIndirecto,
costesVariables = estadistica.costeVariable,
costeDespacho = estadistica.costeHoraDespachoProf,
tipoDocumento = estadistica.tipoDocumento,
documento = estadistica.documento,
dato1 = estadistica.dato1,
dato2 = estadistica.dato2,
dato3 = estadistica.dato3,
porcentajeFases = estadistica.totalFases,
innovacion = estadistica.innovacion,
horasTrabajo = estadistica.horasTPE,
porcentajeExternalizacion = estadistica.porcentajeExternalizacion,
costeExternalizacion = estadistica.costeHoraExternalizacion,
plazoPresentacion = estadistica.plazoPresentacion,
costeProduccion = estadistica.costeProduccion,
beneficio = estadistica.porcentajeBeneficio,
precioTrabajo = estadistica.precioTrabajo,
});
}
return listadoEstadisticasUrbanExcel;
}
}
}