//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);
            }
        }
Пример #2
0
        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);
            }
        }
Пример #4
0
 public JerarquiaController()
 {
     _repository = new JerarquiaRepository();
 }