diff --git a/packages/rocketchat-livechat/app/client/lib/chatMessages.coffee b/packages/rocketchat-livechat/app/client/lib/chatMessages.coffee index d7c529a1c1a..842976af361 100644 --- a/packages/rocketchat-livechat/app/client/lib/chatMessages.coffee +++ b/packages/rocketchat-livechat/app/client/lib/chatMessages.coffee @@ -93,7 +93,7 @@ class @ChatMessages showError error.reason if not Meteor.userId() - Meteor.call 'registerGuest', visitor.getToken(), (error, result) -> + Meteor.call 'livechat:registerGuest', { token: visitor.getToken() }, (error, result) -> if error? return showError error.reason diff --git a/packages/rocketchat-livechat/app/client/views/register.js b/packages/rocketchat-livechat/app/client/views/register.js index 5816d9d6320..df91839e23a 100644 --- a/packages/rocketchat-livechat/app/client/views/register.js +++ b/packages/rocketchat-livechat/app/client/views/register.js @@ -6,7 +6,7 @@ Template.register.helpers({ return ""; }, hasDepartments() { - return Department.find().count() > 0; + return Department.find().count() > 1; }, departments() { return Department.find(); @@ -22,11 +22,19 @@ Template.register.events({ if (!($name.val().trim() && $email.val().trim())) { return instance.showError(TAPi18n.__('Please_fill_name_and_email')); } else { + var departmentId = instance.$('select[name=department]').val(); + if (!departmentId) { + var department = Department.findOne(); + if (department) { + departmentId = department._id; + } + } + var guest = { token: visitor.getToken(), name: $name.val(), email: $email.val(), - department: instance.$('select[name=department]').val() + department: departmentId }; Meteor.call('livechat:registerGuest', guest, function(error, result) { if (error != null) { diff --git a/packages/rocketchat-livechat/server/methods/registerGuest.js b/packages/rocketchat-livechat/server/methods/registerGuest.js index d6ec15da83c..8131aa6aa8e 100644 --- a/packages/rocketchat-livechat/server/methods/registerGuest.js +++ b/packages/rocketchat-livechat/server/methods/registerGuest.js @@ -1,5 +1,5 @@ Meteor.methods({ - 'livechat:registerGuest': function({ token, name, email, department }) { + 'livechat:registerGuest': function({ token, name, email, department } = {}) { var pass, qt, user, userData, userExists, userId, inc = 0; check(token, String); diff --git a/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js b/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js index 1d55428cc70..183b404fe0e 100644 --- a/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js +++ b/packages/rocketchat-livechat/server/methods/sendMessageLivechat.js @@ -14,6 +14,15 @@ Meteor.methods({ room = RocketChat.models.Rooms.findOneById(message.rid); if (room == null) { + + // if no department selected verify if there is only one active and use it + if (!guest.department) { + var departments = RocketChat.models.LivechatDepartment.findEnabledWithAgents(); + if (departments.count() === 1) { + guest.department = departments.fetch()[0]._id; + } + } + agent = getNextAgent(guest.department); if (!agent) { throw new Meteor.Error('no-agent-online', 'Sorry, no online agents');