3 var _ = require('lodash');
4 var Tag = require('../../models').Tag;
5 var util = require('util');
8 exports.index = function(req, res) {
10 var attributes = ['name', 'description'];
11 var per_page = req.query.per_page ? parseInt(req.query.per_page, 10) : 100;
12 var page = req.query.page ? parseInt(req.query.page, 10) : 0;
17 offset: page * per_page
20 _.forIn(req.query, function(value, key) {
26 query.order = util.format('%s %s', req.query.sort_by, req.query.sort_order || 'ASC') || null;
32 attributes.forEach(function(attribute) {
35 $like: '%' + value + '%'
38 query.where.$or.push(tmp);
45 query.where[key].$like = '%' + value + '%';
51 .findAndCountAll(query)
52 .then(function(result) {
54 var total_pages = Math.ceil(result.count / per_page);
55 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;
56 var previous_page = page > 0 ? util.format('%s://%s%s?page=%d', req.protocol, req.headers.host, req.baseUrl, page - 1) : null;
58 res.status(200).send({
62 previous_page: previous_page,
63 total_pages: total_pages
67 .catch(function(err) {
68 res.status(500).send({
69 error: 'Something blew up!'
74 exports.tagValidation = function(req, res) {
75 console.log(req.body);
82 .then(function(tags) {
84 return res.sendStatus(404);
86 return res.send(tags);
88 .catch(function(err) {
89 return handleError(res, err);
94 exports.show = function(req, res) {
96 .findById(req.params.id)
99 return res.sendStatus(404);
101 return res.send(tag);
103 .catch(function(err) {
104 return handleError(res, err);
108 // Creates a new tag in the DB.
109 exports.create = function(req, res) {
112 .then(function(tag) {
113 return res.status(201).send(tag);
115 .catch(function(err) {
116 return handleError(res, err);
120 // Updates an existing tag in the DB.
121 exports.update = function(req, res) {
131 .then(function(tags) {
133 return res.sendStatus(404);
135 if (tags.length > 0) {
136 return res.status(500).send({
137 message: 'MESSAGE_EXIST_TAG'
149 .then(function(tag) {
151 return res.sendStatus(404);
153 var updated = _.merge(tag, req.body);
156 return res.status(200).send(tag);
158 .catch(function(err) {
159 return handleError(res, err);
162 .catch(function(err) {
163 return handleError(res, err);
166 .catch(function(err) {
167 return handleError(res, err);
171 // Deletes a tag from the DB.
172 exports.destroy = function(req, res) {
174 .findById(req.params.id)
175 .then(function(tag) {
177 return res.sendStatus(404);
181 return res.sendStatus(204);
183 .catch(function(err) {
184 return handleError(res, err);
187 .catch(function(err) {
188 return handleError(res, err);
192 exports.bulkDestroy = function(req, res) {
198 individualHooks: true
201 return res.sendStatus(204);
203 .catch(function(err) {
204 return handleError(res, err);
208 function handleError(res, err) {
209 return res.status(500).send(err);