Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jshint node: true */
- var express = require('express'),
- request = require('request'),
- db = require('./db.js'),
- router = express.Router();
- function achievementSemester(course_id, teaching) {
- return new Promise(function(resolve, reject) {
- var error = {'status': -1, 'message': 'error'};
- var empty = {'status': 0, 'message': 'empty'};
- var sql = "SELECT abet_outcome, grade, lower, type, number FROM course_outcome_bound NATURAL JOIN course_outcome_source WHERE course_id = '" + course_id + "' AND year = '" + teaching.year + "' AND semester = '" + teaching.semester + "'";
- db.query(sql, function(err, result) {
- if (err) {
- reject(error);
- }
- if (result.length > 0) {
- var description = {};
- for (i = 0; i < result.length; i++) {
- if (!(result[i].abet_outcome in description)) {
- description[result[i].abet_outcome] = {};
- description[result[i].abet_outcome].type = result[i].type;
- description[result[i].abet_outcome].number = result[i].number;
- description[result[i].abet_outcome].bound = {};
- }
- description[result[i].abet_outcome].bound[result[i].grade] = result[i].lower;
- }
- var sql = "SELECT class_id, type, scores FROM " + course_id + " WHERE year = '" + teaching.year + "' AND semester = '" + teaching.semester + "'";
- db.query(sql, function(err, result) {
- if (err) {
- reject(error);
- }
- if (result.length > 0) {
- for (i = 0; i < result.length; i++) {
- result[i].scores = result[i].scores.split(" ");
- }
- var data = result;
- var result = {};
- for (abet_outcome in description) {
- result[abet_outcome] = {};
- for (index in data) {
- if (!result[abet_outcome][data[index].class_id]) {
- result[abet_outcome][data[index].class_id] = {};
- for (grade in description[abet_outcome].bound) {
- result[abet_outcome][data[index].class_id][grade] = 0;
- }
- }
- if (data[index].type == description[abet_outcome].type) {
- var number = description[abet_outcome].number;
- if (data[index].scores[number - 1] >= description[abet_outcome].bound.A) {
- result[abet_outcome][data[index].class_id].A++;
- } else if (data[index].scores[number - 1] >= description[abet_outcome].bound.B) {
- result[abet_outcome][data[index].class_id].B++;
- } else if (data[index].scores[number - 1] >= description[abet_outcome].bound.C) {
- result[abet_outcome][data[index].class_id].C++;
- } else if (data[index].scores[number - 1] >= description[abet_outcome].bound.D) {
- result[abet_outcome][data[index].class_id].D++;
- } else {
- result[abet_outcome][data[index].class_id].E++;
- }
- }
- }
- }
- var success = {'status': 1, 'message': result};
- resolve(success);
- } else {
- resolve(empty);
- }
- });
- } else {
- resolve(empty);
- }
- });
- });
- }
- function achievementABET(teaching) {
- return new Promise(function(resolve, reject) {
- var error = {'status': -1, 'message': 'error'};
- var empty = {'status': 0, 'message': 'empty'};
- var sql = "SELECT id FROM course";
- db.query(sql, function(err, result) {
- if (err) {
- reject(error);
- }
- var courses = result;
- var sql = "SELECT id FROM abet_outcome";
- db.query(sql, function(err, result) {
- if (err) {
- reject(error);
- }
- var outcomes = result;
- var result = {};
- var promises = [];
- for (i = 0; i < courses.length; i++) {
- promises.push(
- achievementSemester(courses[i].id, teaching).then(function(body) {
- body = body.message;
- if (body != 'empty' && body != 'error') {
- for (abet_outcome in body) {
- if (!result[abet_outcome]) {
- result[abet_outcome] = {};
- result[abet_outcome]['A'] = 0;
- result[abet_outcome]['B'] = 0;
- result[abet_outcome]['C'] = 0;
- result[abet_outcome]['D'] = 0;
- result[abet_outcome]['E'] = 0;
- }
- for (class_id in body[abet_outcome]) {
- for (grade in body[abet_outcome][class_id]) {
- result[abet_outcome][grade] += body[abet_outcome][class_id][grade];
- }
- }
- }
- }
- })
- );
- }
- Promise.all(promises).then(function() {
- var success = {'status': 1, 'message': result};
- resolve(success);
- }).catch(function(err) {
- res.status(400).json({'status': -1, 'message': 'error'});
- });
- });
- });
- });
- }
- router.post('/semester', function(req, res) {
- var course_id = req.body.course_id;
- var teaching = req.body.teaching;
- achievementSemester(course_id, teaching).then(function(body) {
- res.status(200).json(body);
- }).catch(function(err) {
- res.status(400).json(body);
- });
- });
- router.post('/abetoutcome', function(req, res) {
- var teaching = req.body.teaching;
- achievementABET(teaching).then(function(body) {
- res.status(200).json(body);
- }).catch(function(err) {
- res.status(400).json(body);
- });
- });
- router.post('/total', function(req, res) {
- var teachings = [];
- for (year = 2013; year <= 2017; year++) {
- for (semester = 1; semester <= 2; semester++) {
- teachings.push({
- year: year,
- semester: semester
- });
- }
- }
- var result = {};
- var promises = [];
- for (i = 0; i < teachings.length; i++) {
- promises.push(
- achievementABET(teachings[i]).then(function(body) {
- body = body.message;
- if (body != 'empty' && body != 'error') {
- for (abet_outcome in body) {
- if (!result[abet_outcome]) {
- result[abet_outcome] = {};
- result[abet_outcome]['A'] = 0;
- result[abet_outcome]['B'] = 0;
- result[abet_outcome]['C'] = 0;
- result[abet_outcome]['D'] = 0;
- result[abet_outcome]['E'] = 0;
- }
- for (grade in body[abet_outcome]) {
- result[abet_outcome][grade] += body[abet_outcome][grade];
- }
- }
- }
- })
- );
- }
- Promise.all(promises).then(function() {
- res.status(200).json({'status': 1, 'message': result});
- }).catch(function(err) {
- res.status(400).json({'status': -1, 'message': 'error'});
- });
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement