Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / widget / widget.controller.js
1 'use strict';
2
3 var _ = require('lodash');
4 var util = require('util');
5 var sequelize = require('../../models').sequelize;
6
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;
12
13
14
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
19     })
20     .then(function(result) {
21       return res.status(200).send(result);
22     })
23     .catch(function(err) {
24       return handleError(res, err);
25     });
26 };
27
28 exports.table = function(req, res) {
29   var columns = [];
30   var elem;
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 + '"');
37         }
38       });
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 + '"');
43       }
44     }
45   }
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
50     })
51     .then(function(result) {
52       return res.status(200).send(result);
53     })
54     .catch(function(err) {
55       return handleError(res, err);
56     });
57 };
58
59 exports.piechart = function(req, res) {
60   var columns = [];
61   var elem;
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 + '"');
68         }
69       });
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 + '"');
74       }
75     }
76   }
77   var select = columns.length ? columns.join(',') : '*';
78   var table = util.format('report_%s', req.query.table);
79   var where = '';
80   if (req.query.condition !== 'undefined') {
81     where = util.format(' WHERE %s', decodeURIComponent(req.query.condition));
82   }
83   sequelize.query(util.format("SELECT %s FROM %s%s", select, table, where), {
84       type: sequelize.QueryTypes.SELECT
85     })
86     .then(function(result) {
87       return res.status(200).send(result);
88     })
89     .catch(function(err) {
90       return handleError(res, err);
91     });
92 };
93
94 // // Get list of widgets
95 // exports.index = function(req, res) {
96 //   Widget
97 //   .findAll()
98 //   .then(function (widgets) {
99 //     return res.status(200).send(widgets);
100 //   })
101 //   .catch(function(err) {
102 //     return handleError(res, err);
103 //   });
104 // };
105 //
106 // // Get a single widget
107 // exports.show = function(req, res) {
108 //   Widget
109 //   .findById(req.params.id)
110 //   .then(function (widget) {
111 //     if(!widget) { return res.sendStatus(404); }
112 //     return res.send(widget);
113 //   })
114 //   .catch(function(err){
115 //     return handleError(res, err);
116 //   });
117 // };
118 //
119 // // Creates a new widget in the DB.
120 // exports.create = function(req, res) {
121 //   Widget
122 //   .create(req.body)
123 //   .then(function(widget) {
124 //     return res.status(201).send(widget);
125 //   })
126 //   .catch(function(err) {
127 //     return handleError(res, err);
128 //   });
129 // };
130 //
131 // // Updates an existing widget in the DB.
132 // exports.update = function(req, res) {
133 //   if(req.body.id) { delete req.body.id; }
134 //   Widget
135 //   .find({
136 //     where: {
137 //       id: req.params.id
138 //     }
139 //   })
140 //   .then(function (widget) {
141 //     if(!widget) { return res.sendStatus(404); }
142 //     var updated = _.merge(widget, req.body);
143 //     updated.save()
144 //     .then(function () {
145 //       return res.status(200).send(widget);
146 //     })
147 //     .catch(function(err) {
148 //       return handleError(res, err);
149 //     });
150 //   })
151 //   .catch(function(err) {
152 //     return handleError(res, err);
153 //   });
154 // };
155 //
156 // // Deletes a widget from the DB.
157 // exports.destroy = function(req, res) {
158 //   Widget
159 //   .find({
160 //     where: {
161 //       id: req.params.id
162 //     }
163 //   })
164 //   .then(function (widget) {
165 //     if(!widget) { return res.sendStatus(404); }
166 //     widget.destroy()
167 //     .then(function() {
168 //       return res.sendStatus(204);
169 //     })
170 //     .catch(function(err) {
171 //       return handleError(res, err);
172 //     });
173 //   })
174 //   .catch(function(err) {
175 //     return handleError(res, err);
176 //   });
177 // };
178
179 function handleError(res, err) {
180   return res.status(500).send(err);
181 }