feat(tickets): count opened tickets

This commit is contained in:
OldHawk
2018-04-17 13:30:51 +08:00
parent bf333e93c4
commit 965bb07651
7 changed files with 83 additions and 8 deletions

View File

@@ -6,16 +6,29 @@
.controller('MessageTicketController', MessageTicketController);
MessageTicketController.$inject = ['$scope', '$state', '$timeout', '$translate', 'Authentication', 'MessageTicketsService', 'ModalConfirmService', 'NotifycationService', 'marked',
'DebugConsoleService', 'MeanTorrentConfig', '$filter', '$rootScope'];
'DebugConsoleService', 'MeanTorrentConfig', '$filter', '$rootScope', 'MailTicketsService'];
function MessageTicketController($scope, $state, $timeout, $translate, Authentication, MessageTicketsService, ModalConfirmService, NotifycationService, marked,
mtDebug, MeanTorrentConfig, $filter, $rootScope) {
mtDebug, MeanTorrentConfig, $filter, $rootScope, MailTicketsService) {
var vm = this;
$rootScope.$state = $state;
vm.user = Authentication.user;
vm.itemsPerPageConfig = MeanTorrentConfig.meanTorrentConfig.itemsPerPage;
vm.supportConfig = MeanTorrentConfig.meanTorrentConfig.support;
/**
* getOpenedTicketsNumber
*/
vm.getOpenedTicketsNumber = function () {
MessageTicketsService.getOpenedCount(function (res) {
console.log(res);
$scope.messageOpened = res.opened;
});
MailTicketsService.getOpenedCount(function (res) {
console.log(res);
$scope.mailOpened = res.opened;
});
};
/**
* buildPager
@@ -35,6 +48,7 @@
vm.getMessageTickets(vm.currentPage, function (items) {
vm.filterLength = items.total;
vm.pagedItems = items.rows;
$rootScope.messageOpened = items.opened;
if (callback) callback();
});

View File

@@ -28,6 +28,10 @@
params: {
messageTicketId: '@messageTicketId'
}
},
getOpenedCount: {
method: 'GET',
url: '/api/messageTickets/openedCount'
}
});
}
@@ -44,6 +48,10 @@
}, {
update: {
method: 'PUT'
},
getOpenedCount: {
method: 'GET',
url: '/api/mailTickets/openedCount'
}
});
}

View File

@@ -1,4 +1,4 @@
<section ng-controller="MessageTicketController as vm">
<section ng-controller="MessageTicketController as vm" ng-init="vm.getOpenedTicketsNumber()">
<div class="pagetop">
<div class="container padding-top-30 padding-bottom-30">
<div class="row">
@@ -6,14 +6,14 @@
<a class="btn btn-default btn-lg btn-block" ui-sref="admin.tickets.support.message"
ui-sref-active="btn-success btn-un-default"
ng-class="{'btn-success btn-un-default': $state.current.name.indexOf('viewMessage')>=0}">
{{'SUPPORT.TITLE_MESSAGE_SUPPORT' | translate}} <span class="badge">{{vm.user.followers.length}}</span>
{{'SUPPORT.TITLE_MESSAGE_SUPPORT' | translate}} <span class="badge">{{messageOpened || 0}}</span>
</a>
</div>
<div class="col-xs-6 col-sm-4">
<a class="btn btn-default btn-lg btn-block" ui-sref="admin.tickets.support.mail"
ui-sref-active="btn-success btn-un-default"
ng-class="{'btn-success btn-un-default': $state.current.name.indexOf('viewMail')}>=0">
{{'SUPPORT.TITLE_MAIL_SUPPORT' | translate}} <span class="badge badge_default">{{vm.user.following.length}}</span>
{{'SUPPORT.TITLE_MAIL_SUPPORT' | translate}} <span class="badge badge_default">{{mailOpened || 0}}</span>
</a>
</div>
</div>

View File

@@ -171,6 +171,23 @@ exports.createReply = function (req, res) {
});
};
/**
* openedCount
* @param req
* @param res
*/
exports.openedCount = function (req, res) {
MailTicket.count({status: 'open'}, function (err, count) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json({opened: count});
}
});
};
/**
* Invitation middleware
*/

View File

@@ -86,6 +86,16 @@ exports.list = function (req, res) {
});
};
var countUnSolvedMessage = function (callback) {
MessageTicket.count({status: 'open'}, function (err, count) {
if (err) {
callback(err, null);
} else {
callback(null, count);
}
});
};
var findMessage = function (callback) {
MessageTicket.find(condition)
.sort('-updatedAt -createdAt')
@@ -107,11 +117,11 @@ exports.list = function (req, res) {
});
};
async.parallel([countMessage, findMessage], function (err, results) {
async.parallel([countMessage, findMessage, countUnSolvedMessage], function (err, results) {
if (err) {
return res.status(422).send(err);
} else {
res.json({rows: results[1], total: results[0]});
res.json({rows: results[1], total: results[0], opened: results[2]});
}
});
};
@@ -260,6 +270,23 @@ function move(oldPath, newPath, callback) {
}
}
/**
* openedCount
* @param req
* @param res
*/
exports.openedCount = function (req, res) {
MessageTicket.count({status: 'open'}, function (err, count) {
if (err) {
return res.status(422).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.json({opened: count});
}
});
};
/**
* uploadTicketImage
* @param req

View File

@@ -22,10 +22,13 @@ exports.invokeRolesPolicies = function () {
{resources: '/api/messageTickets/solved/:messageTicketId', permissions: '*'},
{resources: '/api/messageTickets/:messageTicketId', permissions: '*'},
{resources: '/api/messageTickets/:messageTicketId/:replyId', permissions: '*'},
{resources: '/api/messageTickets/uploadTicketImage', permissions: '*'},
{resources: '/api/messageTickets/openedCount', permissions: '*'},
{resources: '/api/mailTickets', permissions: '*'},
{resources: '/api/mailTickets/:mailTicketId', permissions: '*'},
{resources: '/api/mailTickets/:mailTicketId/:replyId', permissions: '*'},
{resources: '/api/messageTickets/uploadTicketImage', permissions: '*'}
{resources: '/api/mailTickets/openedCount', permissions: '*'}
]
}
]

View File

@@ -15,6 +15,9 @@ module.exports = function (app) {
app.route('/api/messageTickets/uploadTicketImage').all(ticketsPolicy.isAllowed)
.post(messageTickets.uploadTicketImage);
app.route('/api/messageTickets/openedCount').all(ticketsPolicy.isAllowed)
.get(messageTickets.openedCount);
app.route('/api/messageTickets/handle/:messageTicketId').all(ticketsPolicy.isAllowed)
.put(messageTickets.handle);
@@ -36,6 +39,9 @@ module.exports = function (app) {
.get(mailTickets.list)
.delete(mailTickets.delete);
app.route('/api/mailTickets/openedCount').all(ticketsPolicy.isAllowed)
.get(mailTickets.openedCount);
app.route('/api/mailTickets/:mailTicketId').all(ticketsPolicy.isAllowed)
.get(mailTickets.read)
.delete(mailTickets.delete)