Commit 438ae482 authored by Rafael S Castilho's avatar Rafael S Castilho

Merge branch 'incrementa_reserva' into 'development'

adiciona relacao entre reserva e dono da sala

See merge request !51
parents a46eaf0e 0c4167de
......@@ -21,6 +21,8 @@ ds.automigrate(lbTables, function(err) {
loadModelFromOldDB(old_db.get_blocos, app.models.Bloco, LOG_CREATE),
loadModelFromOldDB(old_db.get_Tipodesala, app.models.Tipodesala, LOG_CREATE),
loadModelFromOldDB(old_db.get_professores, app.models.Professor, LOG_CREATE),
loadModelFromOldDB(old_db.get_departamentos, app.models.Departamento, LOG_CREATE),
loadModelFromOldDB(old_db.get_setores, app.models.Setor, LOG_CREATE),
criaUsuario,
criaSecretario,
criaRoles,
......@@ -31,8 +33,6 @@ ds.automigrate(lbTables, function(err) {
criaSemestre,
criaTurmas,
criaHorarios,
loadModelFromOldDB(old_db.get_departamentos, app.models.Departamento, LOG_CREATE),
loadModelFromOldDB(old_db.get_setores, app.models.Setor, LOG_CREATE),
loadModelFromOldDB(old_db.get_disciplinas, app.models.Disciplina, LOG_CREATE),
loadModelFromOldDB(old_db.get_equivalenciasDisciplinas, app.models.Equivalenciadisciplina, LOG_CREATE),
loadModelFromOldDB(old_db.get_cursos, app.models.Curso, LOG_CREATE),
......
......@@ -15,22 +15,22 @@
"setorCod": null
},
{
"nome": "Engenharia Elétrica",
"nome": "departamento de engenharia elétrica",
"codigo": "engenharia_eletrica",
"setorCod": "tecnologia"
},
{
"nome": "Farmacologia",
"nome": "departamento de farmacologia",
"codigo": "farmacologia",
"setorCod": "biologica"
},
{
"nome": "Engenharia de Bioprocessos e Biotecnologia",
"nome": "departamento de engenharia de bioprocessos e biotecnologia",
"codigo": "engenharia_de_bioprocessos_e_biotecnologia",
"setorCod": "tecnologia"
},
{
"nome": "Anatomia",
"nome": "departamento de anatomia",
"codigo": "anatomia",
"setorCod": "biologica"
},
......@@ -50,17 +50,17 @@
"setorCod": "tecnologia"
},
{
"nome": "Coordenação do Curso de Graduação em Educação Física",
"nome": "coordenação do curso de educação física",
"codigo": "educacao_fisica2",
"setorCod": "biologica"
},
{
"nome": "Coordenação do Curso de Graduação em Biomedicina",
"nome": "coordenação do curso de biomedicina",
"codigo": "biomedicina",
"setorCod": "biologica"
},
{
"nome": "Estatística",
"nome": "departamento de estatística",
"codigo": "estatistica",
"setorCod": "exatas"
},
......@@ -75,77 +75,77 @@
"setorCod": "tecnologia"
},
{
"nome": "Expressão Gráfica",
"nome": "departamento de expressão gráfica",
"codigo": "expressao_grafica",
"setorCod": "exatas"
},
{
"nome": "Física",
"nome":"departamento de física",
"codigo": "fisica",
"setorCod": "exatas"
},
{
"nome": "Geografia",
"nome": "departamento de geografia",
"codigo": "geografia",
"setorCod": "terra"
},
{
"nome": "Patologia Básica",
"nome": "departamento de patologia básica",
"codigo": "patologia_basica",
"setorCod": "biologica"
},
{
"nome": "Hidráulica e Saneamento",
"nome": "departamento de hidráulica e saneamento",
"codigo": "hidraulica_e_saneamento",
"setorCod": "tecnologia"
},
{
"nome": "Educação Física",
"nome": "departamento de educação física",
"codigo": "educacao_fisica",
"setorCod": "biologica"
},
{
"nome": "Ciências Agronômicas - Palotina",
"nome": "departamento de ciências agronômicas - palotina",
"codigo": "ciencias_agronomicas_-_palotina",
"setorCod": "palotina"
},
{
"nome": "Ciências Veterinárias - Palotina",
"nome": "departamento de ciências veterinárias - palotina",
"codigo": "ciencias_veterinarias_-_palotina",
"setorCod": "palotina"
},
{
"nome": "Geomática",
"nome": "departamento de geomática",
"codigo": "geomatica",
"setorCod": "terra"
},
{
"nome": "Departamento de Sociais e Humanas - Palotina",
"nome": "departamento de sociais e humanas - palotina",
"codigo": "sociais_e_humanas_-_palotina",
"setorCod": "palotina"
},
{
"nome": "Engenharia Química",
"nome": "departamento de engenharia química",
"codigo": "engenharia_quimica",
"setorCod": "tecnologia"
},
{
"nome": "Departamento de Zootecnia - Palotina",
"nome": "departamento de zootecnia - palotina",
"codigo": "zootecnia_-_palotina",
"setorCod": "palotina"
},
{
"nome": "Engenharia de Produção",
"nome": "departamento de engenharia de produção",
"codigo": "engenharia_de_producao",
"setorCod": "tecnologia"
},
{
"nome": "Arquitetura e Urbanismo",
"nome": "departamento de arquitetura e urbanismo",
"codigo": "arquitetura_e_urbanismo",
"setorCod": "tecnologia"
},
{
"nome": "Engenharias e Exatas - Palotina",
"nome": "departamento de engenharias e exatas - palotina",
"codigo": "engenharias_e_exatas_-_palotina",
"setorCod": "palotina"
},
......@@ -165,12 +165,12 @@
"setorCod": "exatas"
},
{
"nome": "Sociologia",
"nome": "departamento de sociologia",
"codigo": "sociologia",
"setorCod": "HP"
},
{
"nome": "Biodiversidade - Palotina",
"nome": "departamento de biodiversidade - palotina",
"codigo": "biodiversidade_-_palotina",
"setorCod": "palotina"
},
......@@ -180,7 +180,7 @@
"setorCod": "ciencias_agrarias"
},
{
"nome": "Bioquímica e Biologia Molecular",
"nome": "departamento de bioquímica e biologia molecular",
"codigo": "bioquimica_e_biologia_molecular",
"setorCod": "biologica"
},
......@@ -190,12 +190,12 @@
"setorCod": "ciencias_da_saude"
},
{
"nome": "Biociências - Palotina",
"nome": "departamento de biociências - palotina",
"codigo": "biociencias_-_palotina",
"setorCod": "palotina"
},
{
"nome": "Botânica",
"nome": "departamento de botânica",
"codigo": "botanica",
"setorCod": "biologica"
},
......@@ -205,27 +205,27 @@
"setorCod": "tecnologia"
},
{
"nome": "Turismo",
"nome": "departamento de turismo",
"codigo": "turismo",
"setorCod": "HP"
},
{
"nome": "Química",
"nome": "departamento de química",
"codigo": "quimica",
"setorCod": "exatas"
},
{
"nome": "Prevenção e Reabilitação em Fisioterapia",
"nome": "departamento de prevenção e reabilitação em fisioterapia",
"codigo": "prevencao_e_reabilitacao_em_fisioterapia",
"setorCod": "biologica"
},
{
"nome": "Matemática",
"nome": "departamento de matemática",
"codigo": "matematica",
"setorCod": "exatas"
},
{
"nome": "Genética",
"nome": "departamento de genética",
"codigo": "genetica",
"setorCod": "biologica"
},
......@@ -235,17 +235,17 @@
"setorCod": "celin"
},
{
"nome": "Construção Civil",
"nome": "departamento de construção civil",
"codigo": "construcao_civil",
"setorCod": "tecnologia"
},
{
"nome": "História",
"nome": "departamento de história",
"codigo": "historia",
"setorCod": "HP"
},
{
"nome": "Engenharia Mecânica",
"nome": "departamento de engenharia mecânica",
"codigo": "engenharia_mecanica",
"setorCod": "tecnologia"
},
......@@ -265,12 +265,12 @@
"setorCod": "biologica"
},
{
"nome": "Geologia",
"nome": "departamento de geologia",
"codigo": "geologia",
"setorCod": "terra"
},
{
"nome": "Psicologia",
"nome": "departamento de psicologia",
"codigo": "psicologia",
"setorCod": "HP"
},
......@@ -285,27 +285,27 @@
"setorCod": "educacao"
},
{
"nome": "Ciência Política",
"nome": "departamento de ciência política",
"codigo": "ciencia_politica",
"setorCod": "HP"
},
{
"nome": "Filosofia",
"nome": "departamento de filosofia",
"codigo": "filosofia",
"setorCod": "HP"
},
{
"nome": "Polonês, Alemão e Letras Clássicas",
"nome": "departamento de polonês, alemão e letras clássicas",
"codigo": "polones,_alemao_e_letras_classicas",
"setorCod": "HP"
},
{
"nome": "Transportes",
"nome": "departamento de transportes",
"codigo": "transportes",
"setorCod": "tecnologia"
},
{
"nome": "Zoologia",
"nome": "departamento de zoologia",
"codigo": "zoologia",
"setorCod": "biologica"
},
......@@ -315,32 +315,32 @@
"setorCod": "biologica"
},
{
"nome": "Fisiologia",
"nome": "departamento de fisiologia",
"codigo": "fisiologia",
"setorCod": "biologica"
},
{
"nome": "Engenharia Ambiental",
"nome": "departamento de engenharia ambiental",
"codigo": "engenharia_ambiental",
"setorCod": "tecnologia"
},
{
"nome": "Letras Estrangeiras e Modernas",
"nome": "departamento de letras estrangeiras e modernas",
"codigo": "letras_estrangeiras_e_modernas",
"setorCod": "HP"
},
{
"nome": "Antropologia",
"nome": "departamento de antropologia",
"codigo": "antropologia",
"setorCod": "HP"
},
{
"nome": "Informática",
"nome": "departamento de informática",
"codigo": "informatica",
"setorCod": "exatas"
},
{
"nome": "Literatura e Linguística",
"nome": "departamento de literatura e linguística",
"codigo": "literatura_e_linguistica",
"setorCod": "HP"
},
......@@ -355,7 +355,7 @@
"setorCod": "PRAE/UFPR"
},
{
"nome": "Biologia Celular",
"nome": "departamento de biologia celular",
"codigo": "biologia_celular",
"setorCod": "biologica"
}
......
......@@ -40,6 +40,11 @@
"type": "belongsTo",
"model": "Setor",
"foreignKey": "setorCod"
},
"reservas": {
"type": "hasMany",
"model": "Reserva",
"foreignKey": "blocoCod"
}
},
"acls": [
......
......@@ -59,7 +59,7 @@ Ensalamento.upload = async function(req, res) {
var file = await Container.getFiles(container.name,{});
// create a instance of models FileUpload
var file_upload = await FileUpload.create({
var file_upload = await s.fileUploads.create({
'date': new Date(),
'container_name':container.name,
'letive_init': new Date(args.letiveInit),
......
......@@ -113,14 +113,86 @@ module.exports = function(Horario) {
}
}
}
}
console.log(codes.join("-"),vagas,coord,curso,bloco_cod)
cb(null,codes.join("-"),vagas,coord,curso,bloco_cod);
}
// Pesquisa as turmas que estão ensaladas na sala passada como parâmetro
Horario.searchBySala = async function(query) {
if (!query.length || query.length === 0 || query==="undefined"){
return []
}
var _query = { ilike: "%" + query + "%" };
var reservas = await app.models.Reserva.find({
where: { and:[{aprovado: true }, {salaCode: _query }]},
include: [
"horarios"
]
});
const testeF = (reservas) => {
const promises = reservas.map(async (r) => {
let new_r = {}
let data_date = new Date(r.data)
new_r["data_inicio"] = r.data
new_r["data_fim"] = !r.fim_repeticao ? r.data : r.fim_repeticao
new_r["merged"] = false
new_r["organizador"] = r.organizador
new_r["vagas"] = r.vagas
new_r["ano"] = data_date.getFullYear()
new_r["periodo"] = '1'
new_r["id"] = r.id
new_r["disciplinaCod"] = null
new_r["mergedCod"] = null
new_r["departamentoCod"] = null
new_r["semestre"] = null
let professor = {}
professor["codigo"] = 'Reserva'+ data_date.getTime()
professor["nome"] = r.organizador
professor["website"] = null
professor["email"] = null
professor["_id"] = data_date.getTime()
professor["departamentoCod"] = 'Reserva'
new_r["professores"] = []
new_r["professores"].push(professor)
new_r["disciplina"] = {}
new_r["disciplina"]["codigo"] = "reserva"
new_r["disciplina"]["nome"] = "Reserva"
new_r["disciplina"]["equivalenced"] = false
new_r["disciplina"]["carga_horaria"] = 0
new_r["disciplina"]["duracao"] = 'semestral'
new_r["disciplina"]["modalidade"] = 'presencial'
new_r["disciplina"]["_id"] = data_date.getTime()
new_r["disciplina"]["tipodesalaId"] = 'Mesa e Carteira'
new_r["disciplina"]["departamentoCod"] = null
let curso = {}
curso["nome"] = "Reserva"
curso["codigo"] = 'Reserva'
curso["_id"] = data_date.getTime()
curso["localizacao"] = null
curso["secretarioId"] = null
curso["blocoCod"] = null
curso["setorCod"] = null
new_r["cursos"] = []
new_r["cursos"].push(curso)
let horarios = await r.horarios.find()
new_r["horarios"] = horarios
return new_r
});
return Promise.all(promises);
}
var _r = await testeF(reservas)
var turmas = await app.models.Turma.find({
where: { merged: false },
include: [
......@@ -142,7 +214,9 @@ module.exports = function(Horario) {
await _t.push(turmas[i]);
}
}
return _t;
return _t.concat(_r);
// return _t;
};
/**
* pesquisa por bloco
......@@ -174,7 +248,7 @@ Horario.searchByBloco = async function(query) {
}
}
return _t;
};
};
......@@ -136,7 +136,8 @@ module.exports = function(Reserva) {
const sala = await app.models.Sala.findById(reserva.salaCod,{"include":[{"bloco":{"setor":"secretario"}}]})
const bloco = await sala.bloco.get( )
const setor = await bloco.setor.get( )
if ( sala.owerId || setor ){// verifica se existe os campos
reserva.blocoCod = bloco.codigo
if ( sala.ownerId || setor ){// verifica se existe os campos
var secretario = await (sala.ownerId)? sala.ownerId : setor.secretarioId
if(!secretario)
return {"code":5,"msg":"Falha ao tentar encontrar o responsável pela sala"}
......@@ -144,10 +145,11 @@ module.exports = function(Reserva) {
if (!usuario[0])
return {"code":6,"msg":"Falha ao tentar encontrar o usuario responsavel pela sala"}
reserva.ownerId = secretario
const _r = await Reserva.create(reserva)
app.models.mail_dinf.send({
from: "noreply@ensalamento.c3sl.ufpr.br",
from: "Ensalamento <noreply@ensalamento.c3sl.ufpr.br>",
to: usuario[0].email,
subject: "Reserva esporádica",
text: "A seguinte requisição de sala está aguardando aprovação:\n "+ JSON.stringify(reserva,null,2)
......
......@@ -3,9 +3,6 @@
"plural": "reservas",
"base": "Evento",
"idInjection": true,
"hidden": [
"aprovado"
],
"properties": {
"repetir": {
"type": "boolean",
......@@ -50,6 +47,16 @@
"type": "belongsTo",
"model": "Sala",
"foreignKey": "salaCod"
},
"bloco": {
"type": "belongsTo",
"model": "Bloco",
"foreignKey": "blocoCod"
},
"owner": {
"type": "belongsTo",
"model": "Secretario",
"foreignKey": "ownerId"
}
},
"acls": [
......@@ -138,7 +145,7 @@
"arg": "response",
"type": "object",
"root": false,
"description": "não sei ainda o que vou retornar"
"description": "retorna objeto que foi inserido"
}
],
"description": "requisita a reserva de uma sala",
......
......@@ -57,6 +57,11 @@
"model": "Recursodesala",
"foreignKey": ""
},
"reservas": {
"type": "hasMany",
"model": "Reserva",
"foreignKey": "salaCod"
},
"tipo": {
"type": "belongsTo",
"model": "Tipodesala",
......
......@@ -4,8 +4,8 @@ const async = require('async');
module.exports = function(Semestre) {
Semestre.desensala = async function(semestreId) {
var status = {"status": "ok"};
var semestre = await Semestre.findById(semestreId)
if(!semestre) return {"code":1, "msg":"Erro ao tentar encontrar o semestre"}
var turmas = await semestre.turmas.find() //obtem todas as turmas do semestre
for(var i=0; i<turmas.length; i++) {
var turma = turmas[i];
......@@ -22,7 +22,7 @@ module.exports = function(Semestre) {
}
}
return status;
return {"code":0, "msg":"Semestre desensalado com sucesso"}
};
Semestre.deletesemestre = async function(semestreId) {
......
......@@ -103,7 +103,6 @@ async function handle_line(line) {
// enconra curso
var curso = await Curso.findById(row.curso_cod);
if (!curso) return {"status":true,"msg":"O curso "+row.curso_cod+" não foi encontrado","row":row}
console.log("disciplina:", row.disciplina_cod, " Curso: ",curso)
// quer dizer que o departamento não foi encontrado, log pega o departamento da disciplina
var dpt_cod = (departamento)? departamento.codigo : disciplina.departamentoCod;
......@@ -121,8 +120,6 @@ async function handle_line(line) {
"departamentoCod":dpt_cod,
};
var turma = await Turma.findOrCreate({where:turma},turma);
if( turma.length > 0)
console.log( turma)
await turma[0].horarios.add(horario);
await turma[0].cursos.add(curso.codigo);
return {"status":false};
......@@ -142,7 +139,6 @@ async function turma_import(container, file, options, callback) {
var rows = []; // array of line csv
var file_path = path.join(options.root, container,file); // get path of uploaded file
var fileupload = await FileUpload.findById(options.fileUpload);
console.log("------------------------------------",options.semester)
const semestre = await Semestre.findById(options.semester)
// change status of fileuploat to processing
await semestre.updateAttribute("status_msg","Upload");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment