Equipe CCPA
voltar

Selects Comuns
Detalhes
Campos
Professores
Secretárias
Permissões de um usuário
Usuários com uma Permissão
Caminhos a um estado
Uso de Recurso
Identifica recursos mal usados
Alteração nas tabelas
Delete
Controle de Permissões
Afiliados e titulados de instituições
Cursos, áreas de concentração e linhas de pesquisa
Totaliza documentos acadêmicos por ano
Permissões para a Avaliação Quinquenal
Início de cada tipo de processo
Usuários vinculados a órgãos implementadores

Detalhes

Campos

Professores

  • Programa
      SELECT
        u.nome||' ('||u.id||')' as coordenador,
        pro.nome||' ('||pro.id||')' as programa,
        coor.nome||' ('||coor.id_coordenacao||')' as coordenacao
      FROM
        usuario u inner join
        permissao p on (p.id_usuario=u.id) inner join
        recurso r on (p.id_recurso=r.id) left outer join
        programa pro on (p.id_programa=pro.id) left outer join
        coordenacao coor on (p.id_coordenacao=coor.id_coordenacao)
      WHERE
        r.recurso ilike 'an%lise pos programa' OR r.recurso ilike 'indic%professor'
      ORDER BY programa, coordenacao;

  • Setorial
      SELECT
        u.nome||' ('||u.id||')' as coordenador,
        c.nome||' ('||c.id||')' as centro
      FROM
        usuario u inner join
        permissao p on (p.id_usuario=u.id) inner join
        recurso r on (p.id_recurso=r.id) inner join
        usuario_centro uc on (uc.id_usuario=u.id) inner join
        centro c on (uc.id_centro=c.id)
      WHERE
        r.recurso ilike 'an%lise setorial'
      ORDER BY 2;

  • Orientadores
      SELECT
        pr.nome as programa,
        u.nome||'('||u.id||')' AS usuario
      FROM
        usuario u INNER JOIN
        permissao p ON (p.id_usuario=u.id) INNER JOIN
        recurso r ON (p.id_recurso=r.id) INNER JOIN
        nivel_acesso n ON (p.id_nivel=n.id) INNER JOIN
        usuario_programa up ON (u.id=up.id_usuario) INNER JOIN
        programa pr ON (up.id_programa = pr.id)
      WHERE
        recurso = 'Análise Orientador' and nivel = 'Orientandos'
      ORDER BY programa, usuario;

  • Comissão de Seleção
      SELECT
        distinct u.nome||' ('||u.id||')' as professor,
        r.recurso||' ('||r.id||')' as permissao
      FROM
        usuario u INNER JOIN
        permissao p ON (p.id_usuario=u.id) INNER JOIN
        recurso r ON (p.id_recurso=r.id) LEFT OUTER JOIN
        curso c on (p.id_curso=c.id)
      WHERE
        r.recurso ilike '%inscri%' and c.id in (18,42)
      ORDER BY professor, permissao;

  • Secretárias

    Permissões de um Usuário (usuario, recurso, nivel)

    Usuários com uma Permissão
    SELECT
        u.nome||' ('||u.id||')' as usuario
    FROM 
        usuario u INNER JOIN
        permissao per on u.id = per.id_usuario INNER JOIN 
        recurso r on per.id_recurso = r.id 
    WHERE 
        r.recurso = 'XXXX' -- r.id_lua = 'XXXX'
    ORDER BY 1;
          

    Caminhos a um estado

    Uso de Recurso
    Tipos de processo e Fase onde o recurso aparece
    SELECT
    	distinct tp.descricao||' ('||tp.id||')' as tipo,
    	e.descricao||' ('||e.estado||')' as fase
    FROM
    	tipo_processo tp INNER JOIN
    	tipo_processo_campo tpc ON tp.id=tpc.tipo_processo INNER JOIN
    	estado_campo ec USING(tipo_processo,id_campo) INNER JOIN
    	recurso r ON ec.recurso=r.id INNER JOIN
    	estado e USING(tipo_processo,estado)
    WHERE
    	r.recurso = 'XXXX' -- r.id_lua = 'XXX'
    ORDER BY 1,2;
          

    Identifica recursos de análise mal usados
    Recursos de análise só fazem sentido de serem usados nos metadados, pois essa característica (ser de análise) é usada para caracterizar as pendências.
    -- Recursos de análise não usados nos metadados (não precisariam ser de análise)
    SELECT
        r.id, r.recurso
    FROM
        recurso r
    WHERE
        r.analise = true
        AND
        NOT EXISTS (
            SELECT
                true
             FROM
                estado_campo ec INNER JOIN
                tipo_processo tp ON ec.tipo_processo = tp.id
             WHERE
                tp.circulacao not like 'DESATIVADO%'
                AND
                ec.recurso = r.id
        ); 

    Uso de recursos de análise diferentes na mesma fase NÃO É UMA BOA PRÁTICA.
    -- Recursos de análise não usados nos metadados (não precisariam ser de análise)
    SELECT
        DISTINCT tp.id, e.estado, r1.id, r2.id,
        tp.descricao AS tipo,
        e.descricao AS estado,
        r1.recurso AS "recurso 1",
        r2.recurso AS "recurso 2"
    FROM
        tipo_processo tp INNER JOIN
        estado e ON tp.id = e.tipo_processo INNER JOIN
        estado_campo ec1 USING (tipo_processo,estado) INNER JOIN
        recurso r1 ON ec1.recurso = r1.id INNER JOIN
        estado_campo ec2 USING (tipo_processo, estado) INNER JOIN
        recurso r2 ON ec2.recurso = r2.id
    WHERE
        r1.analise = true
        AND
        r2.analise = true
        AND
        r1.id > r2.id
    ORDER BY tp.id, e.estado, r1.id, r2.id;
          
    voltar
    Selects comuns

    Alteração nas tabelas

    Delete

    Controle de Permissões
    voltar

    Instituições: afiliados e titulados
    voltar

    Cursos, áreas de concentração e linhas de pesquisa
    voltar

    Totaliza Documentos Acadêmicos emitidos por ano, agrupados em simples e com aprovação
    SELECT
        extract (year from ultima_alteracao) as ano,
        count(dp.valor like '%,%' or (select true from atestados where id = dp.valor::integer and tipo_atestado = 1)) as "simples",
        count(case when dp.valor not like '%,%' and (select true from atestados where id = dp.valor::integer and tipo_atestado = 2) then true else null end) as "autorizados",
        count(*) as total
    FROM
        processo p INNER JOIN
        detalhe_processo dp ON p.id = dp.id_processo AND dp.id_campo = 10
    WHERE
        p.tipo_processo = 14
        AND
        p.status IN (1,4,5)
        AND
        p.estado IN (6,10)
    GROUP BY extract(year from ultima_alteracao)
    ORDER BY 1;
          
    voltar

    Permissões para Avaliação Quinquenal
    Visibilidade de diretores (que tem permissão para encaminhar para a CSCD).
    SELECT
        u.id,
        u.nome,
        (SELECT descricao FROM tipo_usuario WHERE id = u.tipo),
        un.sigla,
        un.id_unidade,
        (SELECT
             CASE
             WHEN id_nivel = 1 THEN '== Total =='
             WHEN id_nivel = 2 THEN '== Centro =='
             WHEN id_nivel = 5 THEN (SELECT un.nome FROM unidade un WHERE un.id_unidade = per.id_unidade)
             ELSE id_nivel::text END
         FROM
             permissao p2
         WHERE
             p2.id_usuario = u.id AND p2.id_recurso = 164)
    FROM
        usuario u INNER JOIN
        permissao per ON u.id = per.id_usuario INNER JOIN
        unidade un USING(id_unidade)
    WHERE
        per.id_recurso = 157
    ORDER BY sigla;
          
    Visibilidade de decanos (que tem permissão para encaminhar para a CCCD).
    SELECT
        u.id,
        u.nome,
        (SELECT descricao FROM tipo_usuario WHERE id = u.tipo),
        (SELECT
             CASE
             WHEN id_nivel = 1 THEN '== Total =='
             WHEN id_nivel = 2 THEN '== Centro =='
             ELSE id_nivel::text END
         FROM
             permissao p2
         WHERE
             p2.id_usuario = u.id AND p2.id_recurso = 164)
    FROM
        usuario u INNER JOIN
        permissao per ON u.id = per.id_usuario
    WHERE
        per.id_recurso = 159
    ORDER BY u.nome;
          
    Visibilidade de cada professor que está sendo avaliado
    SELECT
        u.id,
        u.nome,
        un.nome,
        (SELECT CASE
             WHEN per.id_nivel = 1 THEN 'Total'
             WHEN per.id_nivel = 2 THEN 'Centro'
             WHEN per.id_nivel = 5 THEN 'Dpto'
             WHEN per.id_nivel = 6 THEN 'Próprio'
             ELSE per.id_nivel::text END
         FROM permissao per
         WHERE per.id_usuario = u.id AND per.id_recurso = 158 order by id_nivel limit 1) as CDCD,
        (SELECT CASE
             WHEN per.id_nivel = 1 THEN 'Total'
             WHEN per.id_nivel = 2 THEN 'Centro'
             WHEN per.id_nivel = 5 THEN 'Dpto'
             WHEN per.id_nivel = 6 THEN 'Próprio'
             ELSE per.id_nivel::text END
         FROM permissao per
         WHERE per.id_usuario = u.id AND per.id_recurso = 164 order by id_nivel limit 1) as CSCD,
        (SELECT CASE
             WHEN per.id_nivel = 1 THEN 'Total'
             WHEN per.id_nivel = 2 THEN 'Centro'
             WHEN per.id_nivel = 5 THEN 'Dpto'
             WHEN per.id_nivel = 6 THEN 'Próprio'
             ELSE per.id_nivel::text END
         FROM permissao per
         WHERE per.id_usuario = u.id AND per.id_recurso = 165 order by id_nivel limit 1) as CCCD
    FROM
        usuario u INNER JOIN
    	usuario_unidade uun ON u.id = uun.id_usuario INNER JOIN
    	unidade un USING (id_unidade) INNER JOIN
        processo p ON u.id = p.id_usuario
    WHERE
        p.tipo_processo = 71
    ORDER BY u.nome;
          
    voltar

    Início de cada tipo de requerimento
    SELECT
    	tp.descricao,
    	min (log.data::date) as data_primeiro
    FROM
    	processo p inner join
    	tipo_processo tp on p.tipo_processo = tp.id inner join
    	log on p.id = log.id_processo
    GROUP BY
    	tp.descricao,p.tipo_processo
    ORDER BY data_primeiro;
          
    voltar

    Usuários vinculados a órgãos implementadores
    SELECT
    	u.id, u.nome, u.email,
    	oi.sigla
    FROM
    	usuario u INNER JOIN
    	usuario_implementador ui ON u.id = ui.id_usuario INNER JOIN
    	orgao_implementador oi USING (id_orgao_implementador)
    WHERE
    	ativo = true;
          
    voltar