Commit ba071555 authored by Gabriel Silva Hermida's avatar Gabriel Silva Hermida

pesquisa de turmas por codigo de sala

Signed-off-by: Gabriel Silva Hermida's avatarGabriel_S <gash18@inf.ufpr.br>
parent 621f35df
......@@ -2,46 +2,46 @@
var app = require('../../server/server');
function get_time(name,t) {
var i = (Date.now()-t) / 1000
console.log(name+": "+i);
var i = (Date.now()-t) / 1000
console.log(name+": "+i);
}
module.exports = function(Horario) {
Horario.getCode = async function(horario_id,turmas, cb){
// TODO: Also, collect all Evento instances
// TODO: Also, collect all Evento instances
// Query the model Turma and find all instances related to horario_id
// The Horario model cannot be used directly because
// the hasAndBelongsToMany is in Turma model
var codes = turmas.map(t => {
var horarios_turma = t.horarios;
var codes = turmas.map(t => {
var horarios_turma = t.horarios;
// Create an array with the codes of turmas
// If the turma is not related with horario_id, then the code
// is an empty string
for(var h in horarios_turma){
// Create an array with the codes of turmas
// If the turma is not related with horario_id, then the code
// is an empty string
for(var h in horarios_turma){
//for(var h=0; h < horarios_turma.length; h++){
var horario = horarios_turma[h];
if(horario.id == horario_id) {
console.log("horario: ",horario)
console.log("turma: ",t.id, "horario_id: ",horario_id, "t.codigo: ",t.codigo);
return t.codigo;
}
var horario = horarios_turma[h];
if(horario.id == horario_id) {
console.log("horario: ",horario)
console.log("turma: ",t.id, "horario_id: ",horario_id, "t.codigo: ",t.codigo);
return t.codigo;
}
return "";
}
return "";
});
// Filter and join codes with "-"
codes = codes.filter(c => {
return c != "";
});
// if (!codes.length)
// console.log("codes - getCode: ",codes,"\thorario_id: ",horario_id)
cb(null,codes.join("-"));
// Filter and join codes with "-"
codes = codes.filter(c => {
return c != "";
});
// if (!codes.length)
// console.log("codes - getCode: ",codes,"\thorario_id: ",horario_id)
cb(null,codes.join("-"));
}
Horario.getTotalSize = function(horario_id,turmas, cb){
......@@ -50,72 +50,98 @@ module.exports = function(Horario) {
// The Horario model cannot be used directly because
// the hasAndBelongsToMany is in Turma model
// Create an array with the size (need to scheduled) of turmas
// If the turma is not related with horario_id, then the size is 0
var sizes = turmas.map(t => {
var horarios_turma = t.horarios;
for(var h in horarios_turma){
var horario = horarios_turma[h];
if(horario.id == horario_id) return t.vagas;
}
return 0;
});
// Sum all sizes
cb(null, sizes.reduce((acc,size)=>{return acc+size},0));
// Create an array with the size (need to scheduled) of turmas
// If the turma is not related with horario_id, then the size is 0
var sizes = turmas.map(t => {
var horarios_turma = t.horarios;
for(var h in horarios_turma){
var horario = horarios_turma[h];
if(horario.id == horario_id) return t.vagas;
}
return 0;
});
// Sum all sizes
cb(null, sizes.reduce((acc,size)=>{return acc+size},0));
}
Horario.iterate = async function(horario_id, turmas,cb) {
var codes = [];
var vagas = 0;
var cursos = []
for(var i=0; i< turmas.length; i++) {
var t = turmas[i];
var horarios_turma;
Horario.iterate = async function(horario_id, turmas,cb) {
var codes = [];
var vagas = 0;
var cursos = []
for(var i=0; i< turmas.length; i++) {
var t = turmas[i];
var horarios_turma;
var cursos_turma = await t.cursos.find()
if (turmas[i].horarios_list)
horarios_turma = turmas[i].horarios_list;
else {
var horarios_turma = await t.horarios.find()
turmas[i].horarios_list = horarios_turma;
}
for(var h in horarios_turma){
var horario = horarios_turma[h]
if(horario.id == horario_id) {
codes.push(t.codigo);
vagas += t.vagas;
cursos.push(cursos_turma[0]);
if(horario_id % 100 == 0)
console.log(horario_id)
}
}
if (turmas[i].horarios_list)
horarios_turma = turmas[i].horarios_list;
else {
var horarios_turma = await t.horarios.find()
turmas[i].horarios_list = horarios_turma;
}
for(var h in horarios_turma){
var horario = horarios_turma[h]
if(horario.id == horario_id) {
codes.push(t.codigo);
vagas += t.vagas;
cursos.push(cursos_turma[0]);
if(horario_id % 100 == 0)
console.log(horario_id)
}
// pega o primeiro curso e obtém o bloco relacionado a este curso e ai
// pega a coordenada do curso
// coordenada nao estiver definida, define como o ponto 0
var coord = {"lat":0.0,"lng":0.0};
var curso = "21A";
var bloco_cod = "";
if(cursos && cursos[0]) {
curso = cursos[0]
if(curso) {
var bloco = await curso.bloco.get()
curso = curso.codigo
// se o bloco, e os campos localizacao e codigo não forem nulo
// então seta bloco_cod e coord, caso contrário mantém valor
// padrão.
if (bloco && bloco.localizacao && bloco.codigo) {
bloco_cod = bloco.codigo
coord = bloco.localizacao;
}
}
}
console.log(codes.join("-"),vagas,coord,curso,bloco_cod)
cb(null,codes.join("-"),vagas,coord,curso,bloco_cod);
}
}
// pega o primeiro curso e obtém o bloco relacionado a este curso e ai
// pega a coordenada do curso
// coordenada nao estiver definida, define como o ponto 0
var coord = {"lat":0.0,"lng":0.0};
var curso = "21A";
var bloco_cod = "";
if(cursos && cursos[0]) {
curso = cursos[0]
if(curso) {
var bloco = await curso.bloco.get()
curso = curso.codigo
// se o bloco, e os campos localizacao e codigo não forem nulo
// então seta bloco_cod e coord, caso contrário mantém valor
// padrão.
if (bloco && bloco.localizacao && bloco.codigo) {
bloco_cod = bloco.codigo
coord = bloco.localizacao;
}
}
}
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) {
var _query = { ilike: "%" + query + "%" };
var turmas = await app.models.Turma.find({
where: { merged: false },
include: [
"professores",
"disciplina",
"cursos",
{
relation: "horarios",
scope: {
where: { salaCode: _query }
}
}
]
});
var _t = [];
for (var i = 0; i < turmas.length; i++) {
var horarios = await turmas[i].horarios.find();
if (horarios && horarios.length) {
await _t.push(turmas[i]);
}
}
return _t;
};
};
......@@ -21,7 +21,7 @@
},
"data": {
"type": "date",
"required": false
"required": false
},
"livre": {
"type": "boolean",
......@@ -46,6 +46,11 @@
"type": "belongsTo",
"model": "Ensalamento",
"foreignKey": "ensalamentoId"
},
"turmas": {
"type": "hasMany",
"model": "Turma",
"foreignKey": "turmaCod"
}
},
"acls": [
......@@ -74,5 +79,31 @@
"property": "*"
}
],
"methods": {}
"methods": {
"searchBySala": {
"accepts": [
{
"arg": "query",
"type": "string",
"required": true,
"description": "query"
}
],
"returns": [
{
"arg": "retorno",
"type": "array",
"root": false,
"description": "retorno"
}
],
"description": "pesquisa",
"http": [
{
"path": "/searchBySala",
"verb": "get"
}
]
}
}
}
......@@ -29,14 +29,12 @@ var models = [
"Horario",
"Semestre",
"Ensalamento",
"EventoHorario",
"FileUpload",
"FileUploadError",
"FileUploadFileUploadError",
"TurmaHorario",
"TurmaProfessor",
"TurmaCurso",
"TurmaCurso"
];
/**
......
......@@ -140,6 +140,31 @@
"verb": "get"
}
]
},
"searchturmas": {
"accepts": [
{
"arg": "query",
"type": "string",
"required": true,
"description": "query"
}
],
"returns": [
{
"arg": "retorno",
"type": "array",
"root": false,
"description": "retorno"
}
],
"description": "pesquisa",
"http": [
{
"path": "/searchturmas",
"verb": "get"
}
]
}
}
}
......@@ -57,6 +57,11 @@
"type": "hasAndBelongsToMany",
"model": "Professor",
"foreignKey": ""
},
"horarios": {
"type": "hasAndBelongsToMany",
"model": "Horario",
"foreignKey": ""
}
},
"acls": [
......
......@@ -2,14 +2,13 @@
set -e
if [ "$1" = 'DEVELOPMENT' ]; then
/usr/local/bin/node /app/bin/automigrate.js
# echo "oi"
fi
if [ "$1" = 'PRODUCTION' ]; then
/usr/local/bin/node /app/bin/automigrate.js
fi
#if [ "$1" = 'DEVELOPMENT' ]; then
# /usr/local/bin/node /app/bin/automigrate.js
#fi
#
#if [ "$1" = 'PRODUCTION' ]; then
# /usr/local/bin/node /app/bin/automigrate.js
#fi
# echo "while true; do sleep 2; done" >> /app/test.sh && chmod +x /app/test.sh
# /bin/bash /app/test.sh
......
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