using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Threading.Tasks; using bdHerramientaCACOA.db; using bdHerramientaCACOA.extensiones; using bdHerramientaCACOA.HerramientaUrban; using static bdHerramientaCACOA.CASA; using static bdHerramientaCACOA.HerramientaURBAN.URBAN; using static bdHerramientaCACOA.LICITACIONES; namespace bdHerramientaCACOA { public class LicitacionesURBAN { public string NombreSimulacion { get; set; } = "Licitación Urbanismo " + DateTime.Now; public List ListaConvenioColectivo { get; set; } = new List(); public List ListaSolvenciaTecnica { get; set; } = new List(); //public int minimoGradoSuperior { get; set; } = 1; //public int minimoGradoMedio { get; set; } = 0; public string idProvincia { get; set; } = ""; public int idGradSup { get; set; } = 0; public int idGradMed { get; set; } = 0; public int idDelin { get; set; } = 0; public double PlazoPresentacionDocumentos { get; set; } = 6; public double CosteHP { get; set; } = 0; public double CostesProduccionTrabProf { get; set; } = 0; public double Beneficio { get; set; } = 19; public double PrecioDelTrabajo { get; set; } = 0; public bool EsPorUsos { get; set; } = true; private URBANTrabajoProfesional _TrabajoProfesional = new URBANTrabajoProfesional(); public URBANTrabajoProfesional TrabajoProfesional { get { return _TrabajoProfesional; } set { _TrabajoProfesional = value; } } public EnumeradosLicitacionesURBAN Enumerados { get; set; } = new EnumeradosLicitacionesURBAN(); public VariablesLICITACIONES Variables { get; set; } = new VariablesLICITACIONES(); public class EnumeradosLicitacionesURBAN { public List PuntosInformacion { get; set; } = new List(); public List ListaConvenioColectivo { get; set; } = new List(); public List ListaCDCI { get; set; } = new List(); public List TiposDeDocumentos { get; set; } = new List(); public List FasesTrabajo { get; set; } = new List(); public List TiposProyecto { get; set; } = new List(); public List TipoProy_Documentacion { get; set; } = new List(); public List documentacion { get; set; } = new List(); public List ProyectosPorTipo(int idTipoDocumento) { return TiposProyecto.Where(x => x.idTipoDocumento == idTipoDocumento).ToList(); } public List ListaInstrumentos { get; set; } = new List(); public List ListaGrupoTrabajadores { get; set; } = new List(); } public class VariablesLICITACIONES { public double CostesVariables { get; set; } = 0.035; public int JornadaLaboral { get; set; } = 1800; public int HorasProduccionMedia { get; set; } = 80; public double IPCCosteIndirecto { get; set; } = 1; } public void CargarVariables(bdHerramientaCACOA.dbcontext.tsHerramientasCACOA bd) { Variables.CostesVariables = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.COSTESVARIABLES").ValorNumerico1; Variables.JornadaLaboral = (int)bd.enumeraciones.First(x => x.Codigo == "VARCASA.JORLABANUAL").ValorNumerico1; Variables.HorasProduccionMedia = (int) bd.enumeraciones.First(x => x.Codigo == "VARCASA.HORPRODMEDIA").ValorNumerico1; Variables.IPCCosteIndirecto = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.IPCCD").ValorNumerico1; Beneficio = (double)bd.enumeraciones.First(x => x.Codigo == "VARCASA.GG+BI").ValorNumerico1; idGradSup = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.TECGRADSUP").idEnumeracion; idGradMed = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.GESTPROY").idEnumeracion; idDelin = bd.enumeraciones.First(x => x.Codigo == "PUESTOTRABAJO.DELINPROY").idEnumeracion; } public void CargarEnumerados(dbcontext.tsHerramientasCACOA bd) { var grupoPuestoTrabajo = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "PUESTOTRABAJO"); Enumerados.ListaGrupoTrabajadores = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoPuestoTrabajo.idGrupoEnumeracion).ToList()); var grupoTipDocumento = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "TIPODOCU"); Enumerados.TiposDeDocumentos = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoTipDocumento.idGrupoEnumeracion).ToList()); var grupoInstrumentos = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "INNINSTR"); if(Enumerados.ListaInstrumentos.Count == 0) { Enumerados.ListaInstrumentos = ListaEnumeracionCASA(bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoInstrumentos.idGrupoEnumeracion).ToList()); } List lp = bd.tipoproyectos.ToList(); List lpu = new List(); foreach (tipoproyectos tp in lp) { tipoproyectosURBAN tpu = new tipoproyectosURBAN(); tpu.idtipoproyectos = tp.idtipoproyectos; tpu.idTipoDocumento = tp.idTipoDocumento; tpu.Descripcion = tp.Descripcion; tpu.Abreviatura = tp.Abreviatura; lpu.Add(tpu); } Enumerados.TiposProyecto = lpu; List ltpd = bd.tipoproyecto_documentacion.ToList(); List ltpdu = new List(); foreach (tipoproyecto_documentacion tpd in ltpd) { tipoproyecto_documentacionURBAN tpdu = new tipoproyecto_documentacionURBAN(); tpdu.idtipoproyecto_documentacion = tpd.idtipoproyecto_documentacion; tpdu.idtipoproyecto = tpd.idtipoproyecto; tpdu.iddocumentacion = tpd.iddocumentacion; tpdu.esMinima = tpd.esMinima; tpdu.esOpcional = tpd.esOpcional; tpdu.esNecesario = tpd.esNecesario; ltpdu.Add(tpdu); } Enumerados.TipoProy_Documentacion = ltpdu; Enumerados.documentacion = documentacionAUrban(bd.documentacion.ToList()); //Esto es para la tabla de CDCI matematica, en configuracion puede verse como "calculo CD+CI" var lisConvCol = bd.conveniocolectivo.ToList(); Enumerados.ListaConvenioColectivo = ListaConvenioColectivoCASA(lisConvCol); Enumerados.ListaCDCI = CalcularTabla(""); } public void RellenarCamposExtra(dbcontext.tsHerramientasCACOA bd) { CargarVariables(bd); CargarEnumerados(bd); //Cargamos las Fases var grupoFases = bd.gruposenumeraciones.FirstOrDefault(x => x.Grupo == "FASURB"); var listaFases = bd.enumeraciones.Where(x => x.idGrupoEnumeracion == grupoFases.idGrupoEnumeracion).ToList(); foreach (enumeraciones enu in listaFases) { if (!TrabajoProfesional.FasesTrabajoProfesional.Any(x => x.idFase == enu.idEnumeracion)) { FasesURBAN ft = new FasesURBAN(); ft.idFase = enu.idEnumeracion; ft.Codigo = enu.Codigo; ft.Denominacion = enu.ValorAlfabetico1; ft.Porcentaje = (double)enu.ValorNumerico1; TrabajoProfesional.FasesTrabajoProfesional.Add(ft); } } checkListFasesURBAN(listaFases); Enumerados.PuntosInformacion = bd.puntosinformacion.Where(x => x.idTipoHerramienta == 35).ToList(); Enumerados.FasesTrabajo = JsonSerializer.Deserialize>(JsonSerializer.Serialize(TrabajoProfesional.FasesTrabajoProfesional)); } private void checkListFasesURBAN(List listaFases) { var itemsAEliminar = TrabajoProfesional.FasesTrabajoProfesional .Where(item => !listaFases.Any(x => x.idEnumeracion == item.idFase)) .ToList(); foreach (var item in itemsAEliminar) { TrabajoProfesional.FasesTrabajoProfesional.Remove(item); } } public void CalcularLicitacion() { var horasAnualesDes = Math.Round(TrabajoProfesional.horasTrabProfesional * 12 / PlazoPresentacionDocumentos,2,MidpointRounding.AwayFromZero); var CD = ObtenerCDTabla(horasAnualesDes); var CI = ObtenerCITabla(horasAnualesDes); var CV = 0.025; CosteHP = ((CD+CI)*(1+CV)).DosDecimales(); CostesProduccionTrabProf = (TrabajoProfesional.horasTrabProfesional*CosteHP).DosDecimales(); //Beneficio = 0.19; PrecioDelTrabajo = (CostesProduccionTrabProf*(1+(Beneficio/100))).DosDecimales(); } private double ObtenerCDTabla(double horas) { double valor = 0; var a = Enumerados.ListaCDCI.OrderByDescending(x => x.NumeroTrabajadores); if (Enumerados.ListaCDCI.Count > 0) { valor = a.First().CostesDirectos; if (a.Count() > 0) { foreach (CosteDirectoIndirecto cdp in a) { if (horas <= cdp.HorasProduccionAnuales) { valor = cdp.CostesDirectos; } } } } return valor; } private double ObtenerCITabla(double horas) { double valor = 0; var a = Enumerados.ListaCDCI.OrderByDescending(x => x.NumeroTrabajadores); if (Enumerados.ListaCDCI.Count > 0) { valor = a.First().CostesIndirectos; if (a.Count() > 0) { foreach (CosteDirectoIndirecto cdp in a) { if (horas <= cdp.HorasProduccionAnuales) { valor = cdp.CostesIndirectos; } } } } return valor; } public void ActualizarDocumentacionOpcional(DocumentacionURBAN doc) { int indice = TrabajoProfesional.DocumentacionOpcional.ToList().IndexOf(doc); TrabajoProfesional.DocumentacionOpcional[indice] = doc; CalcularHorasTrabajoProfesional(); } public void ActualizarDatoNecesario(DocumentacionURBAN doc) { int indice = TrabajoProfesional.DatosNecesarios.ToList().IndexOf(doc); TrabajoProfesional.DatosNecesarios[indice] = doc; CalcularHorasTrabajoProfesional(); } public void CalcularHorasTrabajoProfesional() { if (EsPorUsos) { double valorhoras = ObtenerHoraTipoDocumento(); double totalEncargo = TrabajoProfesional.FasesTrabajoProfesional.Sum(x => x.Porcentaje); double porcentajeInnovacion = TrabajoProfesional.valorInstrumentos; TrabajoProfesional.horasTrabProfesional = (valorhoras * (totalEncargo / 100) * (porcentajeInnovacion / 100)).DosDecimales(); TrabajoProfesional.horasTrabProfesionalEstimacion = TrabajoProfesional.horasTrabProfesional; } else { } CalcularLicitacion(); } public double ObtenerHoraTipoDocumento() { int datos = TrabajoProfesional.DatosNecesarios.Count; var colcoef = "?"; var formHP = "?"; double TPCOEF1 = obtenerTPCOEF1(); double TPCOEF2 = 0; if (TrabajoProfesional.DatosNecesarios.Count >= 2) { if (TrabajoProfesional.DatosNecesarios[1].esCheckbox) { if (TrabajoProfesional.DatosNecesarios[1].Checkeada) { TPCOEF2 = TrabajoProfesional.DatosNecesarios[1].CoefHoras; } } else { double TPdato2 = TrabajoProfesional.DatosNecesarios[1].ValorNecesario; TPCOEF2 = TrabajoProfesional.DatosNecesarios[1].CoefHoras * TPdato2; } } double TPCOEF3 = 0; if (TrabajoProfesional.DatosNecesarios.Count >= 3) { if (TrabajoProfesional.DatosNecesarios[2].Checkeada) { TPCOEF3 = TrabajoProfesional.DatosNecesarios[2].CoefHoras; } } return ((TPCOEF1 + TPCOEF2) * (1 + TPCOEF3)).DosDecimales(); } public double obtenerTPCOEF1() { if (TrabajoProfesional.idTipoProyecto != 0) { int minimo = TrabajoProfesional.DocumentacionMinima.Count; int opciones = TrabajoProfesional.DocumentacionOpcional.Count; int opcSel = TrabajoProfesional.DocumentacionOpcional.Where(x => x.Checkeada == true).Count(); string abreviatura = Enumerados.TiposProyecto.First(x => x.idtipoproyectos == TrabajoProfesional.idTipoProyecto).Abreviatura; double TPdato1 = TrabajoProfesional.DatosNecesarios[0].ValorNecesario; double formDato1 = 0; if (TPdato1 != 0) { switch (abreviatura) { case "PGOM": if (TPdato1 < 1) { formDato1 = 0.7 * 77.14; } else { formDato1 = 0.7 * (95.413 * Math.Pow(TPdato1, -0.328)); } break; case "POI": if (TPdato1 > 50) { formDato1 = 70.6; } else { formDato1 = 56.703 * Math.Pow(TPdato1, 0.0554); } break; case "PBOM": if (TPdato1 < 1) { formDato1 = 0.7 * 77.14; } else { formDato1 = (95.413 * Math.Pow(TPdato1, -0.328)); } break; case "POU": if (TPdato1 < 1) { formDato1 = 0.3 * 77.14; } else { formDato1 = 0.3 * (95.413 * Math.Pow(TPdato1, -0.328)); } break; case "PPO": if (TPdato1 <= 5) { formDato1 = 9.44; } else { if (TPdato1 > 100) { formDato1 = 2.3; } else { formDato1 = 24.911 * Math.Pow(TPdato1, -0.473); } } break; case "PRI": if (TPdato1 <= 5) { formDato1 = 17.08; } else { if (TPdato1 > 100) { formDato1 = 3.67; } else { formDato1 = 50.413 * Math.Pow(TPdato1, -0.524); } } break; case "EO": if (TPdato1 <= 5) { formDato1 = 12.2; } else { if (TPdato1 > 100) { formDato1 = 3.17; } else { formDato1 = 31.953 * Math.Pow(TPdato1, -0.475); } } break; case "PE": if (TPdato1 <= 5) { formDato1 = 6.8; } else { if (TPdato1 > 100) { formDato1 = 1.81; } else { formDato1 = 17.536 * Math.Pow(TPdato1, -0.468); } } break; case "PEP": if (TPdato1 <= 5) { formDato1 = 22.65; } else { if (TPdato1 > 100) { formDato1 = 6; } else { formDato1 = 58.555 * Math.Pow(TPdato1, -0.468); } } break; case "ED": if (TPdato1 < 10) { formDato1 = 10.085 * Math.Pow(TPdato1, -0.4); } else { formDato1 = 4.2; } break; case "CAT": formDato1 = TrabajoProfesional.DatosNecesarios.First().CoefHoras; break; case "PPAR": if (TPdato1 > 50) { formDato1 = 0.88; } else { formDato1 = 4.7193 * Math.Pow(TPdato1, -0.34); } break; case "UE": if (TPdato1 >= 100) { formDato1 = 0.26; } else { formDato1 = 2.1598 * Math.Pow(TPdato1, -0.468); } break; case "PREP": if (TPdato1 >= 100) { formDato1 = 0.94; } else { formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328); } break; case "PNF": if (TPdato1 >= 100) { formDato1 = 0.94; } else { formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328); } break; case "PDCU": if (TPdato1 >= 100) { formDato1 = 0.94; } else { formDato1 = 4.9615 * Math.Pow(TPdato1, -0.328); } break; case "PETC": if (TPdato1 >= 100) { formDato1 = 1.85; } else { formDato1 = 8.97 * Math.Pow(TPdato1, -0.322); } break; case "PU": if (TPdato1 >= 100) { formDato1 = 50; } else { formDato1 = -27.14 * Math.Log(TPdato1) + 189.88; } break; case "POOU": if (TPdato1 >= 100) { formDato1 = 50; } else { formDato1 = -27.14 * Math.Log(TPdato1) + 189.88; } break; case "PDATU": if (TPdato1 <= 100) { formDato1 = 1.65; } else { formDato1 = 25.451 * Math.Pow(TPdato1, -0.328); } break; case "PEAAT": if (TPdato1 <= 1) { formDato1 = 10.14; } else { formDato1 = 13.898 * Math.Pow(TPdato1, -0.383); } break; case "PA": if (TPdato1 <= 1) { formDato1 = 10.14; } else { formDato1 = 13.898 * Math.Pow(TPdato1, -0.383); } break; } } double TPdatoXformula = (TPdato1 * formDato1).DosDecimales(); return ((minimo + (0.5 * opcSel)) * TPdatoXformula).DosDecimales(); } else { return 0; } } public void ActualizarFase(FasesURBAN ft) { int indice = TrabajoProfesional.FasesTrabajoProfesional.ToList().IndexOf(ft); TrabajoProfesional.FasesTrabajoProfesional[indice] = ft; CalcularHorasTrabajoProfesional(); } public List DocumentacionMinima(int idTipoProyecto) { List lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esMinima == true).ToList(); List ldm = new List(); foreach (tipoproyecto_documentacionURBAN tpd in lista) { DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion); ldm.Add(d); } return ldm; } public List DocumentacionOpcional(int idTipoProyecto) { List lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esOpcional == true).ToList(); List ldm = new List(); foreach (tipoproyecto_documentacionURBAN tpd in lista) { DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion); ldm.Add(d); } return ldm; } public List DatosNecesarios(int idTipoProyecto) { List lista = Enumerados.TipoProy_Documentacion.Where(x => x.idtipoproyecto == idTipoProyecto && x.esNecesario == true).ToList(); List ldm = new List(); foreach (tipoproyecto_documentacionURBAN tpd in lista) { DocumentacionURBAN d = Enumerados.documentacion.First(x => x.iddocumentacion == tpd.iddocumentacion); ldm.Add(d); } return ldm; } private List documentacionAUrban(List lista) { var listaDoc = new List(); foreach (var documentacion in lista) { var d = new DocumentacionURBAN(); d.iddocumentacion = documentacion.iddocumentacion; d.Descripcion = documentacion.Descripcion.ToString(); if (documentacion.CoeficienteHoras.HasValue) { d.CoefHoras = (double)documentacion.CoeficienteHoras; } d.esCheckbox = documentacion.Checkeable; listaDoc.Add(d); } return listaDoc; } public List CalcularTabla(string idProvincia) { List listaCDCI = new List(); if (ListaSolvenciaTecnica.Count > 0) { //Obtenemos variables a utilizar if (idProvincia == "") { idProvincia = null; } double ValorTecSuperior = Enumerados.ListaConvenioColectivo.FirstOrDefault(x => x.idProvincia == idProvincia && x.idEnumeracion == idGradSup) != null ? Enumerados.ListaConvenioColectivo.First(x => x.idProvincia == idProvincia && x.idEnumeracion == idGradSup).CosteAnualTrabajador : 0; double ValorTecMedio = Enumerados.ListaConvenioColectivo.FirstOrDefault(x => x.idProvincia == idProvincia && x.idEnumeracion == idGradMed) != null ? Enumerados.ListaConvenioColectivo.First(x => x.idProvincia == idProvincia && x.idEnumeracion == idGradMed).CosteAnualTrabajador : 0; double ValorDelineante = Enumerados.ListaConvenioColectivo.FirstOrDefault(x => x.idProvincia == idProvincia && x.idEnumeracion == idDelin) != null ? Enumerados.ListaConvenioColectivo.First(x => x.idProvincia == idProvincia && x.idEnumeracion == idDelin).CosteAnualTrabajador : 0; ; double masCaro = Math.Max(ValorTecSuperior, Math.Max(ValorTecMedio, ValorDelineante)); double masBarato = Math.Min(ValorTecSuperior, Math.Min(ValorTecMedio, ValorDelineante)); var minimoGradoSuperior = ListaSolvenciaTecnica.Where(x=> x.idConvenioColectivo==idGradSup).Sum(x => x.Cantidad); var minimoGradoMedio = ListaSolvenciaTecnica.Where(x => x.idConvenioColectivo == idGradMed).Sum(x => x.Cantidad); var resto= ListaSolvenciaTecnica.Where(x => x.idConvenioColectivo != idGradMed && x.idConvenioColectivo != idGradSup).Sum(x => x.Cantidad); int minimoTrabajadores = minimoGradoMedio + minimoGradoSuperior + resto; //Se calcula //CosteDirectoIndirecto cdci = new CosteDirectoIndirecto(i, costeMinimo, costeMaximo, Variables.JornadaLaboral, Variables.HorasProduccionMedia, Variables.CostesVariables, Variables.IPCCosteIndirecto); if (minimoTrabajadores == 1 && minimoGradoSuperior == 1) {//Se calcula como siempre, el calculo de licitaciones CASA for (int i = 1; i <= 20; i++) { double costeMinimo = ValorTecSuperior + (masBarato * (i - 1)); double costeMaximo = ValorTecSuperior + (masCaro * (i - 1)); listaCDCI.Add(new CosteDirectoIndirecto(i, costeMinimo, costeMaximo, Variables.JornadaLaboral, Variables.HorasProduccionMedia, Variables.CostesVariables, Variables.IPCCosteIndirecto)); } } else {//Se calcula con minimos, por si ponen minimos en licitaciones URBAN //var resto= minimoTrabajadores-minimoGradoMedio double costeMinimo1 = (ValorTecSuperior * minimoGradoSuperior) + (ValorTecMedio * minimoGradoMedio)+(masBarato * resto); //+ (masBarato * numresto); double costeMaximo1 = (ValorTecSuperior * minimoGradoSuperior) + (ValorTecMedio * minimoGradoMedio)+(masBarato * resto); //+ (masCaro * (numresto)); listaCDCI.Add(new CosteDirectoIndirecto(minimoTrabajadores, costeMinimo1, costeMaximo1, Variables.JornadaLaboral, Variables.HorasProduccionMedia, Variables.CostesVariables, Variables.IPCCosteIndirecto)); for (int i = minimoTrabajadores + 1; i <= 20; i++) { var numresto = i - minimoTrabajadores; double costeMinimo = (ValorTecSuperior * minimoGradoSuperior) + (ValorTecMedio * minimoGradoMedio) + (masBarato * numresto); double costeMaximo = (ValorTecSuperior * minimoGradoSuperior) + (ValorTecMedio * minimoGradoMedio) + (masCaro * (numresto)); listaCDCI.Add(new CosteDirectoIndirecto(i, costeMinimo, costeMaximo, Variables.JornadaLaboral, Variables.HorasProduccionMedia, Variables.CostesVariables, Variables.IPCCosteIndirecto)); } } } return listaCDCI; } public void InsertarSolvenciaTecnica(SolvenciaTecnica ot) { ListaSolvenciaTecnica.Add(ot); Enumerados.ListaCDCI = CalcularTabla(idProvincia); CalcularHorasTrabajoProfesional(); } public void EliminarSolvenciaTecnica(SolvenciaTecnica ot) { ListaSolvenciaTecnica.Remove(ot); Enumerados.ListaCDCI = CalcularTabla(idProvincia); CalcularHorasTrabajoProfesional(); } public void ActualizarSolvenciaTecnica(SolvenciaTecnica ot) { int indice = ListaSolvenciaTecnica.ToList().IndexOf(ot); ListaSolvenciaTecnica[indice] = ot; Enumerados.ListaCDCI = CalcularTabla(idProvincia); CalcularHorasTrabajoProfesional(); } public List ListaConvenioColectivoCASA(List lista) { List lcc = new List(); foreach (conveniocolectivo enu in lista) { lcc.Add(convenioColectivoACASA(enu)); } return lcc; } public ConvenioColectivoConcurso convenioColectivoACASA(conveniocolectivo cc) { return new ConvenioColectivoConcurso() { idConvenioColectivo = cc.idConvenioColectivo, idEnumeracion = cc.idEnumeracion, idProvincia = cc.idProvincia, SalarioBase = cc.SalarioBase, OtrosCostes = cc.OtrosCostes, CosteAnualTrabajador = cc.CosteAnualTrabajador }; } public class SolvenciaTecnica { public int idSolvencia { get; set; } = 0; public int idConvenioColectivo { get; set; } = 0; public string TipoConvenio { get; set; } = ""; public int Cantidad { get; set; } = 0; public string Descripcion { get; set; } = ""; } #region parsearObjetos public List ListaEnumeracionCASA(List lista) { List lu = new List(); foreach (enumeraciones enu in lista) { lu.Add(EnumeracionACASA(enu)); } return lu; } public enumeracionesCASA EnumeracionACASA(enumeraciones enu) { return new enumeracionesCASA() { idEnumeracion = enu.idEnumeracion, idGrupoEnumeracion = enu.idGrupoEnumeracion, Codigo = enu.Codigo, Descripcion = enu.Descripcion, ValorAlfabetico1 = enu.ValorAlfabetico1, ValorAlfabetico2 = enu.ValorAlfabetico2, ValorNumerico1 = enu.ValorNumerico1 }; } #endregion } }