114 lines
5.3 KiB
JavaScript
114 lines
5.3 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Created by viktor.shevchenko on 7/17/2014.
|
|
*/
|
|
(function () {
|
|
'use strict';
|
|
angular.module('ticketModule').controller('ShareController', ['$scope', '$modalInstance', 'shareParams', 'ticketService', '$location', '$filter', 'userModel', 'openMailClientService', 'searchModel', 'urlCreatorService',
|
|
function ($scope, $modalInstance, shareParams, ticketService, $location, $filter, userModel, openMailClientService, searchModel, urlCreatorService) {
|
|
var state = {
|
|
processing: true,
|
|
tooManySupportGroups: false,
|
|
tooManySupportPeople: false,
|
|
noSupportGroups: false
|
|
}, supportGroups = [], selected = {
|
|
group: {}
|
|
};
|
|
$scope.selectGroup = function (group) {
|
|
_.forEach(selected.group.members, function (person) {
|
|
person.isSelected = false;
|
|
});
|
|
selected.group = group;
|
|
!selected.group.members && populateGroupMembers(group);
|
|
};
|
|
$scope.isPersonSelected = function () {
|
|
return _.find(selected.group.members, 'isSelected') ? true : false;
|
|
};
|
|
$scope.share = function () {
|
|
state.processing = true;
|
|
var mailBody = selected.note ? [selected.note] : [], personsEmails = _.without(_.map(_.filter(selected.group.members, 'isSelected'), 'email'), ''), subject = userModel.userFullData.fullName + $filter('i18n')('shareBlade.emailSubject');
|
|
_.forEach(shareParams.actionItems, function (item) {
|
|
if (item.type === EntityVO.TYPE_KNOWLEDGE) {
|
|
var url = urlCreatorService.create(item);
|
|
url = url.replace(/#\//, '');
|
|
mailBody.push(url);
|
|
}
|
|
else {
|
|
mailBody.push(urlCreatorService.create(item));
|
|
}
|
|
});
|
|
openMailClientService.openMailClient(personsEmails.join('; '), subject, mailBody.join(' \r\n'));
|
|
$modalInstance.close();
|
|
};
|
|
$scope.getSupportGroupsByText = function (name) {
|
|
return searchModel.getSupportGroupsByText(name).then(function (response) {
|
|
return response.supportGroups;
|
|
});
|
|
};
|
|
$scope.onPersonSearchTextChanged = function () {
|
|
if ($scope.searchText !== userModel.userFullData.fullName) {
|
|
$scope.personLoginId = '';
|
|
}
|
|
if ($scope.selected.group.id) {
|
|
if (state.tooManySupportPeople) {
|
|
if ($scope.searchText.length > 2) {
|
|
state.processing = true;
|
|
ticketService.getAssigneeBySupportGroupId($scope.selected.group.id, $scope.searchText, $scope.personLoginId, '', '', searchModel.supportPersonChunkSize, true)
|
|
.then(function (results) {
|
|
handleMembers(results.results);
|
|
})
|
|
.finally(function () {
|
|
state.processing = false;
|
|
});
|
|
}
|
|
else {
|
|
selected.group.members = [];
|
|
}
|
|
}
|
|
else {
|
|
populateGroupMembers(selected.group);
|
|
}
|
|
}
|
|
};
|
|
function populateGroupMembers(group) {
|
|
state.processing = true;
|
|
ticketService.getPersonsBySupportGroupId(group.id, '', '', searchModel.supportPersonChunkSize)
|
|
.then(function (members) {
|
|
state.tooManySupportPeople = members.exceedsChunkSize;
|
|
handleMembers(members.results);
|
|
})
|
|
.finally(completeProcessing);
|
|
}
|
|
function handleMembers(members) {
|
|
selected.group.members = members;
|
|
}
|
|
function completeProcessing() {
|
|
state.processing = false;
|
|
}
|
|
$scope.selected = selected;
|
|
$scope.supportGroups = supportGroups;
|
|
$scope.state = state;
|
|
searchModel.getSupportGroupsForKAShare(searchModel.supportGroupChunkSize)
|
|
.then(function (groups) {
|
|
if (groups.exceedsChunkSize) {
|
|
$scope.supportGroups = groups.supportGroups;
|
|
state.processing = false;
|
|
state.tooManySupportGroups = true;
|
|
state.noSupportGroups = false;
|
|
}
|
|
else if (groups.supportGroups.length) {
|
|
$scope.supportGroups = groups.supportGroups;
|
|
selected.group = groups.supportGroups[0];
|
|
populateGroupMembers(selected.group);
|
|
state.tooManySupportGroups = false;
|
|
state.noSupportGroups = false;
|
|
}
|
|
else {
|
|
state.processing = false;
|
|
state.noSupportGroups = true;
|
|
}
|
|
});
|
|
}
|
|
]);
|
|
})();
|