/// <summary>
        ///
        /// </summary>
        /// <param name="userId">ID Usuário logado</param>
        /// <param name="groupId">ID Grupo usuário logado</param>
        /// <param name="ltSystem">Filtro: Lista de sistemas da qual o usuário logado tem permissão</param>
        /// <param name="ltGroup">Filtro: Lista de grupos de mesma visão ou abaixo do usuário logado</param>
        /// <param name="ltAdministrativeUnit">Filtro: Lista de unidades administrativas que o usuário logado possui permissão</param>
        /// <returns></returns>
        public IEnumerable <User> GetByVisionAll(Guid userId, Guid groupId, IEnumerable <int> ltSystem, IEnumerable <Guid> ltGroup, IEnumerable <Guid> ltSchoolSuperior, IEnumerable <Guid> ltSchoolUA)
        {
            SchoolRepository   school         = new SchoolRepository();
            IEnumerable <Guid> ltAUPermission = school.GetAUByPermission(userId, groupId, ltSchoolSuperior, null, ltSchoolUA);

            using (var context = new SqlConnection(stringConnection))
            {
                StringBuilder sb = new StringBuilder();
                sb.Append(@"SELECT
                    DISTINCT
                    ug.usu_id as Id 
                    FROM (
                    
                    SELECT  g.sis_id 
                    FROM SYS_UsuarioGrupo AS UG WITH(NOLOCK)
                    INNER JOIN SYS_Grupo AS G WITH(NOLOCK) ON UG.gru_id = G.gru_id 

                    WHERE 
                    UG.usg_situacao <> 3 AND G.gru_situacao <> 3 
                    AND UG.usu_id = @usu_idLogado ");

                if (ltSystem != null && ltSystem.Any())
                {
                    sb.Append(" AND G.sis_id IN @idsSistema");
                }

                sb.Append(@" GROUP BY sis_id) AS T1
                    INNER JOIN SYS_Grupo AS G WITH(NOLOCK) on t1.sis_id = g.sis_id and g.gru_situacao<>3
                    INNER JOIN SYS_UsuarioGrupo AS UG WITH(NOLOCK) on UG.gru_id = G.gru_id AND ug.usg_situacao<>3
                    INNER JOIN SYS_UsuarioGrupoUA AS UGUA WITH(NOLOCK) ON UGUA.gru_id = UG.gru_id AND UGUA.usu_id = UG.usu_id

                    WHERE
                     (g.vis_id >= (SELECT vis_id FROM SYS_Grupo as gruLogado WITH(NOLOCK) where gruLogado.gru_id=@gru_idLogado))");

                if (ltGroup != null && ltGroup.Any())
                {
                    sb.Append(@" AND g.gru_id in  @idsGrupo");
                }

                //Buscar todas uad's que ele possui permissão, incluindo uad's filhas (se houverem)
                sb.Append(@" AND ugua.uad_id IN @idsUADPermissao ");

                var query = context.Query <User>(
                    sb.ToString()
                    ,
                    new { usu_idLogado      = userId
                          , gru_idLogado    = groupId
                          , idsSistema      = ltSystem
                          , idsGrupo        = ltGroup
                          , idsUADPermissao = ltAUPermission
                          , idsDRE          = ltSchoolSuperior
                          , idsUAD          = ltSchoolUA });
                return(query);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Constrói uma lista de Unidades administrativas (escolas) filhas baseadas na(s) DRE(s) passada(s) por parâmetro.
        /// Caso venha nulo, busca todas que o usuário logado tenha permissão.
        /// </summary>
        /// <param name="userId">id usuário logado</param>
        /// <param name="groupId">ig grupo usuário logado</param>
        /// <param name="ltSchoolSuperior">Lista de DRE's</param>
        /// <returns></returns>
        /////
        //[System.Obsolete("Método obsoleto, devido à function do coresso. Utilizar GetAUBySuperior") ]
        //public static IEnumerable<Guid> GetAUBySuperior(Guid userId, Guid groupId, IEnumerable<Guid> ltSchoolSuperior)
        //{
        //    var repository = new SchoolRepository();
        //    return repository.GetAUBySuperior(userId, groupId, ltSchoolSuperior);
        //}

        /// <summary>
        /// Constrói uma lista de Unidades administrativas (escolas) filhas baseadas na(s) DRE(s) passada(s) por parâmetro.
        /// Caso venha nulo, busca todas que o usuário logado tenha permissão.
        /// </summary>
        /// <param name="userId">id usuário logado</param>
        /// <param name="groupId">ig grupo usuário logado</param>
        /// <param name="ltSchoolSuperior">Lista de DRE's</param>
        /// <param name="ltSchool">Lista de UAD's (escolas)</param>
        /// <returns></returns>
        public static IEnumerable <Guid> GetAUByPermission(Guid userId, Guid groupId, IEnumerable <Guid> ltSchoolSuperior = null, IEnumerable <int> ltSchoolID = null, IEnumerable <Guid> ltSchoolUA = null)
        {
            var repository = new SchoolRepository();

            return(repository.GetAUByPermission(userId, groupId, ltSchoolSuperior, ltSchoolID, ltSchoolUA));
        }