//retorna verdadero si la ClavePersona coinside con ClavePersona del registro, alguno de los autores o hiperjefes de los autores public async Task <Boolean> EvidenciaDownload(int idRegistro, String ClavePersona) { try { var entitie = await dbGI.DbSetPlanNegocioEvolutivo.AsNoTracking() .Include(x => x.PlanNegocioEvolAutores) .FirstOrDefaultAsync(e => e.PlanNegocioEvolutivoId == idRegistro); if (entitie.TipoAcceso == 1) { //1: publico return(true); } else { if (entitie.ClavePersona.Equals(ClavePersona)) { return(true); } if (entitie != null && entitie.PlanNegocioEvolAutores != null) { var autor = entitie.PlanNegocioEvolAutores.FirstOrDefault(x => x.ClavePersona.Equals(ClavePersona)); if (autor != null) { return(true); } } else { JerarquiaRepository hiper = new JerarquiaRepository(); Jerarquia jer = new Jerarquia(null, ClavePersona, null); jer.JefeHiperonimo = ClavePersona; var autores = entitie.PlanNegocioEvolAutores.Select(x => x.ClavePersona).ToList(); PersonasRepository dbPers = new PersonasRepository(); var personas = await dbPers.GetAllCollectionWithoutStatus(autores); var unidadesClave = personas.Select(x => x.ClaveUnidad).ToList(); if (unidadesClave != null) { foreach (var u in unidadesClave) { jer.UnidadOrganizacionalId = u; if (await hiper.isJefeHiperonimoByUnidadOrganizacionalId(jer)) { return(true); } } } } } return(false); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <Boolean> EvidenciaDownload(int idRegistro, String ClavePersona) { try { var entitie = await dbGI.DbSetPropuesta.AsNoTracking() .FirstOrDefaultAsync(e => e.Id == idRegistro); if (entitie.TipoAcceso == 1) { //1: publico return(true); } else { if (entitie.ClaveProponentePrincipal.Equals(ClavePersona)) { return(true); } else if (entitie.ClavePersona.Equals(ClavePersona)) { return(true); } else { JerarquiaRepository hiper = new JerarquiaRepository(); Jerarquia jer = new Jerarquia(null, ClavePersona, null); jer.JefeHiperonimo = ClavePersona; jer.UnidadOrganizacionalId = entitie.UnidadOrganizacionalId; return(await hiper.isJefeHiperonimoByUnidadOrganizacionalId(jer)); } } return(false); } catch (Exception e) { throw new Exception(e.Message, e); } }
public async Task <Boolean> EvidenciaDownload(int idRegistro, String ClavePersona) { try { var entitie = await dbGI.DbSetIdeaInnovadora.AsNoTracking() .FirstOrDefaultAsync(e => e.IdeaInnovadoraId == idRegistro); if (entitie.TipoAcceso == 1) { //1: publico return(true); } else { var autores = await dbGI.DbSetAutoresIdea.AsNoTracking() .Where(x => x.IdeaInnovadoraId == entitie.IdeaInnovadoraId && ClavePersona.Equals(x.ClavePersona)) .FirstOrDefaultAsync(); if (autores != null) { return(true); } if (entitie.ClavePersona.Equals(ClavePersona)) { return(true); } else { JerarquiaRepository hiper = new JerarquiaRepository(); Jerarquia jer = new Jerarquia(null, ClavePersona, null); jer.JefeHiperonimo = ClavePersona; var autorPrincipal = await dbGI.DbSetAutoresIdea.AsNoTracking() .Where(x => x.IdeaInnovadoraId == entitie.IdeaInnovadoraId && x.ContribucionProponenteId == 0) .FirstOrDefaultAsync(); if (autorPrincipal != null) { var fechaActual = DateTime.Now; var personaRow = await(from persona in dbGI.DbSetPersonas //Investigadores where persona.ClavePersona == autorPrincipal.ClavePersona && persona.FechaEfectiva == dbGI.DbSetPersonas.Where( p => p.FechaEfectiva <= fechaActual && p.ClavePersona == persona.ClavePersona ).Max(e => e.FechaEfectiva) select persona).FirstOrDefaultAsync(); if (personaRow != null) { jer.UnidadOrganizacionalId = personaRow.ClaveUnidad; return(await hiper.isJefeHiperonimoByUnidadOrganizacionalId(jer)); } else { return(false); } } else { return(false); } } } return(false); } catch (Exception e) { throw new Exception(e.Message, e); } }
public JerarquiaController() { _repository = new JerarquiaRepository(); }