3 var _ = require('lodash');
4 var util = require('util');
5 var sequelize = require('../../models').sequelize;
7 var VoiceContext = require('../../models').VoiceContext;
8 var VoiceExtension = require('../../models').VoiceExtension;
11 exports.index = function(req, res, next) {
13 var attributes = ['name', 'description'];
14 var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
15 var page = req.query.page ? parseInt(req.query.page, 10) : 0;
20 offset: page * per_page
23 _.forIn(req.query, function(value, key) {
29 query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
35 attributes.forEach(function(attribute) {
38 $like: '%' + value + '%'
41 query.where.$or.push(tmp);
48 query.where[key].$like = '%' + value + '%';
53 .findAndCountAll(query)
54 .then(function(result) {
56 var total_pages = Math.ceil(result.count / per_page);
57 var next_page = total_pages > (query.offset + 1) ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page + 1) : null;
58 var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
60 res.status(200).send({
64 previous_page: previous_page,
65 total_pages: total_pages
69 .catch(function(err) {
70 res.status(500).send({
71 error: 'Something blew up!'
76 // Get a single voice_context
77 exports.show = function(req, res) {
79 .findById(req.params.id)
80 .then(function(voice_context) {
82 return res.sendStatus(404);
84 return res.send(voice_context);
86 .catch(function(err) {
87 return handleError(res, err);
91 // Validate the existence of a context
92 exports.contextValidation = function(req, res) {
93 console.log(req.body);
100 .then(function(voice_contexts) {
101 if (!voice_contexts) {
102 return res.sendStatus(404);
104 return res.send(voice_contexts);
106 .catch(function(err) {
107 return handleError(res, err);
111 // Creates a new voice_context in the DB.
112 exports.create = function(req, res) {
119 .then(function(existingContexts) {
120 console.log(existingContexts);
121 console.log('Finding app row.....');
122 if (!existingContexts) {
123 return res.sendStatus(404);
125 if (existingContexts.length > 0) {
126 return res.status(500).send({
127 message: 'MESSAGE_EXIST_ROUTE'
132 .then(function(voice_context) {
133 return res.status(201).send(voice_context);
135 .catch(function(err) {
136 return handleError(res, err);
139 .catch(function(err) {
140 return handleError(res, err);
145 // Updates an existing voice_context in the DB.
146 exports.update = function(req, res) {
156 .then(function(existingContexts) {
157 console.log(existingContexts);
158 console.log('Finding app row.....');
159 if (!existingContexts) {
160 return res.sendStatus(404);
162 if (existingContexts.length > 0) {
163 return res.status(500).send({
164 message: 'MESSAGE_EXIST_ROUTE'
171 .findById(req.params.id)
172 .then(function(voice_context) {
173 if (!voice_context) {
174 return res.sendStatus(404);
176 var updated = _.merge(voice_context, req.body);
179 return res.status(200).send(voice_context);
181 .catch(function(err) {
182 return handleError(res, err);
185 .catch(function(err) {
186 return handleError(res, err);
189 .catch(function(err) {
190 return handleError(res, err);
195 // Deletes a voice_context from the DB.
196 exports.destroy = function(req, res) {
198 .findById(req.params.id)
199 .then(function(voice_context) {
200 if (!voice_context) {
201 return res.sendStatus(404);
206 context: voice_context.name
209 .then(function(contextExtensions) {
210 if (contextExtensions.length > 0) {
211 return res.status(500).send({
212 message: 'MESSAGE_CONTEXT_ROUTE_ASSOCIATED'
215 voice_context.destroy()
217 return res.sendStatus(204);
219 .catch(function(err) {
220 return handleError(res, err);
223 .catch(function(err) {
224 return handleError(res, err);
227 .catch(function(err) {
228 return handleError(res, err);
232 // Deletes a context from the DB.
233 exports.bulkDestroy = function(req, res) {
240 .then(function(voice_contexts) {
241 if (!voice_contexts) {
242 return res.sendStatus(404);
244 var destroyContextsNames = _.pluck(_.pluck(voice_contexts, 'dataValues'), 'name');
248 context: destroyContextsNames
251 .then(function(contextExtensions) {
252 if (contextExtensions.length > 0) {
253 return res.status(500).send({
254 message: 'MESSAGE_CONTEXT_ROUTE_ASSOCIATED'
262 individualHooks: true
265 return res.sendStatus(204);
267 .catch(function(err) {
268 return handleError(res, err);
271 .catch(function(err) {
272 return handleError(res, err);
275 .catch(function(err) {
276 return handleError(res, err);
280 function handleError(res, err) {
281 return res.status(500).send(err);