const express = require('express');

const portalMecApp = express.Router();

const libs = `${process.cwd()}/libs`;

const squel = require('squel');

const query = require(`${libs}/middlewares/query`).query;

const response = require(`${libs}/middlewares/response`);

const id2str = require(`${libs}/middlewares/id2str`);

const ReqQueryFields = require(`${libs}/middlewares/reqQueryFields`);

const addMissing = require(`${libs}/middlewares/addMissing`);

const config = require(`${libs}/config`);

const cache = require('apicache').options({ debug: config.debug, statusCodes: {include: [200]} }).middleware;

let rqf = new ReqQueryFields();

rqf.addField({
    name: 'filter',
    field: false,
    where: true
}).addField({
    name: 'dims',
    field: true,
    where: false
}).addValue({
    name: 'day',
    table: 'docente',
    tableField: 'nasc_dia',
    resultField: 'born_day_id',
    where: {
        relation: '=',
        type: 'integer',
        table: 'docente',
        field: 'nasc_dia'
    }
}).addValue({
    name: 'month',
    table: 'docente',
    tableField: 'nasc_mes_id',
    resultField: 'born_month',
    where: {
        relation: '=',
        type: 'integer',
        table: 'docente',
        field: 'nasc_mes'
    }
}).addValue({
    name: 'year',
    table: 'docente',
    tableField: 'nasc_ano_id',
    resultField: 'born_year',
    where: {
        relation: '=',
        type: 'integer',
        table: 'docente',
        field: 'nasc_ano'
    }
}).addValue({
    name: 'teacher',
    table: 'docente',
    tableField: 'id',
    resultField: 'teacher_id',
    where: {
        relation: '=',
        type: 'integer',
        table: 'docente',
        field: 'id'
    }
}).addValue({
    name: 'min_year',
    table: 'docente',
    tableField: 'ano_censo',
    resultField: 'year',
    where: {
        relation: '>=',
        type: 'integer',
        table: 'docente',
        field: 'ano_censo'
    }
}).addValue({
    name: 'max_year',
    table: 'docente',
    tableField: 'ano_censo',
    resultField: 'year',
    where: {
        relation: '<=',
        type: 'integer',
        table: 'docente',
        field: 'ano_censo'
    }
});

portalMecApp.get('/', rqf.parse(), (req, res, next) => {

    req.sql.field('docente.id')
    .field('docente.ano_censo', 'year')
    .field('docente.cod_quimica', 'Química')
    .field('docente.cod_fisica', 'Física')
    .field('docente.cod_matematica', 'Matemática')
    .field('docente.cod_biologia', 'Biologia')
    .field('docente.cod_ciencias', 'Ciências')
    .field('docente.cod_literat_port', 'Língua/ Literatura Portuguesa')
    .field('docente.cod_literat_ing', 'Língua/ Literatura estrangeira - Inglês')
    .field('docente.cod_literat_esp', 'Língua/ Literatura estrangeira - Espanhol')
    .field('docente.cod_literat_frances', 'Língua/ Literatura estrangeira - Francês')
    .field('docente.literat_outra', 'Língua/ Literatura estrangeira - Outra')
    .field('docente.cod_literat_indigena', 'Língua/ Literatura estrangeira - Língua Indígena')
    .field('docente.cod_artes', 'Artes (Educação Artística, Teatro, Dança, Música, Artes Plásticas e outras)')
    .field('docente.cod_ed_fisica', 'Educação Física')
    .field('docente.cod_hist', 'História')
    .field('docente.cod_geo', 'Geografia')
    .field('docente.cod_filos', 'Filosofia')
    .field('docente.cod_ensino_religioso', 'Ensino Religioso')
    .field('docente.cod_estudos_sociais', 'Estudos Sociais')
    .field('docente.cod_sociologia', 'Sociologia')
    .field('docente.cod_inf_comp', 'Informática/ Computação')
    .field('docente.cod_profissionalizante', 'Disciplinas profissionalizantes')
    .field('docente.cod_disc_atendimento_especiais', 'Disciplinas voltadas ao atendimento às necessidades educacionais específicas dos alunos que são público alvo da educação especial e às práticas educacionais inclusivas')
    .field('docente.cod_disc_diversidade_socio_cult', 'Disciplinas voltadas à diversidade sociocultural (Disciplinas pedagógicas)')
    .field('docente.cod_libras', 'Libras')
    .field('docente.cod_disciplina_pedag', 'Disciplinas pedagógicas')
    .field('docente.cod_outras_disciplina', 'Outras disciplinas')
    .from('docente')
    next();

}, rqf.build(), query, response('portalMec'));

module.exports = portalMecApp;