public async Task <FondoPrograma> GetPP(int id) { try { var entities = await _db.FondoPrograma.AsNoTracking() .Include("PropuestaPorFondo.Propuestas") .Include("ProyectoPorFondo.Proyecto") .Include(e => e.Empresa) .Include(e => e.FuenteFinanciamiento) .Include(e => e.SitioWebFondoPrograma) .Include("TematicaPorFondoPrograma.Tematica") .AsNoTracking().FirstOrDefaultAsync(e => e.FondoProgramaId == id); UORepository unidad = new UORepository(_dbGEN); PersonasRepository persona = new PersonasRepository(_dbGEN); foreach (PropuestaPorFondo objeto in entities.PropuestaPorFondo) { objeto.Propuestas.UnidadOrganizacional = await unidad.UnidadActualWithoutStatus(objeto.Propuestas.UnidadOrganizacionalId); objeto.Propuestas.Personas = await persona.GetById(objeto.Propuestas.ClaveEmpPropuesta); } foreach (ProyectoPorFondo objeto in entities.ProyectoPorFondo) { objeto.Proyecto.UnidadOrganizacional = await unidad.UnidadActualWithoutStatus(objeto.Proyecto.UnidadOrganizacionalId); } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <HttpResponseMessage> ReporteCaratula(String id) { //id de ITF try { ITFCaratula util = new ITFCaratula(); log.Info(new MDCSet(this.ControllerContext.RouteData)); var itf = await dbITF.GetFKs(id); UORepository uo = new UORepository(); var gerencia = await uo.GetById(itf.ClaveUnidadOrganizacional); var division = await uo.GetById(gerencia.padre); itf.NombreUnidadOrganizacional = gerencia.NombreUnidad; itf.NombreUnidadPadre = division.NombreUnidad; var autores = await dbITF.getAllAutoresByInformeTecnicoFinalId(itf.InformeTecnicoFinalId); var resultAutores = util.getAutoresOfList(autores); var docPDF = util.GetITFCaratulaReport(ConfigurationManager.AppSettings["templateITFcaratula"] /*"c:\\adjuntos\\itfCompleto.dotx"*/, itf, id, Request, resultAutores); return(docPDF); } catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e); return(Request.CreateErrorResponse(HttpStatusCode.NotFound, e.Message + " (del ITF " + id + ")")); } }
/// <summary> /// Obtiene lista de propuestas /// </summary> /// <returns>IEnumerable<Propuestas></returns> public async Task <IEnumerable <Propuestas> > GetPropuestas(int anio) { DateTime anioconsulta = new DateTime(anio, 1, 1); DateTime fechafin = anioconsulta.AddYears(1); UORepository uo = new UORepository(_gen); List <int?> empresasenproyectos = _gen.dbSetProyectoGEN .Where(e => e.EmpresaId != null && subprogramas.subprogramas.Contains(e.SubPrograma)) .Select(e => e.EmpresaId).Distinct().Distinct().ToList(); var propuestas = await _gen.dbSetPropuesta.Include(e => e.Empresa) .Where(e => (e.Fecha > anioconsulta && e.Fecha < fechafin) && empresasenproyectos.Contains(e.EmpresaId)) .AsNoTracking().ToListAsync(); var listaunidadesid = propuestas.Select(e => e.UnidadOrganizacionalId).ToList(); IEnumerable <UnidadOrganizacional> unidadorganizacional = await uo.GetAllCollectionMAX(listaunidadesid); foreach (var propuesta in propuestas) { if (propuesta.UnidadOrganizacionalId != null) { propuesta.UnidadOrganizacional = unidadorganizacional .Where(e => e.ClaveUnidad == propuesta.UnidadOrganizacionalId) .FirstOrDefault(); } } return(propuestas); }
public async Task <IHttpActionResult> GetAllLikeNombreWithUnidad2(String id) { try { log.Info(new MDCSet(this.ControllerContext.RouteData), new InfoException(id)); IEnumerable <Proyecto> proyectos = await _proyectosRepo.GetAllLikeNombre(id); UORepository uo = new UORepository(); List <Proyecto> listProy = new List <Proyecto>(proyectos); List <String> unidadesId = listProy.Select(x => x.UnidadOrganizacionalId).ToList(); var unidades = await uo.GetAllByCollectionUnidadId(unidadesId); foreach (var p in proyectos) { p.UnidadOrganizacional = unidades.Find(x => x.ClaveUnidad == p.UnidadOrganizacionalId); //await uo.GetById(p.UnidadOrganizacionalId); } return(Ok(proyectos)); } catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e); return(InternalServerError(e)); } }
public async Task <PlanNegocioEvolutivo> getbyidPropuesta(int id) { try { var entities = await dbGI.DbSetPlanNegocioEvolutivo.AsNoTracking() .Include(x => x.PlanNegocioEvolArchivos) .Include("PlanNegocioEvolArchivos.Adjunto") .Include(x => x.PlanNegocioEvolGerencias) .Include(x => x.PlanNegocioEvolAutores) .Include(x => x.Propuesta) .Include(x => x.Proyecto) .Include(x => x.TipoAccesoGI) .FirstOrDefaultAsync(e => e.PropuestaClave == id); if (entities != null && entities.PlanNegocioEvolGerencias != null) { UORepository uo = new UORepository(); var unidades = await uo.GetAllByCollectionCR(entities.PlanNegocioEvolGerencias.Select(x => x.ClaveUnidad).ToList()); foreach (var u in entities.PlanNegocioEvolGerencias) { var unidad = unidades.Find(x => x.ClaveUnidad.Equals(u.ClaveUnidad)); if (unidad != null) { u.NombreUnidad = unidad.NombreUnidad; } } } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <Competidor> Get(int id) { try { var entities = await _dbComp.Competidor .AsNoTracking() .Include(e => e.Empresa) .Include(e => e.SegmentoMercado) .Include(e => e.LineaDesarrolloTecnologico) .Include(e => e.TamanoEmpresa) .Include("AdjuntoPorCompetidor.Adjunto") .Include("ServicioPorCompetidor.Servicio") .Include("ProductoPorCompetidor.Producto") .FirstOrDefaultAsync(e => e.CompetidorId == id); UORepository uo = new UORepository(_dbGEN); var unidadId = entities.ClaveUnidad; entities.UnidadOrganizacional = await uo.UnidadActualWithoutStatus(unidadId); return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <TecnologiaLicenciada> GetById(int id) { try { var entities = await dbGI.DbSetTecnologiaLicenciada.AsNoTracking() .Include(x => x.Aliado) .Include(x => x.EstadoLicenciamiento) .Include(x => x.ProductoGI) .Include(x => x.Proyecto) .Include(x => x.Gerencias) .Include(x => x.Convenio) .Include("TecnologiaLicenciadaPIDA.DerechosAutor") .Include("TecnologiaLicenciadaPIPIndustrial.PropiedadIndustrial.TipoPropiedadIndustrial") .Include("TecnologiaLicenciadaPIDA.DerechosAutor.Rama") .Include("Pagos.TipoPagos") .Include(x => x.Lecciones) .FirstOrDefaultAsync(e => e.TecnologiaLicenciadaId == id); if (entities != null) { UORepository uniDB = new UORepository(); var unidadesId = entities.Gerencias.Select(x => x.ClaveUnidad).ToList(); var unidades = await uniDB.GetAllByCollectionCR(unidadesId); foreach (var uG in entities.Gerencias) { var unidad = unidades.Find(x => x.ClaveUnidad.Equals(uG.ClaveUnidad)); if (unidad != null) { uG.NombreUnidad = unidad.NombreUnidad; } } } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <ActividadAdicional> GetActByIdFK(int id) { try { var entities = await _db.ActividadAdicional.AsNoTracking() .Include(g => g.AreaActividadAdicional) .Include("Aliado.Empresa") .Include(g => g.PersonalActividadAdicional) .FirstOrDefaultAsync(e => e.ActividadAdicionalId == id); PersonasRepository per = new PersonasRepository(_dbGEN); foreach (PersonalActividadAdicional ppc in entities.PersonalActividadAdicional) { var personaId = ppc.ClavePersona; ppc.Personas = await per.GetById(personaId); } //Obtiene la lista de areas en el convenio var areas = new List <AreaActividadAdicional>(); areas = await(from auo in _db.AreaActividadAdicional where auo.ActividadAdicionalId == id select auo) .AsNoTracking() .ToListAsync(); //Obtiene la lista de uos en las areasConvenio List <String> uos1 = new List <string>(areas.Select(x => x.ClaveUnidad.Trim())); UORepository uo = new UORepository(_dbGEN); List <UnidadOrganizacional> uos = new List <UnidadOrganizacional>(); uos = await uo.GetAllByCollectionCR(uos1); foreach (AreaActividadAdicional ar in entities.AreaActividadAdicional) { var unidadId = ar.ClaveUnidad; ar.UnidadOrganizacional = uos.Find(x => x.ClaveUnidad == unidadId); } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
//hacer esto reduce el performance de las consultas (O_O)!!! public async Task <Convocatoria> GetFKByIdWithGerencia(int id) { try { var entities = await _db.Convocatoria .AsNoTracking() .Include(e => e.SitioWebPorConvocatoria) .Include("ContactoPorConvocatoria.Contacto") //.Include(e => e.PropuestaPorConvocatoria) .Include("PropuestaPorConvocatoria.Propuestas") .Include("ProyectoPorConvocatoria.Proyecto") .Include("AdjuntoPorConvocatoria.Adjunto") .Include("FondoPrograma.FuenteFinanciamiento") .Include("FondoPrograma.Empresa") .Include("FondoPrograma.TematicaPorFondoPrograma.Tematica") .FirstOrDefaultAsync(e => e.ConvocatoriaId == id); UORepository uo = new UORepository(_dbGEN); foreach (ProyectoPorConvocatoria ppc in entities.ProyectoPorConvocatoria) { var unidadId = ppc.Proyecto.UnidadOrganizacionalId; ppc.Proyecto.UnidadOrganizacional = await uo.UnidadActualWithoutStatus(unidadId); } UORepository uo2 = new UORepository(_dbGEN); PersonasRepository per = new PersonasRepository(_dbGEN); foreach (PropuestaPorConvocatoria prpc in entities.PropuestaPorConvocatoria) { var unidadId2 = prpc.Propuestas.UnidadOrganizacionalId; prpc.Propuestas.UnidadOrganizacional = await uo2.UnidadActualWithoutStatus(unidadId2); var personaId = prpc.Propuestas.ClaveEmpPropuesta; prpc.Propuestas.Personas = await per.GetById(personaId); } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <IHttpActionResult> GetAllLikeNombreWithUnidad(String id) { try { log.Info(new MDCSet(this.ControllerContext.RouteData), new InfoException(id)); var proyectos = await _proyectosRepo.GetAllLikeNombre(id); UORepository uo = new UORepository(); foreach (var p in proyectos) { p.UnidadOrganizacional = await uo.GetById(p.UnidadOrganizacionalId); } return(Ok(proyectos)); } catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e); return(InternalServerError(e)); } }
public async Task <Convenio> GetConvByIdFK(int id) { try { var entities = await _db.Convenio.AsNoTracking() .Include("AdjuntoPorConvenio.Adjunto") .Include(g => g.AreaConvenio) .Include(g => g.TipoConvenio) .Include(g => g.AmbitoConv) .Include("Aliado.Empresa") .FirstOrDefaultAsync(e => e.ConvenioId == id); //Obtiene la lista de areas en el convenio var areas = new List <AreaConvenio>(); areas = await(from auo in _db.AreaConvenio where auo.ConvenioId == id select auo) .AsNoTracking() .ToListAsync(); //Obtiene la lista de uos en las areasConvenio List <String> uos1 = new List <string>(areas.Select(x => x.ClaveUnidad.Trim())); UORepository uo = new UORepository(_dbGEN); List <UnidadOrganizacional> uos = new List <UnidadOrganizacional>(); uos = await uo.GetAllByCollectionCR(uos1); foreach (AreaConvenio ar in entities.AreaConvenio) { var unidadId = ar.ClaveUnidad; ar.UnidadOrganizacional = uos.Find(x => x.ClaveUnidad == unidadId); } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <IEnumerable <Iniciativas> > GetProspectosIniciativas() { //DateTime anioconsulta = new DateTime(anio, 1, 1); //DateTime fechafin = anioconsulta.AddYears(1); UORepository uo = new UORepository(_gen); List <int?> empresasenproyectos = _gen.dbSetProyectoGEN .Where(e => e.EmpresaId != null && subprogramas.subprogramas.Contains(e.SubPrograma)) .Select(e => e.EmpresaId).Distinct().Distinct().ToList(); var iniciativas = await _gen.dbSetIniciativa .Where(e => !empresasenproyectos.Contains(e.EmpresaId)) .AsNoTracking().ToListAsync(); var listaunidadesid = iniciativas.Select(e => e.UnidadOrganizacionalId).ToList(); var listaempresaid = iniciativas.Select(e => e.EmpresaId); IEnumerable <UnidadOrganizacional> unidadorganizacional = await uo.GetAllCollectionMAX(listaunidadesid); IEnumerable <Empresa> empresas = await new EmpresasRepository(_cr).GetEmpresasByTrue(); foreach (var iniciativa in iniciativas) { if (iniciativa.UnidadOrganizacionalId != null) { iniciativa.UnidadOrganizacional = unidadorganizacional .Where(e => e.ClaveUnidad == iniciativa.UnidadOrganizacionalId) .FirstOrDefault(); } if (iniciativa.EmpresaId != null) { iniciativa.Empresa = empresas .Where(e => e.EmpresaId == iniciativa.EmpresaId) .FirstOrDefault(); } } return(iniciativas); }
public async Task <IHttpActionResult> GetGerenteAutorizadorByIDITF(string id) { try { log.Info(new MDCSet(this.ControllerContext.RouteData)); var itf = await dbITF.Get(id); UORepository unidad = new UORepository(); var fecha = DateTime.Now; if (itf.FechaPublicacion != null) { fecha = itf.FechaPublicacion.Value; } else { if (itf.AnioElaboracion != null) { new DateTime(itf.AnioElaboracion.Value, 2, 2); } } var uni = await unidad.UnidadByFecha(fecha, itf.ClaveUnidadOrganizacional); if (uni == null) { uni = await unidad.UnidadByFecha(DateTime.Now, itf.ClaveUnidadOrganizacional); } return(Ok(uni)); } catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e); return(InternalServerError(e)); } }
/// <summary> /// Obtiene todos los proyectos con unidad organizacional y empresas respectivas /// </summary> /// <returns>Object[]</returns> public async Task <Object[]> GetTotalProyectos() { try { UORepository uo = new UORepository(_gen); EmpresasRepository emp = new EmpresasRepository(_cr); var proyectos = await _gen.dbSetProyectoGEN.Where(e => e.EmpresaId != null && subprogramas.subprogramas.Contains(e.SubPrograma)).AsNoTracking().ToListAsync(); var unidadesId = proyectos.Select(e => e.UnidadOrganizacionalId).ToList(); Object[] lista = new Object[proyectos.Count]; IEnumerable <UnidadOrganizacional> unidadOrganizacional = await uo.GetAllCollectionMAX(unidadesId); IEnumerable <Empresa> empresas = await emp.GetEmpresas(); foreach (var item in proyectos) { lista[proyectos.IndexOf(item)] = new { cliente = empresas.Where(e => e.EmpresaId == item.EmpresaId).Select(e => e.NombreEmpresa).FirstOrDefault(), proyectoID = item.ProyectoId, nombre = item.Nombre, monto = item.Costo, fInicio = item.FechaInicio, fFinal = item.FechaFin, gerencia = unidadOrganizacional.Where(e => e.ClaveUnidad == item.UnidadOrganizacionalId).Select(e => e.NombreUnidad).FirstOrDefault() }; } return(lista); } catch (Exception e) { throw new Exception(e.Message, e); } }
/// <summary> /// Obtiene proyectos vigentes con unidad organizacional y empresa respectivos /// </summary> /// <returns>IEnumerable<Proyecto></returns> public async Task <IEnumerable <Proyecto> > GetProyectosVigentes() { DateTime hoy = DateTime.Now; UORepository uo = new UORepository(_gen); EmpresasRepository empresasrepo = new EmpresasRepository(_cr); var proyectos = await _gen.dbSetProyectoGEN .Where(e => e.FechaFin > hoy && subprogramas.subprogramas.Contains(e.SubPrograma)) .Include(e => e.UnidadOrganizacionalEmpresas) .AsNoTracking().ToListAsync(); var listaunidadesid = proyectos.Select(e => e.UnidadOrganizacionalId).ToList(); var listaempresasid = proyectos .Where(e => e.EmpresaId != null) .Select(e => e.EmpresaId).ToList(); IEnumerable <Empresa> empresas = await empresasrepo.GetEmpresas(); IEnumerable <UnidadOrganizacional> unidadorganizacional = await uo.GetAllCollectionMAX(listaunidadesid); foreach (var proyecto in proyectos) { if (proyecto.UnidadOrganizacionalId != null) { proyecto.UnidadOrganizacional = unidadorganizacional.Where(e => e.ClaveUnidad == proyecto.UnidadOrganizacionalId).FirstOrDefault(); } if (proyecto.EmpresaId != null) { proyecto.Empresa = empresas.Where(e => e.EmpresaId == proyecto.EmpresaId).FirstOrDefault(); } } return(proyectos.OrderByDescending(e => e.FechaInicio)); }
/// <summary> /// Hace la configuracion para el envio de correos () /// </summary> /// <param name="ToPersonas"> Lista de personas a la cual enviar correos</param> /// <param name="correo"> Objeto de tipo correo con la configuracion basica, es decir, como viene desde el front end</param> /// <param name="conf"> Configuracion default que se tiene para el envio de correos</param> /// <returns>true/false</returns> public async Task <Boolean> Send(List <Personas> ToPersonas, Correo correo, getCorreoConfig conf) { try { var ClaveCopiaEmpleadoSolicitud = correo.ClavePersona; var adminCR = ConfigurationManager.AppSettings["AdministradorCR"]; var admins = await _rolpersonaRepo.GetAllByIdRolCH(adminCR); //Tipos de Correos!!!! // 1) Correo de Notificacion de Solicitud a Administradores de CH // 2) Correo de Aprobacion/Rechazo de Solicitud // 3) Solicitar descarga de insumos de MT List <RolPersona> rolesPersona = new List <RolPersona>(); //Es una lista que se usa para enviar correos a personas que no sean rol 8 (administradores, gerentes, directores, etc) List <Personas> personasList = new List <Personas>(); Personas to = null; //List<Personas> personas = new List<Personas>(); switch (correo.TipoCorreo) { case "1": var adminCH = ConfigurationManager.AppSettings["AdministradorCH"]; if (!String.IsNullOrEmpty(correo.ClavePersona)) { var personaParaSindicato = await _personaRepo.GetById(correo.ClavePersona); correo.Empleado = personaParaSindicato.NombreCompleto; var sindicato = ConfigurationManager.AppSettings["TipoSindicalizado"]; if (!String.IsNullOrEmpty(personaParaSindicato.TipoPersonalId)) { if (personaParaSindicato.TipoPersonalId.Trim().Equals(sindicato)) { adminCH = ConfigurationManager.AppSettings["AdministradorCHsindicato"]; //SE SUPLANTA AL AdministradorCH POR AdministradorCHsindicato } } } var Admin = await _rolpersonaRepo.GetAllByIdRolCH(adminCH); rolesPersona = Admin.ToList(); break; case "2": var Validar = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(Validar); correo.Empleado = Validar.NombreCompleto; if (correo.Descripcion5 != null && Boolean.Parse(correo.Descripcion5)) { var roladminpi = ConfigurationManager.AppSettings["AdministradorPI"]; var adminPI = await _rolpersonaRepo.GetAllByIdRolCH(roladminpi); var c = adminPI.Select(x => x.ClavePersona); var lista = await _personaRepo.GetAllCollectionMAX(new HashSet <string>(c)); personasList.AddRange(lista); } correo.Descripcion5 = ""; break; case "3": var SolicitarAcceso = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(SolicitarAcceso); break; case "NotificacionGerenteviaAdmin": var rol = await _rolpersonaRepo.GetByRolForsolicitud(correo.SeccionID); var persona = await _personaRepo.GetByClave(rol.ClavePersona); var resultado = await _personaRepo.GetResponsableByClaveUnidadWithoutStatus(persona.ClaveUnidad); await _correoRepo.SendNotificacion(correo, resultado.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "SolicitudGerente": //var SolicitarGerente = await _rolpersonaRepo.GetByRolForsolicitud(Convert.ToInt32(correo.Descripcion1)); var claveUnidad = await _personaRepo.GetByClave(correo.ClavePersona); var result = await _personaRepo.GetResponsableByClaveUnidadWithoutStatus(claveUnidad.ClaveUnidad); await _correoRepo.SendNotificacion(correo, result.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "SolicitudGerenteViaProyecto": //var SolicitarGerente = await _rolpersonaRepo.GetByRolForsolicitud(Convert.ToInt32(correo.Descripcion1)); var solicitudgerente = await _personaRepo.GetResponsableByClaveUnidadWithoutStatus(correo.UnidadOrganizacionalId); correo.TipoCorreo = "SolicitudGerente"; await _correoRepo.SendNotificacion(correo, solicitudgerente.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "solicitudDeRevisionITF": break; case "NotificacionesGerente": var claves = correo.ClavePersona.Split(','); foreach (var item in claves) { var NG = await _personaRepo.GetByClave(item); personasList.Add(NG); } break; case "NotificacionResultadoCP": var notificacionCP = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(notificacionCP); break; case "SolicitudCentroPosgrado": var adminCP = ConfigurationManager.AppSettings["AdministradorCP"]; var AdminCP = await _rolpersonaRepo.GetAllByIdRolCH(adminCP); rolesPersona = AdminCP.ToList(); break; case "AprobacionRechazoEnPublicacion": break; case "CreateSolicitudAccesoITF": to = await _personaRepo.GetByClaveWithoutStatus(correo.UnidadOrganizacional.ClaveResponsable); ToPersonas.Add(to); break; case "ApruebaRechazaGerenteITF": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "EnviaSolicituITFRevisionMT": var roladminMT = ConfigurationManager.AppSettings["AdministradorMT"]; var adminMT = await _rolpersonaRepo.GetAllByIdRolCH(roladminMT); foreach (var z in adminMT) { ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(z.ClavePersona)); } break; case "rechazoAccesoAITF": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "AprobacionAccesoAITF": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "NotificationStart": //ToPersonas break; case "accesoGEN": to = await _personaRepo.GetResponsableByClaveUnidadWithoutStatus(correo.UnidadOrganizacionalId); ToPersonas.Add(to); break; case "AceptacionRechazoJefeUnidad": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioCreate": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificaAdmin": var AdminCR = ConfigurationManager.AppSettings["AdministradorCR"]; var AdminCRS = await _rolpersonaRepo.GetAllByIdRolCH(AdminCR); foreach (var item in AdminCRS) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificaAdminAceptada": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificarAdmonRechazoPorInvestigador": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificarAdminPorResponsable": var AdminCRPr = ConfigurationManager.AppSettings["AdministradorCR"]; var adminis = await _rolpersonaRepo.GetAllByIdRolCH(AdminCRPr); foreach (var item in adminis) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificarEspecialistaPorResponsable": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificaAdminRechazo": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "OportunidadNegocioNotificarme": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificar": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarAceptada": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarPorResponsable": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarPorEspecialista": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarEspecialitaAceptada": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarPorUnidad": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarEspecialista": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarUnidad": var fechaActual = DateTime.Now; var UO = await _db.dbSetUnidadOrganizacional.AsNoTracking() .Where(x => x.ClaveResponsable.Equals(correo.ClavePersona) && x.Estado == 1 && x.FechaEfectiva == _db.dbSetUnidadOrganizacional.Where( p => p.FechaEfectiva <= fechaActual && p.ClaveUnidad == x.ClaveUnidad ).Max(e => e.FechaEfectiva)) .FirstOrDefaultAsync(); if (UO != null) { var asstente = await _ctx.Asistente.AsNoTracking() .Where(x => x.ClaveUnidad.Equals(UO.ClaveUnidad) && x.FechaEfectiva == _ctx.Asistente.Where( p => p.FechaEfectiva <= fechaActual && p.ClaveUnidad == x.ClaveUnidad ).Max(e => e.FechaEfectiva)) .FirstOrDefaultAsync(); if (asstente != null) { var corr = await _personaRepo.GetByClaveWithoutStatus(asstente.ClavePersona); correo.Descripcion10 = corr.Correo; } } ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarEmpleado": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioRechazo": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioAcepto": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioAsignarInvestigador": var fechaActualON = DateTime.Now; var UOON = await _db.dbSetUnidadOrganizacional.AsNoTracking() .Where(x => x.ClaveResponsable.Equals(correo.ClavePersona) && x.Estado == 1 && x.FechaEfectiva == _db.dbSetUnidadOrganizacional.Where( p => p.FechaEfectiva <= fechaActualON && p.ClaveUnidad == x.ClaveUnidad ).Max(e => e.FechaEfectiva)) .FirstOrDefaultAsync(); if (UOON != null) { var asstente = await _ctx.Asistente.AsNoTracking() .Where(x => x.ClaveUnidad.Equals(UOON.ClaveUnidad) && x.FechaEfectiva == _ctx.Asistente.Where( p => p.FechaEfectiva <= fechaActualON && p.ClaveUnidad == x.ClaveUnidad ).Max(e => e.FechaEfectiva)) .FirstOrDefaultAsync(); if (asstente != null) { var corr = await _personaRepo.GetByClaveWithoutStatus(asstente.ClavePersona); correo.NombreProyecto = corr.Correo; } } ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarRechazoPorUnidad": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarRechazoPorInvestigador": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "OportunidadNegocioNotificarmeRechazoPorInvestigador": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarAdministrador": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "SeguimientoNotificarResponsable": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarEmpleado": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarEspecialista": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarEstadoEmpleado": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarEstadoResponsable": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "SeguimientoNotificarEstadoAdministrador": foreach (var item in admins) { var person = await _personaRepo.GetByClaveWithoutStatus(item.ClavePersona); ToPersonas.Add(person); } break; case "SeguimientoNotificarEstadoEspecialista": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "RecuperaContrasena": ToPersonas.Add(await _personaRepo.GetByClaveWithoutStatus(correo.ClavePersona)); break; case "MailtoLinkedNetwork": var personasRed = await _personaRepo.getRedPersonas(correo.ClavePersona, new List <String>(conf.subprogramasTecnicos.Split(','))); personasList = new List <Personas>(personasRed); break; case "SolicitudAdminGI": var adminGI = ConfigurationManager.AppSettings["AdministradorGI"]; if (!String.IsNullOrEmpty(correo.ClavePersona)) { var personaParaSindicato = await _personaRepo.GetById(correo.ClavePersona); var sindicato = ConfigurationManager.AppSettings["TipoSindicalizado"]; if (!String.IsNullOrEmpty(personaParaSindicato.TipoPersonalId)) { if (personaParaSindicato.TipoPersonalId.Trim().Equals(sindicato)) { adminGI = ConfigurationManager.AppSettings["AdministradorCHsindicato"]; //SE SUPLANTA AL AdministradorCH POR AdministradorCHsindicato } } } var AdministradorGI = await _rolpersonaRepo.GetAllByIdRolCH(adminGI); rolesPersona = AdministradorGI.ToList(); break; case "NotificacionEvaluadoresIdeaInnovadora": await _correoRepo.SendNotificacion(correo, correo.Descripcion1, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "NotificacionEvaluadoresFI": await _correoRepo.SendNotificacion(correo, correo.Descripcion1, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "RechazarAprobarEditarAdminGI": //Casos en los que el Admin de GI valida/rechaza/regresa solicitudes a los usuarios var Empleado = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(Empleado); if (correo.ClavePersona != correo.Descripcion1) { var Principal = await _personaRepo.GetByClave(correo.Descripcion1); personasList.Add(Principal); } break; case "SolicitudGerenteGI": //En descripcion1 viene la unidad organizacional UORepository unidadRepo = new UORepository(); var unidad = await unidadRepo.UnidadByFecha(DateTime.Now, correo.Descripcion1); var gerente = unidad.Responsable; ToPersonas.Add(gerente); break; case "GINotificacionPeriodoAbierto": UORepository uoDB = new UORepository(); var personasObj = await uoDB.PersonasResponsablesByGetAllUniques(); ToPersonas = new List <Personas>(personasObj); break; case "AprobarRechazarGerenteGI": var EmpleadoGI = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(EmpleadoGI); break; case "AprobarRechazarGerenteGIPNE": var EmpleadoGIPNE = await _personaRepo.GetByClave(correo.ClavePersona); personasList.Add(EmpleadoGIPNE); break; case "NotificarEvaluadores": await _correoRepo.SendNotificacion(correo, correo.Descripcion1, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); break; case "FoliosBusquedas": //folio que se genera cuando se realiza una busqueda de informes tecnicos finales [hasta ahora solo es para ese caso] if (!String.IsNullOrEmpty(correo.copiaMandosMedios)) { var clavesPersonas = correo.copiaMandosMedios.Split(';'); foreach (var p in clavesPersonas) { var investigador = await new PersonasRepository().GetByClave(p); ToPersonas.Add(investigador); //await _correoRepo.SendNotificacion(correo, correos, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } } var empleado = await new PersonasRepository().GetByClave(correo.ClavePersona); ToPersonas.Add(empleado); break; default: throw new Exception("Tipo de correo invalido"); } string correos = ""; ///////////////ADRIAN ENVIO DE ACUERDO A COLLECIONES: if (rolesPersona != null && rolesPersona.Count > 0) { var c = rolesPersona.Select(x => x.ClavePersona); var lista = await _personaRepo.GetAllCollectionMAX(new HashSet <string>(c)); //var corrs= lista.Select(x => x.Correo); var corrs = new HashSet <String>(lista.Select(x => x.Correo)); correos = string.Join(", ", corrs.ToArray()); await _correoRepo.SendNotificacion(correo, correos, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (personasList != null && personasList.Count > 0) //Copia a los autores { var c = personasList.Select(x => x.ClavePersona); //De la lista de personas se obtienen sus correos var lista = await _personaRepo.GetAllCollectionMAX(new HashSet <string>(c)); var corrs = new HashSet <String>(lista.Select(x => x.Correo)); correos = string.Join(", ", corrs.ToArray()); //Se agregan al objeto del correo para su posterior envio //Envio de correos await _correoRepo.SendNotificacion(correo, correos, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (ToPersonas != null) { foreach (var per in ToPersonas) { await _correoRepo.SendNotificacion(per, correo, per.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } } //////////////////ALAN: SECCIÓN DE COPIAS if (correo.TipoCorreo == "1") { var correoCopia = await _personaRepo.GetByClave(ClaveCopiaEmpleadoSolicitud); correo.TipoCorreo = "CopiaCorreoUsuarioAdmin"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "SolicitudGerente" || correo.TipoCorreo == "SolicitudGerenteViaProyecto") { var correoCopia = await _personaRepo.GetByClave(ClaveCopiaEmpleadoSolicitud); correo.TipoCorreo = "CopiaCorreoUsuarioGerente"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "SolicitudCentroPosgrado") // Siguiendo la logica de Alan { var correoCopia = await _personaRepo.GetByClave(ClaveCopiaEmpleadoSolicitud); correo.TipoCorreo = "CopiaSolicitudCentroPosgrado"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "SolicitudAdminGI") { var correoCopia = await _personaRepo.GetByClave(ClaveCopiaEmpleadoSolicitud); correo.TipoCorreo = "CopiaCorreoUsuarioAdminGI"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "SolicitudGerenteGI") { var correoCopia = await _personaRepo.GetByClave(ClaveCopiaEmpleadoSolicitud); correo.TipoCorreo = "CopiaCorreoUsuarioGerenteGI"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "RechazarAprobarEditarAdminGI") { var adminGI = ConfigurationManager.AppSettings["AdministradorGI"]; RolPersona adminGIPersona = await _rolpersonaRepo.GetByRolForsolicitud(Convert.ToInt32(adminGI)); var correoCopia = await _personaRepo.GetByClave(adminGIPersona.ClavePersona); correo.TipoCorreo = "CopiaRechazarAprobarEditarAdminGI"; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } if (correo.TipoCorreo == "AprobarRechazarGerenteGI") // Siguiendo la logica de Alan { var correoCopia = await _personaRepo.GetByClave(correo.Descripcion1); correo.TipoCorreo = "AprobarRechazarGerenteGI"; correo.Empleado = correoCopia.NombreCompleto; await _correoRepo.SendNotificacion(correo, correoCopia.Correo, conf.From, conf.Password, conf.Solicitudes, conf.Subject, conf.host, conf.port, conf.enableSsl, conf.FichaPersonal, conf.EncabezadoImagen, conf.PiePaginaImagen, conf.ServidorDireccion, conf.serverlocal, conf.suplantarCorreoCH, conf.suplantarCorreoCR, conf.suplantarCorreoMT, conf.suplenteCorreoCH, conf.suplenteCorreoCR, conf.suplenteCorreoMT, conf.vCopiaOcultaATecnicosSIGCO, conf.correoTecnicosSIGCO, conf.suplantarCorreoDA, conf.suplantarCorreoPA, conf.suplantarCorreoGI, conf.suplenteCorreoDA, conf.suplenteCorreoPA, conf.suplenteCorreoGI, conf.SolicitudesGI, conf.ideasInnovadoras, conf.suplantarCorreoCP, conf.suplenteCorreoCP); } //////////FIN de copias return(true); } catch (Exception ex) { return(false); } }
public async Task <List <ProyectosFF> > GetConvocatoria(int ConvocatoriaId, string ClaveUnidad, List <ProyectosFF> ProyectosFF) { // List<ProyectosFF> ProyectosFFSelect = new List<ProyectosFF>(); var ProyectoPC = new List <ProyectoPorConvocatoria>(); ProyectoPC = await(from ppc in _db.ProyectoPorConvocatoria where ppc.ConvocatoriaId == ConvocatoriaId select ppc) .Include(e => e.Proyecto) .Include(e => e.Convocatoria) .AsNoTracking() .ToListAsync(); //unidades organizacionales de los proyectos en la convocatoria List <String> uos1 = new List <string>(ProyectoPC.Select(x => x.Proyecto.UnidadOrganizacionalId.Trim())); //Unidades organizacionales de acuerdo a la UO seleccionada en el formulario UORepository uo = new UORepository(_dbGen); var unidades = await uo.GetByIdWithChildren(ClaveUnidad); var unidSel = await uo.UnidadActualWithoutStatus(ClaveUnidad); List <String> uos2 = null; if (ClaveUnidad == "") { uos2 = uos1; } else { uos2 = new List <string>(unidades.Children.Select(x => x.ClaveUnidad)); uos2.Add(unidSel.ClaveUnidad.ToString()); } var ProyectoPCSelect = new List <ProyectoPorConvocatoria>(); foreach (ProyectoPorConvocatoria ppc in ProyectoPC) { var unidadId = ppc.Proyecto.UnidadOrganizacionalId.Trim(); var vigencia = "Inactiva"; if (uos2.Contains(unidadId)) { ProyectosFF obj = new ProyectosFF(); obj.NumProy = ppc.ProyectoId; obj.NombreProy = ppc.Proyecto.Nombre; obj.FInicioProy = ppc.Proyecto.FechaInicio; obj.FTerminoProy = ppc.Proyecto.FechaFin; obj.MontoProy = ppc.Proyecto.Costo; var unid = await uo.UnidadActualWithoutStatus(unidadId); obj.Claveunidad = unidadId; obj.UnidadProy = unid.NombreUnidad; obj.FondoProgramaId = ppc.Convocatoria.FondoProgramaId; var fond = await(from nfond in _db.FondoPrograma where nfond.FondoProgramaId == ppc.Convocatoria.FondoProgramaId select nfond).FirstOrDefaultAsync(); obj.NombreF = fond.NombreFP; obj.FuenteFinanciamientoId = fond.FuenteFinanciamientoId; var fuent = await(from nfue in _db.FuenteFinanciamiento where nfue.FuenteFinanciamientoId == fond.FuenteFinanciamientoId select nfue).FirstOrDefaultAsync(); obj.NombreFF = fuent.NombreFF; //obj.TipoFuenteFinanciamientoId = fuent.TipoFuenteFinanciamientoId; obj.NombreTipoFF = await(from ntfue in _db.TipoFuenteFinanciamiento //where ntfue.TipoFuenteFinanciamientoId == fuent.TipoFuenteFinanciamientoId select ntfue.Nombre).FirstOrDefaultAsync(); obj.ConvocatoriaId = ppc.ConvocatoriaId; obj.NombreC = ppc.Convocatoria.NombreConvocatoria; if (ppc.Convocatoria.FechaTermino > DateTime.Now) { vigencia = "Activa"; } obj.VigenciaC = vigencia; ProyectosFF.Add(obj); } } return(ProyectosFF); }
public UnidadOrganizacionalController() { _personasrepository = new PersonasRepository(); _repository = new UORepository(); }
//public async Task<IEnumerable<LAproy>> OtrosMetodos(){ ... } public async Task <IEnumerable <InformeTecnicoFinal> > getData(DataServerSide ss, int EstadoITFFlujoId) { //EstadoITFFlujoId 4 is pubicado try { var v = (from a in _db.dbSetInformeTFs .Include(x => x.Proyecto.Empresa) .Include(x => x.Proyecto.UnidadOrganizacionalEmpresas) .Include(x => x.LActe) .Include(x => x.LAcap) .Include(x => x.LAproy) .Where(x => x.EstadoITFFlujoId >= EstadoITFFlujoId && (x.LAproyId != null && x.LAproyId > 0)) select a); ss.recordsTotal = v.Count(); //search List <datosCliente> clientes = new List <datosCliente>(); foreach (var obj in v) { if (obj.Proyecto != null) { if (obj.Proyecto.Empresa != null) { string a = obj.Proyecto.Empresa.NombreEmpresa; if (obj.Proyecto.UnidadOrganizacionalEmpresas != null) { a = a + " " + obj.Proyecto.UnidadOrganizacionalEmpresas.NombreUnidad; } a = a.ToLower(); string caduax = ""; caduax = a.Replace("á", "a"); caduax = caduax.Replace("é", "e"); caduax = caduax.Replace("í", "i"); caduax = caduax.Replace("ó", "o"); caduax = caduax.Replace("ú", "u"); caduax = caduax.Replace("\r\n", " "); datosCliente itemCliente = new datosCliente(obj.LAproyId.ToString(), caduax); clientes.Add(itemCliente); } } } if (!string.IsNullOrEmpty(ss.ClaveUnidad)) { UORepository uo = new UORepository(); var uni = await uo.GetByIdWithChildren(ss.ClaveUnidad); HashSet <String> clavesUnidad = null; if (uni.tipoO < 3) { var unidades = uni.Children.Select(x => x.ClaveUnidad).ToList(); clavesUnidad = new HashSet <String>(unidades); var x2 = await uo.GetAllCollectionMAX(clavesUnidad); } else { clavesUnidad = new HashSet <String>(); clavesUnidad.Add(ss.ClaveUnidad); } v = v.Where(e => clavesUnidad.Contains(e.Proyecto.UnidadOrganizacionalId)); } if (!String.IsNullOrEmpty(ss.searchValue)) { var listaPalabrasClave = await GetPalabrasClave(ss.searchValue); var proyecto = await GetJefeProyectoProyectoID(ss.searchValue); List <int?> idSeleccionados = new List <int?>(); foreach (var elemento in clientes) { string cadenabusqueda = elemento.nombreDato; if (cadenabusqueda.IndexOf(ss.searchValue) > 0) { int valor = int.Parse(elemento.idDato); idSeleccionados.Add(valor); } } v = v.Where(e => listaPalabrasClave.Contains(e.LAproyId) || proyecto.Contains(e.LAproyId) || idSeleccionados.Contains(e.LAproyId)); } if (!String.IsNullOrEmpty(ss.palabras)) { var pal = ss.palabras.Split(' '); //foreach (var p in pal) // { var listaPalabrasClave = await GetPalabrasClave(ss.palabras); var listaInsumos = await GetInsumos(ss.palabras); var listaEquipo = await GetEquipo(ss.palabras); var listaGestion = await GetGestion(ss.palabras); var listaCumplimiento = await GetCumplimiento(ss.palabras); v = v.Where(e => listaPalabrasClave.Contains(e.LAproyId) || listaInsumos.Contains(e.LAproyId) || listaEquipo.Contains(e.LAproyId) || listaGestion.Contains(e.LAproyId) || listaCumplimiento.Contains(e.LAproyId)); //} } if (!String.IsNullOrEmpty(ss.proyectoId)) { v = v.Where(e => e.Proyecto.ProyectoId.Equals(ss.proyectoId)); } if (!String.IsNullOrEmpty(ss.EmpresaId)) { v = v.Where(e => e.Proyecto.EmpresaId.ToString().Equals(ss.EmpresaId)); } if (!String.IsNullOrEmpty(ss.NumjefeProyecto)) { v = v.Where(e => e.Proyecto.NumjefeProyecto.Equals(ss.NumjefeProyecto)); } //sort if (!(string.IsNullOrEmpty(ss.sortColumn) && string.IsNullOrEmpty(ss.sortColumnDir))) { //for make sort simpler we will add Syste.Linq.Dynamic reference v = v.OrderBy(ss.sortColumn + " " + ss.sortColumnDir); } ss.recordsFiltered = v.Count(); var entities = await v.Skip(ss.skip).Take(ss.pageSize).AsNoTracking().ToListAsync(); return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <IEnumerable <Insumos> > getData(DataServerSide ss) { try { int EstadoITFFlujoId = 4; var v = (from a in _db.dbSetInsumos .Include(x => x.InformeTecnicoFinal.Proyecto) .Include(x => x.TipoAcceso) .Include(x => x.TipoInsumo) .Where(x => x.InformeTecnicoFinal.EstadoITFFlujoId == EstadoITFFlujoId) select a); ss.recordsTotal = v.Count(); //search if (!string.IsNullOrEmpty(ss.ClaveUnidad)) { UORepository uo = new UORepository(_dbGen); var uni = await uo.GetByIdWithChildren(ss.ClaveUnidad); HashSet <String> clavesUnidad = null; if (uni.tipoO < 3) { var unidades = uni.Children.Select(x => x.ClaveUnidad).ToList(); clavesUnidad = new HashSet <String>(unidades); var x2 = await uo.GetAllCollectionMAX(clavesUnidad); } else { clavesUnidad = new HashSet <String>(); clavesUnidad.Add(ss.ClaveUnidad); } v = v.Where(e => clavesUnidad.Contains(e.InformeTecnicoFinal.Proyecto.UnidadOrganizacionalId)); } //BUSCAR POR if (!String.IsNullOrEmpty(ss.palabras)) { var listaDA0 = await GetPKInsumo(ss.palabras); var listaDA2 = await GetPKInsumoUbicacion(ss.palabras); var listaDA3 = await GetPKInsumoResponsable(ss.palabras); v = v.Where(e => listaDA0.Contains(e.InsumosId) || listaDA2.Contains(e.InsumosId) || listaDA3.Contains(e.InsumosId) ); } if (!String.IsNullOrEmpty(ss.searchValue)) { var p = ss.searchValue; var listaDA0 = await GetPKInsumo(ss.searchValue); var listaDA2 = await GetPKInsumoUbicacion(ss.searchValue); var listaDA3 = await GetPKInsumoResponsable(ss.searchValue); var tipoInsumo = await GetTipoInsumo(ss.searchValue); v = v.Where(e => listaDA0.Contains(e.InsumosId) || listaDA3.Contains(e.InsumosId) || listaDA2.Contains(e.InsumosId) || tipoInsumo.Contains(e.TipoIns) ); } if (!String.IsNullOrEmpty(ss.proyectoId)) { var listaDA0 = await GetDAProyecto(ss.proyectoId); v = v.Where(e => listaDA0.Contains(e.InformeTecnicoFinalId)); } //TIPO DE INSUMO if (!String.IsNullOrEmpty(ss.Tipo)) { var listaDA0 = await GetTipoInsumoID(ss.Tipo); v = v.Where(e => listaDA0.Contains(e.TipoIns)); } if (!String.IsNullOrEmpty(ss.NumjefeProyecto)) { var listaDA0 = await GetJefeProyecto(ss.NumjefeProyecto); v = v.Where(e => listaDA0.Contains(e.InformeTecnicoFinalId)); } //sort if (!(string.IsNullOrEmpty(ss.sortColumn) && string.IsNullOrEmpty(ss.sortColumnDir))) { //for make sort simpler we will add Syste.Linq.Dynamic reference v = v.OrderBy(ss.sortColumn + " " + ss.sortColumnDir); } ss.recordsFiltered = v.Count(); var entities = await v.Skip(ss.skip).Take(ss.pageSize).AsNoTracking().ToListAsync(); return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <IEnumerable <SoftwarePersonal> > getData(DataServerSide ss) { UORepository uo = new UORepository(); try { var v = (from a in _db.dbSetSoftwarePersonal .Include(x => x.Proyecto) .Include(x => x.TipoSoftware) .Include(x => x.Autores) .Include(x => x.DerechosAutor) .Where(x => x.EstadoFlujoId == 3) select a); ss.recordsTotal = v.Count(); if (!string.IsNullOrEmpty(ss.ClaveUnidad)) { //var uni = await uo.GetByIdWithChildren(ss.ClaveUnidad); //HashSet<String> clavesUnidad = null; //if (uni.tipoO < 3) //{ // var unidades = uni.Children.Select(x => x.ClaveUnidad).ToList(); // clavesUnidad = new HashSet<String>(unidades); //} //else //{ // clavesUnidad = new HashSet<String>(); // clavesUnidad.Add(ss.ClaveUnidad); //} v = v.Where(x => x.GerenciaClave == ss.ClaveUnidad); //v = v.Where(e => clavesUnidad.Contains(e.Proyecto.UnidadOrganizacionalId)); } if (!String.IsNullOrEmpty(ss.Titulo)) //busqueda por titulo { var listaDA = await GetPKTitulo(ss.Titulo); v = v.Where(e => listaDA.Contains(e.SoftwarePersonalId)); } if (!String.IsNullOrEmpty(ss.proyectoId)) { var listaDA = await GetDALikeProyecto(ss.proyectoId); v = v.Where(e => listaDA.Contains(e.SoftwarePersonalId)); } //if (!String.IsNullOrEmpty(ss.DerechoAutor)) //{ // var listaDA = await GetPKDerechoAutor(ss.DerechoAutor); // v = v.Where(e => listaDA.Contains(e.SoftwarePersonalId)); //} if (ss.DerechosAutorId != null) { v = v.Where(x => x.DerechosAutorId == ss.DerechosAutorId); } if (!String.IsNullOrEmpty(ss.Tipo)) { v = v.Where(e => e.TipoSoftwareId.ToString().Equals(ss.Tipo)); } if (!String.IsNullOrEmpty(ss.Autor)) { var listaDA = await GetPKAutor(ss.Autor); v = v.Where(e => listaDA.Contains(e.SoftwarePersonalId)); } if (!String.IsNullOrEmpty(ss.searchValue)) { PersonasRepository rp = new PersonasRepository(); var clavesPer = await rp.GetAllClavesByLikeNombreLatin1(ss.searchValue); //var autor= await var softwares = await _db.dbSetAutorSoftware.AsNoTracking() .Where(x => clavesPer.Contains(x.ClaveAutor)) .Select(x => x.SoftwarePersonalId) .ToListAsync(); var listaUnidades = await uo.GetPorNombreUnidad(ss.searchValue); var titulo = await GetPKTitulo(ss.searchValue); var tipoSoftware = await GetPKTipoSoftware(ss.searchValue); var proyecto = await GetProyectos(ss.searchValue); var proyecto2 = await GetProyectos2(ss.searchValue); var listaDA = await GetDerechosAutorByCollate(ss.searchValue); //var listaAutor = await GetProyectos(ss.searchValue); v = v.Where(e => titulo.Contains(e.SoftwarePersonalId) || listaDA.Contains(e.DerechosAutorId) || softwares.Contains(e.SoftwarePersonalId) || listaUnidades.Contains(e.GerenciaClave) || proyecto.Contains(e.ProyectoId) || proyecto2.Contains(e.ProyectoId) || tipoSoftware.Contains(e.TipoSoftwareId) ); } //sort if (!(string.IsNullOrEmpty(ss.sortColumn) && string.IsNullOrEmpty(ss.sortColumnDir))) { //for make sort simpler we will add Syste.Linq.Dynamic reference v = v.OrderBy(ss.sortColumn + " " + ss.sortColumnDir); } ss.recordsFiltered = v.Count(); var entities = await v.Skip(ss.skip).Take(ss.pageSize).AsNoTracking().ToListAsync(); if (entities != null && entities.Count > 0) { AutorSoftwareRepository aut = new AutorSoftwareRepository(_db); var listaSW = entities.Select(x => x.SoftwarePersonalId).ToList(); var clavesAutores = await aut.GetClavesAutorBySoftwarsIdCollection(listaSW); HashSet <String> clavesEmpleado = new HashSet <string>(clavesAutores); PersonasRepository p = new PersonasRepository(); var personas = await p.GetAllCollectionMAXTodos(clavesEmpleado); List <Personas> pers = personas.ToList(); //var unidadesOrgs = (await uo.GetAllCollectionMAX(entities.Where(x => x.Proyecto != null).Select(x => x.Proyecto.UnidadOrganizacionalId).ToList())).ToList(); foreach (var e in entities) { foreach (var a in e.Autores) { try { string cad = a.ClaveAutor.Trim(); a.ClaveAutor = a.ClaveAutor.Trim(); a.NombreCompleto = pers.Find(x => x.ClavePersona == cad).NombreCompleto; } catch (Exception ex) { } } if (e.GerenciaClave != null) { e.NombreUnidadOrganizacional = await uo.GetNameById(e.GerenciaClave); } } } return(entities); } catch (Exception e) { throw new Exception(e.Message, e); } }