/// <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); } }
/// <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)); }