/*
Copyright (C) 2016 Centro de Computacao Cientifica e Software Livre
Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR

This file is part of simcaq-node.

simcaq-node is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

simcaq-node is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with simcaq-node.  If not, see <https://www.gnu.org/licenses/>.
*/

const express = require('express');

const api = express();

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

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

const classes = require('./class');

const enrollment = require('./enrollment');

const state = require('./state');

const region = require('./region');

const city = require('./city');

const school = require('./school');

const simulation = require('./simulation');

const user = require('./user');

const classroom = require('./classroom');

const teacher = require('./teacher');

const idhme = require('./idhme');

const pibpercapita = require('./pibpercapita')

const population = require('./population')

const rateSchool = require('./rateSchool')

const glossEnrollmentRatio = require('./glossEnrollmentRatio')

const liquidEnrollmentRatio = require('./liquidEnrollmentRatio')

const idhm = require('./idhm');

const idhmr = require('./idhmr');

const idhml = require('./idhml');

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

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

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

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

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

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

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

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

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

const verifyTeacher = require(`${libs}/routes/portalMec`);

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

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

const transport = require(`./transport`);

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

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

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

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

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

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

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

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

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

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

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

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

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

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


api.get('/', (req, res) => {
    res.json({ msg: 'SimCAQ API is running' });
});

// mount API routes
api.use('/user', user);
api.use('/simulation', simulation);
api.use('/class', classes);
api.use('/enrollment', enrollment);
api.use('/state', state);
api.use('/region', region);
api.use('/city', city);
api.use('/school', school);
api.use('/classroom', classroom);
api.use('/teacher', teacher);
api.use('/idhmr', idhmr);
api.use('/idhm', idhm);
api.use('/idhme', idhme);
api.use('/pibpercapita', pibpercapita);
api.use('/population', population);
api.use('/rate_school', rateSchool);
api.use('/gloss_enrollment_ratio', glossEnrollmentRatio);
api.use('/liquid_enrollment_ratio', liquidEnrollmentRatio);
api.use('/idhml', idhml);
api.use('/auth/token', oauth2.token);
api.use('/verify', verifyToken);
api.use('/reset', resetToken);
api.use('/education_years', educationYears);
api.use('/downloads', downloads);
api.use('/infrastructure', infrastructure);
api.use('/school_infrastructure', schoolInfrastructure);
api.use('/distribution_factor', distributionFactor);
api.use('/siope', siope);
api.use('/out_of_school', outOfSchool);
api.use('/classroom_count', classroomCount);
api.use('/daily_charge_amount', dailyChargeAmount);
api.use('/transport', transport);
api.use('/cub', cub);
api.use('/auxiliar', auxiliar);
api.use('/verify_teacher', verifyTeacher);
api.use('/class_count', classCount);
api.use('/portal_mec_inep', portalMecInep);
api.use('/enrollment_projection', enrollmentProjection);
api.use('/employees', employees);
api.use('/financial', financial);
api.use('/university_enrollment', universityEnrollment);
api.use('/university', university);
api.use('/university_teacher', universityTeacher);
api.use('/course_count', courseCount);
api.use('/school_location', schoolLocation)
module.exports = api;