private List <CatalogoCompuestoPOCO> GetTrabajadoresPOCO(int EmpresaSIRCEID, int CentroTrabajoSIRCEID, List <TrabajadorPOCO> listTrabajadores) { List <CatalogoCompuestoPOCO> listCatalogoCompuestoPOCO = new List <CatalogoCompuestoPOCO>(); //Obtengo la clave original de los centros de trabajo del DNE var centrosTrabajoSIRCE = (from lt in listTrabajadores join ect in contexto.CentrosTrabajoSIRCE on lt.CentroTrabajoSIRCEID equals ect.CentroTrabajoSIRCEID select new { CentroTrabajoID = ect.CentroTrabajoID, CentroTrabajoSIRCEID = lt.CentroTrabajoSIRCEID }).Distinct().ToList(); List <int> listCentrosTrabajos = new List <int>(); Dictionary <int, int> dCentrosTrabajo = new Dictionary <int, int>(); foreach (var item in centrosTrabajoSIRCE) { listCentrosTrabajos.Add(item.CentroTrabajoID); dCentrosTrabajo.Add(item.CentroTrabajoSIRCEID, item.CentroTrabajoID); } //Obtengo la clave de la empresa del DNE. int empresaID = contexto.EmpresasSIRCE.FirstOrDefault(x => x.EmpresaSIRCEID == EmpresaSIRCEID).EmpresaID; //Recupero la descripción de los centros de trabajo del DNE List <CentroTrabajoPOCO> listCentroTrabajoPOCO = new List <CentroTrabajoPOCO>(); listCentroTrabajoPOCO = new UtileriaDAT().ConsultarCentrosTrabajoPorEstablecimiento(empresaID, listCentrosTrabajos); foreach (var item in listTrabajadores) { CatalogoCompuestoPOCO catalogoCompuestoPOCO = new CatalogoCompuestoPOCO(); string descripcionCentroTrabajo = string.Empty; //Recupero la descripción del Centro de Trabajo del DNE foreach (KeyValuePair <int, int> centroTrabajoSIRCEID in dCentrosTrabajo) { if (item.CentroTrabajoSIRCEID == centroTrabajoSIRCEID.Key) { descripcionCentroTrabajo = listCentroTrabajoPOCO.FirstOrDefault(x => x.centroTrabajoID == centroTrabajoSIRCEID.Value).centroTrabajoNombre; break; } } catalogoCompuestoPOCO.catalogoID = item.TrabajadorID.ToString() + "|" + item.CentroTrabajoSIRCEID.ToString(); catalogoCompuestoPOCO.catalogoDescripcion = string.Format("{0} - {1} {2} {3} / {4}", item.CURP, item.Nombre, item.ApellidoPaterno, item.ApellidoMaterno, descripcionCentroTrabajo); listCatalogoCompuestoPOCO.Add(catalogoCompuestoPOCO); } return(listCatalogoCompuestoPOCO); }
public List <ListaPOCO> consultarListas(int empresasSIRCEID) { DataTable unidadesResponsables = new UtileriaDAT().ConsultarUnidadesResponsables(); List <CatalogoPOCO> entidades = new UtileriaDAT().ConsultarEntidades(); var listaPOCO = (from l in contexto.Listas join a in contexto.Acuses on l.ListaID equals a.ListaID join ct in contexto.CentrosTrabajoSIRCE on l.CentroTrabajoSIRCEID equals ct.CentroTrabajoSIRCEID join ects in contexto.EmpresaCentrosTrabajoSIRCE on ct.CentroTrabajoSIRCEID equals ects.CentroTrabajoSIRCEID join e in contexto.EmpresasSIRCE on ects.EmpresaSIRCEID equals e.EmpresaSIRCEID join lc in contexto.ListaCentrosTrabajo on l.ListaID equals lc.ListaID into establecimientosTotales where l.Eliminado == false && e.EmpresaSIRCEID == empresasSIRCEID select new ListaPOCO { listaID = l.ListaID, folioEmpresa = l.FolioEmpresa, nombreLista = l.Nombre, fechaPresentacion = (DbFunctions.Right(String.Concat(" ", SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("dd", l.FechaPresentacion))), 2) + "/" + DbFunctions.Right(String.Concat(" ", SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("mm", l.FechaPresentacion))), 2) + "/" + DbFunctions.Right(SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("yyyy", l.FechaPresentacion)), 4) ).Replace(" ", "0"), numeroEstablecimientos = establecimientosTotales.Count(), numeroConstancias = (from c in contexto.Constancias where establecimientosTotales.Select(x => x.ListaCentroTrabajoID).Contains(c.ListaCentroTrabajoID) && c.Eliminado == false select c).Count(), numeroCursos = (from c in contexto.Constancias where establecimientosTotales.Select(x => x.ListaCentroTrabajoID).Contains(c.ListaCentroTrabajoID) && c.Eliminado == false select c).Where(c => c.Eliminado != true).Select(x => x.CursoID).Distinct().Count(), numeroTrabajadores = (from c in contexto.Constancias join t in contexto.Trabajadores on c.TrabajadorID equals t.TrabajadorID where establecimientosTotales.Select(x => x.ListaCentroTrabajoID).Contains(c.ListaCentroTrabajoID) && c.Eliminado == false select t).Where(c => c.Eliminado != true).Select(x => x.CURP).Distinct().Count(), usuarioPresento = l.UsuarioCreacion, unidadResponsableID = l.UnidadResponsableID, folioDC4 = a.FolioDC4, estatusID = l.Estatus, origen = l.Origen, numeroConstanciasTotales = l.NumeroConstancias, fechaCreacion = (DbFunctions.Right(String.Concat(" ", SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("dd", l.FechaCreacion))), 2) + "/" + DbFunctions.Right(String.Concat(" ", SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("mm", l.FechaCreacion))), 2) + "/" + DbFunctions.Right(SqlFunctions.StringConvert((double?)SqlFunctions.DatePart("yyyy", l.FechaCreacion)), 4) ).Replace(" ", "0"), }).Distinct().ToList(); foreach (ListaPOCO item in listaPOCO) { item.estatus = Enumeradores.GetDescription((Enumeradores.EstatusLista)(int.Parse(item.estatusID.ToString()))); item.porcentajeAvance = ((double.Parse(item.numeroConstancias.ToString()) / double.Parse(item.numeroConstanciasTotales.ToString())) * 100).ToString() + '%'; if (item.origen == (byte)Enumeradores.OrigenSIRCE.Internet) { } else if (item.origen == (byte)Enumeradores.OrigenSIRCE.Ventanilla) { item.entidadFederativa = (from ur in unidadesResponsables.AsEnumerable() where ur.Field <int>("unidadResponsableID") == item.unidadResponsableID select ur.Field <string>("entidadDesc")).FirstOrDefault(); } } return(listaPOCO); }