3 var _ = require('lodash');
4 var util = require('util');
5 var sequelize = require('../../models').sequelize;
7 // var ReportAgent = require('../../models').ReportAgent;
8 // var ReportCall = require('../../models').ReportCall;
9 // var ReportDial = require('../../models').ReportDial;
10 // var ReportMember = require('../../models').ReportMember;
11 // var ReportQueue = require('../../models').ReportQueue;
15 exports.counter = function(req, res) {
16 var table = util.format('report_%s', req.query.table);
17 sequelize.query(util.format("SELECT COUNT(*) as count FROM %s WHERE %s", table, decodeURIComponent(req.query.condition)), {
18 type: sequelize.QueryTypes.SELECT
20 .then(function(result) {
21 return res.status(200).send(result);
23 .catch(function(err) {
24 return handleError(res, err);
28 exports.table = function(req, res) {
31 if (req.query.fields) {
32 if (_.isArray(req.query.fields)) {
33 req.query.fields.forEach(function(element) {
34 elem = JSON.parse(element);
35 if (elem.column && elem.alias) {
36 columns.push(elem.column + ' AS "' + elem.alias + '"');
39 } else if (_.isString(req.query.fields)) {
40 elem = JSON.parse(req.query.fields);
41 if (elem.column && elem.alias) {
42 columns.push(elem.column + ' AS "' + elem.alias + '"');
46 var select = columns.length ? columns.join(',') : '*';
47 var table = util.format('report_%s', req.query.table);
48 sequelize.query(util.format("SELECT %s FROM %s WHERE %s", select, table, decodeURIComponent(req.query.condition)), {
49 type: sequelize.QueryTypes.SELECT
51 .then(function(result) {
52 return res.status(200).send(result);
54 .catch(function(err) {
55 return handleError(res, err);
59 exports.piechart = function(req, res) {
62 if (req.query.fields) {
63 if (_.isArray(req.query.fields)) {
64 req.query.fields.forEach(function(element) {
65 elem = JSON.parse(element);
66 if (elem.column && elem.alias) {
67 columns.push(elem.column + ' AS "' + elem.alias + '"');
70 } else if (_.isString(req.query.fields)) {
71 elem = JSON.parse(req.query.fields);
72 if (elem.column && elem.alias) {
73 columns.push(elem.column + ' AS "' + elem.alias + '"');
77 var select = columns.length ? columns.join(',') : '*';
78 var table = util.format('report_%s', req.query.table);
80 if (req.query.condition !== 'undefined') {
81 where = util.format(' WHERE %s', decodeURIComponent(req.query.condition));
83 sequelize.query(util.format("SELECT %s FROM %s%s", select, table, where), {
84 type: sequelize.QueryTypes.SELECT
86 .then(function(result) {
87 return res.status(200).send(result);
89 .catch(function(err) {
90 return handleError(res, err);
94 // // Get list of widgets
95 // exports.index = function(req, res) {
98 // .then(function (widgets) {
99 // return res.status(200).send(widgets);
101 // .catch(function(err) {
102 // return handleError(res, err);
106 // // Get a single widget
107 // exports.show = function(req, res) {
109 // .findById(req.params.id)
110 // .then(function (widget) {
111 // if(!widget) { return res.sendStatus(404); }
112 // return res.send(widget);
114 // .catch(function(err){
115 // return handleError(res, err);
119 // // Creates a new widget in the DB.
120 // exports.create = function(req, res) {
123 // .then(function(widget) {
124 // return res.status(201).send(widget);
126 // .catch(function(err) {
127 // return handleError(res, err);
131 // // Updates an existing widget in the DB.
132 // exports.update = function(req, res) {
133 // if(req.body.id) { delete req.body.id; }
140 // .then(function (widget) {
141 // if(!widget) { return res.sendStatus(404); }
142 // var updated = _.merge(widget, req.body);
144 // .then(function () {
145 // return res.status(200).send(widget);
147 // .catch(function(err) {
148 // return handleError(res, err);
151 // .catch(function(err) {
152 // return handleError(res, err);
156 // // Deletes a widget from the DB.
157 // exports.destroy = function(req, res) {
164 // .then(function (widget) {
165 // if(!widget) { return res.sendStatus(404); }
167 // .then(function() {
168 // return res.sendStatus(204);
170 // .catch(function(err) {
171 // return handleError(res, err);
174 // .catch(function(err) {
175 // return handleError(res, err);
179 function handleError(res, err) {
180 return res.status(500).send(err);