|
|
|
@ -1,10 +1,16 @@ |
|
|
|
|
Template.livechatDepartmentForm.helpers({ |
|
|
|
|
department() { |
|
|
|
|
// return Template.instance().department && !_.isEmpty(Template.instance().department.get()) ? Template.instance().department.get() : { enabled: true };
|
|
|
|
|
return Template.instance().department.get(); |
|
|
|
|
}, |
|
|
|
|
agents() { |
|
|
|
|
return Template.instance().department && !_.isEmpty(Template.instance().department.get()) ? Template.instance().department.get().agents : [] |
|
|
|
|
}, |
|
|
|
|
selectedAgents() { |
|
|
|
|
return _.sortBy(Template.instance().selectedAgents.get(), 'username'); |
|
|
|
|
}, |
|
|
|
|
availableAgents() { |
|
|
|
|
var selected = _.pluck(Template.instance().selectedAgents.get(), 'username'); |
|
|
|
|
return AgentUsers.find({ username: { $nin: selected }}, { sort: { username: 1 } }); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -29,16 +35,22 @@ Template.livechatDepartmentForm.events({ |
|
|
|
|
var oldBtnValue = $btn.html(); |
|
|
|
|
$btn.html(t('Saving')); |
|
|
|
|
|
|
|
|
|
agents = instance.department && !_.isEmpty(instance.department.get()) ? instance.department.get().agents : []; |
|
|
|
|
|
|
|
|
|
departmentData = { |
|
|
|
|
var departmentData = { |
|
|
|
|
enabled: enabled === "1" ? true : false, |
|
|
|
|
name: name.trim(), |
|
|
|
|
description: description.trim(), |
|
|
|
|
agents: agents |
|
|
|
|
} |
|
|
|
|
description: description.trim() |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
var departmentAgents = []; |
|
|
|
|
|
|
|
|
|
instance.selectedAgents.get().forEach((agent) => { |
|
|
|
|
agent.count = instance.$('.count-' + agent.agentId).val(); |
|
|
|
|
agent.order = instance.$('.order-' + agent.agentId).val(); |
|
|
|
|
|
|
|
|
|
departmentAgents.push(agent); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
Meteor.call('livechat:saveDepartment', _id, departmentData, function(error, result) { |
|
|
|
|
Meteor.call('livechat:saveDepartment', _id, departmentData, departmentAgents, function(error, result) { |
|
|
|
|
$btn.html(oldBtnValue); |
|
|
|
|
if (error) { |
|
|
|
|
return toastr.error(t(error.reason || error.error)); |
|
|
|
@ -54,59 +66,44 @@ Template.livechatDepartmentForm.events({ |
|
|
|
|
FlowRouter.go('livechat-departments'); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
'click button.add-agent' (e, instance) { |
|
|
|
|
'click .remove-agent' (e, instance) { |
|
|
|
|
e.preventDefault(); |
|
|
|
|
var $btn = $(e.currentTarget); |
|
|
|
|
|
|
|
|
|
var $agent = instance.$('input[name=agent]') |
|
|
|
|
|
|
|
|
|
if ($agent.val().trim() === '') { |
|
|
|
|
return toastr.error(t('Please_fill_a_username')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var oldBtnValue = $btn.html(); |
|
|
|
|
$btn.html(t('Saving')); |
|
|
|
|
|
|
|
|
|
Meteor.call('livechat:searchAgent', $agent.val(), function(error, user) { |
|
|
|
|
$btn.html(oldBtnValue); |
|
|
|
|
if (error) { |
|
|
|
|
return toastr.error(t(error.reason || error.error)); |
|
|
|
|
} |
|
|
|
|
department = instance.department.get() || {}; |
|
|
|
|
if (department.agents === undefined || !_.isArray(department.agents)) { |
|
|
|
|
department.agents = []; |
|
|
|
|
} |
|
|
|
|
if (!_.findWhere(department.agents, { _id: user._id })) { |
|
|
|
|
department.agents.push(user); |
|
|
|
|
} |
|
|
|
|
instance.department.set(department); |
|
|
|
|
$agent.val(''); |
|
|
|
|
}); |
|
|
|
|
var selectedAgents = instance.selectedAgents.get(); |
|
|
|
|
selectedAgents = _.reject(selectedAgents, (agent) => { return agent._id === this._id }); |
|
|
|
|
instance.selectedAgents.set(selectedAgents); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
'click a.remove-agent' (e, instance) { |
|
|
|
|
e.preventDefault(); |
|
|
|
|
department = instance.department.get(); |
|
|
|
|
department.agents = _.reject(department.agents, (agent) => { return agent._id === this._id }); |
|
|
|
|
instance.department.set(department); |
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
'keydown input[name=agent]' (e, instance) { |
|
|
|
|
if (e.keyCode === 13) { |
|
|
|
|
e.preventDefault(); |
|
|
|
|
$("button.add-agent").click(); |
|
|
|
|
} |
|
|
|
|
'click .available-agents li' (e, instance) { |
|
|
|
|
var selectedAgents = instance.selectedAgents.get(); |
|
|
|
|
var agent = _.clone(this); |
|
|
|
|
agent.agentId = this._id; |
|
|
|
|
delete agent._id; |
|
|
|
|
selectedAgents.push(agent); |
|
|
|
|
instance.selectedAgents.set(selectedAgents); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
Template.livechatDepartmentForm.onCreated(function() { |
|
|
|
|
this.department = new ReactiveVar({ enabled: true }); |
|
|
|
|
this.selectedAgents = new ReactiveVar([]); |
|
|
|
|
|
|
|
|
|
this.subscribe('livechat:agents'); |
|
|
|
|
|
|
|
|
|
this.autorun(() => { |
|
|
|
|
var sub = this.subscribe('livechat:departments', FlowRouter.getParam('_id')); |
|
|
|
|
if (sub.ready()) { |
|
|
|
|
department = LivechatDepartment.findOne({ _id: FlowRouter.getParam('_id') }); |
|
|
|
|
if (department) { |
|
|
|
|
this.department.set(department); |
|
|
|
|
|
|
|
|
|
this.subscribe('livechat:departmentAgents', department._id, () => { |
|
|
|
|
var newSelectedAgents = []; |
|
|
|
|
LivechatDepartmentAgents.find({ departmentId: department._id }).forEach((agent) => { |
|
|
|
|
newSelectedAgents.push(agent); |
|
|
|
|
}); |
|
|
|
|
this.selectedAgents.set(newSelectedAgents); |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|