~~ODT~~
Turmas Capacidades CT Servlet
Este servlet permite que usuários com papel de consultores de vagas de turmas visualizem os dados das vagas em turmas de CT, filtrando por ano e período.
Descrição do Caso de Uso
Este caso de uso é iniciado ao se enviar uma requisição POST com protocolo HTTPS para a url http://www.sigaa.ufrn.br/turmasCapacidadesCTServlet .
Na requisição, devem ser passados os seguintes parâmetros:
- login: Tipo - TEXTO. Campo obrigatório.
- senha: Tipo - TEXTO. Campo obrigatório.
- ano: Tipo - NUMÉRICO. Campo obrigatório.
- periodo: Tipo - NUMÉRICO. Campo obrigatório.
Caso o usuário tenha informado a senha correta e tenha papel de consultor de vagas de turmas, o caso de uso busca todas as turmas de CT do ano e período informado e retorna os dados em formato CSV, contendo os seguintes campos:
- unidade: Nome da unidade (Centro, Departamento, etc) responsável pela turma.
- codigo_componente: Código do componente curricular da turma (EX: DEQ0376);
- nome_componente: Nome do componente curricular da disciplina;
- ch_componente: Carca horária do componente curricular da disciplina;
- turma: Código da turma (EX: 01);
- descricao_horario: Horário da turma (Ex: 2M1234);
- local: Local da turma;
- situacao: Situação da turma;
- docente: Docente responsável pela turma;
- ch_docente: Carga horária do docente;
- capacidade: Capacidade de alunos da turma;
- solicitacoes_matricula: Quantidade solicitações ativas de matrícula para a turma;
- total_matriculas: Quantidade de matrículas ativas na turma
Principais Regras de Negócio
- RN01 - Apenas usuários com o papel SigaaPapeis.CONSULTOR_VAGAS_TURMAS poderão acessar este servlet.
Resoluções/Legislações Associadas
Não se aplica.
Classes Persistentes e Tabelas Envolvidas
Classe | Tabela |
---|---|
br.ufrn.comum.dominio.Unidade | sigaa.comum.unidade |
br.ufrn.sigaa.ensino.medio.dominio.ModalidadeCursoMedio | sigaa.medio.modalidade_curso_medio |
br.ufrn.sigaa.ensino.dominio.ComponenteCurricular | sigaa.ensino.componente_curricular |
br.ufrn.sigaa.ensino.dominio.ComponenteCurricularDetalhes | sigaa.ensino.componente_curricular_detalhes |
br.ufrn.sigaa.ensino.dominio.Turma | sigaa.ensino.turma |
br.ufrn.sigaa.ensino.dominio.SituacaTurma | sigaa.ensino.situacao_turma |
br.ufrn.sigaa.ensino.dominio.DocenteTurma | sigaa.ensino.docente_turma |
br.ufrn.sigaa.ensino.dominio.MatriculaComponente | sigaa.ensino.matricula_componente |
br.ufrn.sigaa.pessoa.dominio.Servidor | sigaa.rh.servidor |
br.ufrn.sigaa.pessoa.dominio.Pessoa | sigaa.comum.pessoa |
br.ufrn.sigaa.ensino.dominio.DocenteExterno | sigaa.ensino.docente_externo |
br.ufrn.sigaa.graduacao.dominio.SolicitacaoMatricula | sigaa.graduacao.solicitacao_matricula |
Plano de Teste
O servlet não é acessado por links nos sistemas. Para testar, basta submeter um POST para a url do servlet, contendo login, senha, ano e período. Segue abaixo um formulário HTML para testar (Lembre-se de alterar o local do servidor para o que será utilizado):
<html> <body> <form action="http://localhost:8080/sigaa/turmasCapacidadesCTServlet" method="post"> Login: <input name="login" /><br/> Senha: <input name="senha" type="password" /><br/> Ano: <input name="ano" /><br/> Período: <input name="periodo" /><br/> <input type="submit" value="Testar" /> </form> </body> </html>
Usuários: auniebson
Papel que usuário deve ter: SigaaPapeis.CONSULTOR_VAGAS_TURMAS
Cenários de Teste
Não se aplica
Dados para o Teste
A consulta feita no banco é a seguinte:
SELECT u.nome AS unidade, cc.codigo AS codigo_componente, ccd.nome AS nome_componente, ccd.ch_total AS ch_componente, t.codigo AS turma, t.descricao_horario, t.local, st.descricao AS situacao, COALESCE(p1.nome, p2.nome) AS docente, dt.ch_dedicada_periodo AS ch_docente, t.capacidade_aluno AS capacidade, (SELECT COUNT(sm.id_solicitacao_matricula) FROM graduacao.solicitacao_matricula sm WHERE sm.id_turma = t.id_turma AND sm.status IN (1,2,5,8,10) AND sm.anulado = FALSE) AS solicitacoes_matricula, (SELECT COUNT(id_matricula_componente) FROM ensino.matricula_componente mc WHERE mc.id_turma = t.id_turma AND mc.id_situacao_matricula IN (4,6,7,9,1,2)) AS total_matriculas FROM comum.unidade u JOIN ensino.componente_curricular cc USING(id_unidade) JOIN ensino.componente_curricular_detalhes ccd ON (cc.id_detalhe = ccd.id_componente_detalhes) JOIN ensino.turma t USING(id_disciplina) JOIN ensino.situacao_turma st USING(id_situacao_turma) LEFT JOIN ensino.docente_turma dt USING(id_turma) LEFT JOIN rh.servidor s ON (s.id_servidor = dt.id_docente) LEFT JOIN comum.pessoa p1 ON (s.id_pessoa = p1.id_pessoa) LEFT JOIN ensino.docente_externo de USING (id_docente_externo) LEFT JOIN comum.pessoa p2 ON (de.id_pessoa = p2.id_pessoa) WHERE (u.id_gestora = 445 OR u.id_gestora = 351 OR u.id_unidade = 351 OR cc.codigo ILIKE 'AGP%' OR cc.codigo ILIKE 'ZOO%') AND t.ano = 2012 AND t.periodo = 1 AND t.id_situacao_turma IN (1, 2) AND cc.nivel = 'G' ORDER BY u.nome, cc.codigo, t.codigo, docente;
Sendo que os identificadores de situações estão parametrizados e o ano e período devem ser substituídos pelos enviados na requisição