Commit 5f608b0e authored by Odair M.'s avatar Odair M. Committed by Matheus Horstmann

atualiza script de upload para não adicionar turmas que não possua todos os campos na planilha

atualiza relação de secretario e usuario, troca embledOne por belongsTo.

Adiciona pesquisa por bloco

atualiza metodo de desensala, para remover a relação de bloco
parent 01bacd41
......@@ -254,19 +254,23 @@ function criaTipodesala(cb){
function criaSecretario(cb){
var secretarios = [
{email:'secretario_curso@secretario.com',vinculo: 'curso'},
{email:'secretario_dpto@secretario.com',vinculo: 'departamento'},
{email:'secretario_setor@secretario.com',vinculo: 'setor'}
{email:'bcc@secretario.com',vinculo: 'curso',valor_vinculo:"21A"},
{email:'informatica@secretario.com',vinculo: 'departamento',valor_vinculo:"informatica"},
{email:'exatas@secretario.com',vinculo: 'setor',valor_vinculo:"exatas",}
]
async.each(secretarios, function(secretario, callback) {
app.models.Usuario.findOne({where:{email: secretario.email}}, function(err, user){
user.secretario.create( {vinculo: secretario.vinculo},function(err,secre) {
if (err) throw err;
if(LOG_CREATE) console.log('Created Secretario:', secre);
callback(err);
});
});
app.models.Secretario.create(secretario, (err,s)=>{
app.models.Usuario.findOne({where:{email: secretario.email}}, ( err,user)=>{
if (err && !user ) throw err;
user.updateAttribute("secretarioCod",s.id,(err)=>{
if (err) throw err;
if(LOG_CREATE) console.log('Created Secretario:', secre);
callback(err);
})
})
})
}, function(err) {
if (err) throw err;
cb(err);
......@@ -302,9 +306,9 @@ function atribuiRoles(cb){
var atribuicoes = [
{email:'admin@admin.com',role: 'admin'},
{email:'comissao@comissao.com',role: 'comissao'},
{email:'secretario_setor@secretario.com',role: 'secretario_setor'},
{email:'secretario_dpto@secretario.com',role: 'secretario_dpto'},
{email:'secretario_curso@secretario.com',role: 'secretario_curso'}
{email:'exatas@secretario.com',role: 'secretario_setor'},
{email:'informatica@secretario.com',role: 'secretario_dpto'},
{email:'bcc@secretario.com',role: 'secretario_curso'}
]
......@@ -329,9 +333,9 @@ function criaUsuario(cb){
var usuarios = [
{username: 'admin',nome:'Administrador do Sistema', email: 'admin@admin.com', password: '123mudar'},
{username: 'comissao',nome:'Comissão de Ensalamento', email: 'comissao@comissao.com', password: '123mudar'},
{username: 'secretario_setor',nome:'Secretário do Setor', email: 'secretario_setor@secretario.com', password: '123mudar'},
{username: 'secretario_dpto',nome:'Secretário de Departamento,', email: 'secretario_dpto@secretario.com', password: '123mudar'},
{username: 'secretario_curso',nome:'Secretário de Curso', email: 'secretario_curso@secretario.com', password: '123mudar'}
{username: 'exatas',nome:'Secretário do Setor', email: 'exatas@secretario.com', password: '123mudar'},
{username: 'informatica',nome:'Secretário de Departamento,', email: 'informatica@secretario.com', password: '123mudar'},
{username: 'bcc',nome:'Secretário de Curso', email: 'bcc@secretario.com', password: '123mudar'}
];
......
......@@ -144,4 +144,37 @@ module.exports = function(Horario) {
}
return _t;
};
/**
* pesquisa por bloco
* @param {string} query query
* @param {Function(Error, array)} callback
*/
Horario.searchByBloco = 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: { blocoCod: _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;
};
};
......@@ -51,6 +51,11 @@
"type": "hasMany",
"model": "Turma",
"foreignKey": "turmaCod"
},
"bloco": {
"type": "belongsTo",
"model": "Bloco",
"foreignKey": "blocoCod"
}
},
"acls": [
......@@ -104,6 +109,31 @@
"verb": "get"
}
]
},
"searchByBloco": {
"accepts": [
{
"arg": "query",
"type": "string",
"required": false,
"description": "query"
}
],
"returns": [
{
"arg": "turmas",
"type": "array",
"root": false,
"description": "lista de turmas que estão ensaladas nos blocos correspondente a query"
}
],
"description": "pesquisa por bloco",
"http": [
{
"path": "/searchbloco",
"verb": "get"
}
]
}
}
}
'use strict';
var app = require('../../server/server');
const async = require('async');
module.exports = function(Secretario) {
Secretario.observe('after save', async function(ctx) {
if(ctx.instance) { // se instancia é valido então adiciona secretario a departamento ou setor
var modelo = ctx.instance.vinculo
modelo = modelo.charAt(0).toUpperCase() + modelo.slice(1)
if(app.models[modelo]) {// verifica se o modelo existe
var model = await app.models[modelo].findById(ctx.instance.valor_vinculo)
if(model) {
await model.updateAttribute("secretarioId",ctx.instance.id)
}
}
}
})
};
......@@ -10,6 +10,10 @@
"type": "string",
"required": true,
"default": "departamento"
},
"valor_vinculo": {
"type": "string",
"required": true
}
},
"validations": [],
......
......@@ -12,8 +12,13 @@ module.exports = function(Semestre) {
var horarios = await turma.horarios.find( )
for( var j=0; j<horarios.length; j++ ) {
// remove a sala
if(horarios[j].sala)
await horarios[j].sala.destroy()
// remove o bloco
if(horarios[j].blocoCod)
await horarios[j].updateAttribute("blocoCod",null)
}
}
......@@ -35,7 +40,7 @@ module.exports = function(Semestre) {
turma.destroy()
}
// remove o arquivo, caso ele exista
if(semestre.fileUploads) {
if(semestre.fileUploadId) {
fileupload = await semestre.fileUploads.get( )
fileupload.destroy()
}
......
......@@ -234,16 +234,12 @@ module.exports = function(Turma) {
Turma.beforeRemote("create_turma", function(ctx,a,next){
console.log("Antes do ctx",ctx.req,"aaaaaaaaaaaaaaaaaaaa")
const _ctx = {
"options": {
"accessToken": {"userId":ctx.req.accessToken.userId }
},
"instance": ctx.args.turma
}
console.log("---------------------- Inicio -----------------------")
console.log("Meu ctx",_ctx)
console.log("---------------------- Fim -----------------------")
acl_custom.aclSecretarioDpto(["Turma","codigo"],_ctx,next)
})
......
......@@ -109,20 +109,8 @@ Usuario.create_usuario = async function(usuario) {
if(!usuario.secretario) // se não tiver o campo do dicionario retorna mensagem de ok
return {"msg":"usuário criado ou atualizado com sucesso","usuario":_usuario,"code":0}
var _model = null
if(usuario.secretario.vinculo == "setor") //setor
_model = ["setor","Setor","setores","setorCod"]
else if(usuario.secretario.vinculo == "departamento") // departamento
_model = ["departamento","Departamento","departamentos","departamentoCod"]
if(usuario.secretario.id || usuario.secretario._id)
await _usuario.secretario.update(usuario.secretario)
else
await _usuario.secretario.create(usuario.secretario)
// verifica se secretario possui id, se sim tenta recuperar a instancia,
// caso contrário cria
//var _secretario = await check_existence("Secretario",usuario.secretario)
var _secretario = await app.models.Secretario.replaceOrCreate(usuario.secretario)
await _usuario.updateAttribute("secretarioCod",_secretario.id)
return {"msg":"ok","usuario":_usuario,"code":0}
};
......
......@@ -19,9 +19,9 @@
"validations": [],
"relations": {
"secretario": {
"type": "embedsOne",
"type": "belongsTo",
"model": "Secretario",
"property": "secretario"
"foreignKey": "secretarioCod"
},
"ensalamentos": {
"type": "hasMany",
......
......@@ -2,14 +2,14 @@
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
# echo "oi"
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
......
......@@ -134,15 +134,25 @@ function pre_ensalamento(cb) {
async.each(schedules,
(s,cb_s) => {
var query = {where:{id: s.id}};
Horario.findOne(query, (err, h) => {
if(err) return cb(err,null);
if(!s.assigned)
console.log(s);
else
h.updateAttribute("salaCode", s.assigned, err => {
cb_s(err);
});
app.models.Sala.findById(s.assigned, (err,sala)=>{
if(err) return cb(err,null)
h.updateAttribute("salaCode", s.assigned, (err) => {
if(err) return cb(err,null)
h.updateAttribute("blocoCod",sala.blocoCod, (err)=>{
cb_s(err);
})
});
})
});
},
(err) => {
// If everything is ok
......
......@@ -17,12 +17,28 @@ turma_import(options.container, options.file, options, function (err){
process.exit(err ? 1 : 0);
});
function check_fields(obj) {
var fields_missing = []
Object.entries(obj).forEach(([key,value]) =>{
if (!value)
fields_missing.push(key)
})
return fields_missing
}
async function handle_line(line) {
if (line.COD_DISCIPLINA === "" || line.NOME_DISCIPLINA === "")
return {"status":true,"msg":"nome ou código de disciplina vazia"};
var course = line.NOME_DISCIPLINA.replace('\n','');
var period_list = line.PERIODO.split(' ');
// verifica a quantidade de campos da linha, deve ter ao menos
var fields_missing = check_fields(line)
if(fields_missing.length) {
return {"status":true,"msg":"Campos faltando"}
}
var row = {
'ano': period_list[period_list.length -1],
'duracao': (period_list[0] == "Anual")? "Anual" : "Semestral",
......@@ -37,8 +53,6 @@ async function handle_line(line) {
'turma_cod': line.COD_TURMA,
'periodo': (period_list[0] == "Anual")? 0 : period_list[0].charAt(0)
};
if(row.disciplina_cod == "bc037" || row.disciplina_cod == "BC037")
console.log("\n------------------------\nrow:",row,"\n ---------------\n")
// change value 'sabado' to a number 7
if (row.dia_semana == "S" || row.dia_semana == "s") // sie não é consistente
......@@ -48,7 +62,6 @@ async function handle_line(line) {
// departamento, o nome do departamento no csv é diferente do que está
// na base de dados
//
//return cb(null,row,{"codigo":row.departamento});
var departamento = {"codigo":row.departamento};
//Departamento.find({where:{"nome":row.departamento}},function(err,obj) {
// if(!obj || obj.length == 0)
......@@ -148,15 +161,14 @@ async function turma_import(container, file, options, callback) {
var result = await handle_line(row);
// write error msg in fileupload
if(result.status == true) {
console.log("error:",result, " linha: ",line_number)
await FileUploadError.create({
var _er = await FileUploadError.create({
"line":line_number,
"message":result.msg,
"fileUpload":fileupload.id
});
}
if (line_number % 10) {
if (line_number % 100) {
var completed = get_completed(line_number,total_line);
await fileupload.updateAttribute("completed",completed);
}
......
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