diff --git a/src/controllers/tickets.js b/src/controllers/tickets.js index d6f32597c..8f0475042 100644 --- a/src/controllers/tickets.js +++ b/src/controllers/tickets.js @@ -175,12 +175,14 @@ ticketsController.filter = function(req, res, next) { var dateEnd = queryString.de; var status = queryString.st; var groups = queryString.gp; + var assignee = queryString.au; var rawNoPage = req.originalUrl.replace(new RegExp('[?&]page=[^&#]*(#.*)?$'), '$1') .replace(new RegExp('([?&])page=[^&]*&'), '$1'); if (!_.isUndefined(status) && !_.isArray(status)) status = [status]; if (!_.isUndefined(groups) && !_.isArray(groups)) groups = [groups]; + if (!_.isUndefined(assignee) && !_.isArray(assignee)) assignee = [assignee]; var filter = { subject: subject, @@ -190,6 +192,7 @@ ticketsController.filter = function(req, res, next) { }, status: status, groups: groups, + assignee: assignee, raw: rawNoPage }; @@ -233,7 +236,6 @@ ticketsController.processor = function(req, res) { self.content.data.user = req.user; self.content.data.common = req.viewdata; - var object = processor.object; object.limit = (object.limit === 1) ? 10 : object.limit; @@ -255,7 +257,6 @@ ticketsController.processor = function(req, res) { function(callback) { groupSchema.getAllGroupsOfUser(req.user._id, function(err, grps) { userGroups = grps; - self.content.data.common.groups = grps; callback(err, grps); }); }, diff --git a/src/helpers/viewdata/index.js b/src/helpers/viewdata/index.js index 136e1e900..d9646620f 100644 --- a/src/helpers/viewdata/index.js +++ b/src/helpers/viewdata/index.js @@ -67,6 +67,15 @@ viewController.getData = function(request, cb) { function(callback) { viewController.loggedInAccount(request, function(data) { viewdata.loggedInAccount = data; + callback(); + }); + }, + function(callback) { + viewController.getGroups(request, function(err, data) { + if (err) return callback(null, null); + + viewdata.groups = data; + callback(); }); } @@ -161,4 +170,16 @@ viewController.loggedInAccount = function(request, callback) { }); }; +viewController.getGroups = function(request, callback) { + var groupSchema = require('../../models/group'); + groupSchema.getAllGroupsOfUser(request.user._id, function(err, data) { + if (err) { + winston.debug(err); + callback(err); + } + + callback(null, data); + }); +}; + module.exports = viewController; diff --git a/src/models/ticket.js b/src/models/ticket.js index 5ef6fb280..3df196691 100644 --- a/src/models/ticket.js +++ b/src/models/ticket.js @@ -507,6 +507,10 @@ ticketSchema.statics.getTicketsWithObject = function(grpId, object, callback) { q.where({status: {$in: _status}}); } + if (!_.isUndefined(object.filter) && !_.isUndefined(object.filter.assignee)) { + q.where({assignee: {$in: object.filter.assignee}}); + } + if (!_.isUndefined(object.filter) && !_.isUndefined(object.filter.subject)) q.where({subject: new RegExp(object.filter.subject, "i")}); if (!_.isUndefined(object.assignedSelf) && !_.isNull(object.assignedSelf)) q.where('assignee', object.user); @@ -552,6 +556,11 @@ ticketSchema.statics.getCountWithObject = function(grpId, object, callback) { q.where({status: {$in: status} }); } + if (!_.isUndefined(object.filter) && !_.isUndefined(object.filter.assignee)) { + console.log(object.filter.assignee); + q.where({assignee: {$in: object.filter.assignee}}); + } + if (!_.isUndefined(object.filter) && !_.isUndefined(object.filter.subject)) q.where({subject: new RegExp(object.filter.subject, "i")}); if (!_.isUndefined(object.assignedSelf) && object.assignedSelf == true && !_.isUndefined(object.assignedUserId) && !_.isNull(object.assignedUserId)) { diff --git a/src/public/js/angularjs/controllers/tickets.js b/src/public/js/angularjs/controllers/tickets.js index dc8c5ab0e..0a926bda2 100644 --- a/src/public/js/angularjs/controllers/tickets.js +++ b/src/public/js/angularjs/controllers/tickets.js @@ -136,6 +136,11 @@ define(['angular', 'underscore', 'jquery', 'modules/helpers', 'modules/socket', querystring += '&gp=' + item; }); + var filterAssignee = $('#ticketFilterForm select#filterAssignee').val(); + _.each(filterAssignee, function(item) { + querystring += '&au=' + item; + }); + openFilterTicketWindow.closeWindow(); History.pushState(null, null, '/tickets/filter/' + querystring + '&r=' + Math.floor(Math.random() * (99999 - 1 + 1)) + 1); }; diff --git a/src/routes/index.js b/src/routes/index.js index 06a77e448..19afa62fe 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -30,7 +30,6 @@ function mainRoutes(router, middleware, controllers) { //Tickets router.get('/tickets', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.getActive, controllers.tickets.processor); router.get('/tickets/filter', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.filter, controllers.tickets.processor); - //router.get('/tickets/filter/:page', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.filter, controllers.tickets.processor); router.get('/tickets/active', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.getActive, controllers.tickets.processor); router.get('/tickets/active/page/:page', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.getActive, controllers.tickets.processor); router.get('/tickets/create', middleware.redirectToLogin, middleware.loadCommonData, controllers.tickets.create);