Built motion from commit db94841.|2.5.3
[motion2.git] / server / api / chatMessage / chatMessage.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x0505=['sendStatus','stack','name','send','index','ChatMessage','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','limit','sort','where','pick','filter','map','VIRTUAL','merge','options','findAll','rows','show','params','keys','includeAll','find','body','describe','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','Contact','get','ChatInteraction','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','AcceptMessage','interface','SIP/%s','channel','EventManager','parse','formData','chat-interactions','chat','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','event','rejectmessage','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./chatMessage.socket','register','http','client','test','Sequelize','ValidationError','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','message','catch','status','end','json','offset','set','Content-Range','apply','reject','save','update','destroy'];(function(_0x34281b,_0x23dcbe){var _0x148781=function(_0x1b5004){while(--_0x1b5004){_0x34281b['push'](_0x34281b['shift']());}};_0x148781(++_0x23dcbe);}(_0x0505,0x1a9));var _0x5050=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x0505[_0x279d37];return _0x530173;};'use strict';var pdf=require(_0x5050('0x0'));var emlformat=require(_0x5050('0x1'));var rimraf=require(_0x5050('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5050('0x3'));var moment=require(_0x5050('0x4'));var BPromise=require(_0x5050('0x5'));var Mustache=require(_0x5050('0x6'));var util=require(_0x5050('0x7'));var path=require(_0x5050('0x8'));var sox=require('sox');var csv=require(_0x5050('0x9'));var ejs=require(_0x5050('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x5050('0xb'));var crypto=require(_0x5050('0xc'));var jsforce=require(_0x5050('0xd'));var deskjs=require(_0x5050('0xe'));var toCsv=require(_0x5050('0x9'));var querystring=require('querystring');var Papa=require(_0x5050('0xf'));var Redis=require('ioredis');var authService=require(_0x5050('0x10'));var qs=require(_0x5050('0x11'));var as=require(_0x5050('0x12'));var hardwareService=require(_0x5050('0x13'));var logger=require(_0x5050('0x14'))(_0x5050('0x15'));var utils=require(_0x5050('0x16'));var config=require(_0x5050('0x17'));var db=require('../../mysqldb')['db'];config[_0x5050('0x18')]=_['defaults'](config[_0x5050('0x18')],{'host':_0x5050('0x19'),'port':0x18eb});var socket=require(_0x5050('0x1a'))(new Redis(config['redis']));require(_0x5050('0x1b'))[_0x5050('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x5050('0x1d')]({'port':0x232c});var client9002=jayson[_0x5050('0x1e')]['http']({'port':0x232a});function checkPasswordPattern(_0x3ff9e8,_0x174a97,_0x33d591){if(_0x33d591){var _0x1bd26e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x1bd26e[_0x5050('0x1f')](_0x174a97)){return _0x3ff9e8;}else{throw new db[(_0x5050('0x20'))][(_0x5050('0x21'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');}}else{return _0x3ff9e8;}}function respondWithRpcPromise(_0x177b68,_0x265738,_0x1a7256,_0x228cfd){return new BPromise(function(_0xacb856,_0x2a57f3){var _0x23cac9=_0x228cfd||client;return _0x23cac9[_0x5050('0x22')](_0x177b68,_0x1a7256)[_0x5050('0x23')](function(_0x45843d){logger[_0x5050('0x24')](_0x5050('0x25'),_0x265738,_0x5050('0x26'));logger[_0x5050('0x27')](_0x5050('0x28'),_0x265738,_0x5050('0x26'),JSON['stringify'](_0x45843d));if(_0x45843d[_0x5050('0x29')]){if(_0x45843d[_0x5050('0x29')]['code']===0x1f4){logger[_0x5050('0x29')](_0x5050('0x25'),_0x265738,_0x45843d[_0x5050('0x29')][_0x5050('0x2a')]);return _0x2a57f3(_0x45843d['error']['message']);}logger[_0x5050('0x29')](_0x5050('0x25'),_0x265738,_0x45843d['error'][_0x5050('0x2a')]);return _0xacb856(_0x45843d[_0x5050('0x29')][_0x5050('0x2a')]);}else{logger[_0x5050('0x24')](_0x5050('0x25'),_0x265738,'request\x20sent');_0xacb856(_0x45843d['result']['message']);}})[_0x5050('0x2b')](function(_0xa11ef3){logger[_0x5050('0x29')]('ChatMessage,\x20%s,\x20%s',_0x265738,_0xa11ef3);_0x2a57f3(_0xa11ef3);});});}function respondWithStatusCode(_0x93e249,_0x112c5a){_0x112c5a=_0x112c5a||0xcc;return function(_0x15634d){if(_0x15634d){return _0x93e249['sendStatus'](_0x112c5a);}return _0x93e249[_0x5050('0x2c')](_0x112c5a)[_0x5050('0x2d')]();};}function respondWithResult(_0x10f5c7,_0x1046b3){_0x1046b3=_0x1046b3||0xc8;return function(_0x574418){if(_0x574418){return _0x10f5c7[_0x5050('0x2c')](_0x1046b3)[_0x5050('0x2e')](_0x574418);}};}function respondWithFilteredResult(_0x587926,_0x5e8d23){return function(_0x48bb56){if(_0x48bb56){var _0x30837d=_0x48bb56['count'],_0x5ba10c=_0x5e8d23[_0x5050('0x2f')],_0x269b8c=_0x5e8d23[_0x5050('0x2f')]+_0x5e8d23['limit'],_0x9488c7;if(_0x269b8c>=_0x30837d){_0x269b8c=_0x30837d;_0x9488c7=0xc8;}else{_0x9488c7=0xce;}_0x587926['status'](_0x9488c7);return _0x587926[_0x5050('0x30')](_0x5050('0x31'),_0x5ba10c+'-'+_0x269b8c+'/'+_0x30837d)['json'](_0x48bb56);}return null;};}function patchUpdates(_0x24ce00){return function(_0x477942){try{jsonpatch[_0x5050('0x32')](_0x477942,_0x24ce00,!![]);}catch(_0x193274){return BPromise[_0x5050('0x33')](_0x193274);}return _0x477942[_0x5050('0x34')]();};}function saveUpdates(_0x50d98f,_0x499c21){return function(_0x1937e1){if(_0x1937e1){return _0x1937e1[_0x5050('0x35')](_0x50d98f)[_0x5050('0x23')](function(_0x188004){return _0x188004;});}return null;};}function removeEntity(_0x43303c,_0xade040){return function(_0x64503b){if(_0x64503b){return _0x64503b[_0x5050('0x36')]()[_0x5050('0x23')](function(){_0x43303c[_0x5050('0x2c')](0xcc)[_0x5050('0x2d')]();});}};}function handleEntityNotFound(_0x2ee596,_0x46253a){return function(_0x39009a){if(!_0x39009a){_0x2ee596[_0x5050('0x37')](0x194);}return _0x39009a;};}function handleError(_0x26a708,_0x2efc04){_0x2efc04=_0x2efc04||0x1f4;return function(_0x40f55e){logger[_0x5050('0x29')](_0x40f55e[_0x5050('0x38')]);if(_0x40f55e[_0x5050('0x39')]){delete _0x40f55e[_0x5050('0x39')];}_0x26a708[_0x5050('0x2c')](_0x2efc04)[_0x5050('0x3a')](_0x40f55e);};}exports[_0x5050('0x3b')]=function(_0x436c8e,_0x45b580){var _0xa1c029={},_0x4840f8={},_0x280d85={'count':0x0,'rows':[]};var _0x58f857=_['map'](db[_0x5050('0x3c')][_0x5050('0x3d')],function(_0x1a8dcd){return{'name':_0x1a8dcd[_0x5050('0x3e')],'type':_0x1a8dcd[_0x5050('0x3f')][_0x5050('0x40')]};});_0x4840f8[_0x5050('0x41')]=_['map'](_0x58f857,_0x5050('0x39'));_0x4840f8['query']=_['keys'](_0x436c8e[_0x5050('0x42')]);_0x4840f8[_0x5050('0x43')]=_[_0x5050('0x44')](_0x4840f8[_0x5050('0x41')],_0x4840f8[_0x5050('0x42')]);_0xa1c029['attributes']=_['intersection'](_0x4840f8[_0x5050('0x41')],qs[_0x5050('0x45')](_0x436c8e[_0x5050('0x42')][_0x5050('0x45')]));_0xa1c029[_0x5050('0x46')]=_0xa1c029[_0x5050('0x46')][_0x5050('0x47')]?_0xa1c029[_0x5050('0x46')]:_0x4840f8[_0x5050('0x41')];if(!_0x436c8e[_0x5050('0x42')]['hasOwnProperty'](_0x5050('0x48'))){_0xa1c029[_0x5050('0x49')]=qs['limit'](_0x436c8e[_0x5050('0x42')][_0x5050('0x49')]);_0xa1c029[_0x5050('0x2f')]=qs[_0x5050('0x2f')](_0x436c8e[_0x5050('0x42')]['offset']);}_0xa1c029['order']=qs[_0x5050('0x4a')](_0x436c8e[_0x5050('0x42')][_0x5050('0x4a')]);_0xa1c029[_0x5050('0x4b')]=qs[_0x5050('0x43')](_[_0x5050('0x4c')](_0x436c8e[_0x5050('0x42')],_0x4840f8[_0x5050('0x43')]),_0x58f857);if(_0x436c8e[_0x5050('0x42')][_0x5050('0x4d')]){_0xa1c029['where']=_['merge'](_0xa1c029['where'],{'$or':_[_0x5050('0x4e')](_0x58f857,function(_0x332d88){if(_0x332d88[_0x5050('0x3f')]!==_0x5050('0x4f')){var _0x57a191={};_0x57a191[_0x332d88[_0x5050('0x39')]]={'$like':'%'+_0x436c8e[_0x5050('0x42')][_0x5050('0x4d')]+'%'};return _0x57a191;}})});}_0xa1c029=_[_0x5050('0x50')]({},_0xa1c029,_0x436c8e[_0x5050('0x51')]);var _0x366963={'where':_0xa1c029['where']};return db[_0x5050('0x3c')]['count'](_0x366963)[_0x5050('0x23')](function(_0x5d2235){_0x280d85['count']=_0x5d2235;if(_0x436c8e[_0x5050('0x42')]['includeAll']){_0xa1c029['include']=[{'all':!![]}];}return db['ChatMessage'][_0x5050('0x52')](_0xa1c029);})['then'](function(_0x101fab){_0x280d85[_0x5050('0x53')]=_0x101fab;return _0x280d85;})[_0x5050('0x23')](respondWithFilteredResult(_0x45b580,_0xa1c029))[_0x5050('0x2b')](handleError(_0x45b580,null));};exports[_0x5050('0x54')]=function(_0xa338bc,_0x355186){var _0x2f919f={'raw':!![],'where':{'id':_0xa338bc[_0x5050('0x55')]['id']}},_0x2cf5c8={};_0x2cf5c8[_0x5050('0x41')]=_[_0x5050('0x56')](db['ChatMessage']['rawAttributes']);_0x2cf5c8[_0x5050('0x42')]=_[_0x5050('0x56')](_0xa338bc[_0x5050('0x42')]);_0x2cf5c8[_0x5050('0x43')]=_[_0x5050('0x44')](_0x2cf5c8['model'],_0x2cf5c8[_0x5050('0x42')]);_0x2f919f['attributes']=_['intersection'](_0x2cf5c8['model'],qs['fields'](_0xa338bc['query'][_0x5050('0x45')]));_0x2f919f[_0x5050('0x46')]=_0x2f919f[_0x5050('0x46')]['length']?_0x2f919f[_0x5050('0x46')]:_0x2cf5c8[_0x5050('0x41')];if(_0xa338bc[_0x5050('0x42')][_0x5050('0x57')]){_0x2f919f['include']=[{'all':!![]}];}_0x2f919f=_['merge']({},_0x2f919f,_0xa338bc[_0x5050('0x51')]);return db[_0x5050('0x3c')][_0x5050('0x58')](_0x2f919f)[_0x5050('0x23')](handleEntityNotFound(_0x355186,null))[_0x5050('0x23')](respondWithResult(_0x355186,null))[_0x5050('0x2b')](handleError(_0x355186,null));};exports['create']=function(_0xbf5864,_0x345f2d){return db[_0x5050('0x3c')]['create'](_0xbf5864[_0x5050('0x59')],{})['then'](respondWithResult(_0x345f2d,0xc9))[_0x5050('0x2b')](handleError(_0x345f2d,null));};exports[_0x5050('0x35')]=function(_0x42d310,_0x443648){if(_0x42d310[_0x5050('0x59')]['id']){delete _0x42d310[_0x5050('0x59')]['id'];}return db[_0x5050('0x3c')][_0x5050('0x58')]({'where':{'id':_0x42d310[_0x5050('0x55')]['id']}})[_0x5050('0x23')](handleEntityNotFound(_0x443648,null))[_0x5050('0x23')](saveUpdates(_0x42d310['body'],null))[_0x5050('0x23')](respondWithResult(_0x443648,null))['catch'](handleError(_0x443648,null));};exports[_0x5050('0x36')]=function(_0x587f72,_0x271b8e){return db[_0x5050('0x3c')][_0x5050('0x58')]({'where':{'id':_0x587f72['params']['id']}})[_0x5050('0x23')](handleEntityNotFound(_0x271b8e,null))[_0x5050('0x23')](removeEntity(_0x271b8e,null))[_0x5050('0x2b')](handleError(_0x271b8e,null));};exports['describe']=function(_0x482f40,_0x56de0a){return db[_0x5050('0x3c')][_0x5050('0x5a')]()[_0x5050('0x23')](respondWithResult(_0x56de0a,null))[_0x5050('0x2b')](handleError(_0x56de0a,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports['accept']=function(_0x44f548,_0x21f3fe,_0x1fd50d){var _0x40db9c={'channel':'chat'};if(_0x44f548[_0x5050('0x59')]['id']){delete _0x44f548[_0x5050('0x59')]['id'];}_0x44f548['body']['read']=!![];_0x44f548['body'][_0x5050('0x5b')]=moment()[_0x5050('0x5c')](_0x5050('0x5d'));_0x44f548[_0x5050('0x59')][_0x5050('0x5e')]=_0x44f548[_0x5050('0x59')][_0x5050('0x5e')]||_0x44f548[_0x5050('0x5f')]['id'];return db['ChatMessage'][_0x5050('0x58')]({'where':{'id':_0x44f548[_0x5050('0x55')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0x5050('0x60')}]})[_0x5050('0x23')](handleEntityNotFound(_0x21f3fe,null))[_0x5050('0x23')](saveUpdates(_0x44f548[_0x5050('0x59')],null))['then'](function(_0x3cc3fd){if(_0x3cc3fd){_0x40db9c[_0x5050('0x2a')]=_0x3cc3fd[_0x5050('0x61')]({'plain':!![]});return db[_0x5050('0x62')][_0x5050('0x58')]({'where':{'id':_0x3cc3fd['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x21f3fe,null))['then'](function(_0x5bb627){if(_0x5bb627){return _0x5bb627['update']({'UserId':_0x44f548[_0x5050('0x59')]['UserId'],'read1stAt':_[_0x5050('0x63')](_0x5bb627[_0x5050('0x64')])?moment()[_0x5050('0x5c')](_0x5050('0x5d')):undefined});}return null;})[_0x5050('0x23')](function(_0x3d20dc){if(_0x3d20dc){_0x40db9c[_0x5050('0x65')]=_0x3d20dc[_0x5050('0x61')]({'plain':!![]});interaction_log[_0x5050('0x24')](_0x5050('0x66'),_0x44f548[_0x5050('0x5f')]['id'],_0x44f548['user'][_0x5050('0x39')],_0x44f548[_0x5050('0x5f')]['role'],_0x40db9c[_0x5050('0x65')]['id'],_0x44f548[_0x5050('0x59')]?JSON[_0x5050('0x67')](_0x44f548['body']):_0x5050('0x68'));return respondWithRpcPromise(_0x5050('0x69'),'acceptMessage',_0x40db9c);}return null;})['then'](function(_0x33d7e6){if(_0x33d7e6){if(_0x44f548['body']['manual']){_0x40db9c[_0x5050('0x2a')][_0x5050('0x6a')]=util[_0x5050('0x5c')](_0x5050('0x6b'),_0x44f548[_0x5050('0x5f')][_0x5050('0x39')]);_0x40db9c[_0x5050('0x2a')][_0x5050('0x6c')]=_0x40db9c['channel'];_0x40db9c[_0x5050('0x2a')]['event']='accept';return respondWithRpcPromise(_0x5050('0x6d'),_0x5050('0x6d'),{'event':'acceptmessage','message':_['merge'](_0x40db9c['message'],JSON[_0x5050('0x6e')](_0x40db9c[_0x5050('0x65')][_0x5050('0x6f')]))},client9002)[_0x5050('0x23')](function(){return _0x40db9c;});}return _0x40db9c;}return null;})['then'](respondWithResult(_0x21f3fe,null))[_0x5050('0x2b')](handleError(_0x21f3fe,null));};var interaction_log=require(_0x5050('0x14'))(_0x5050('0x70'));exports['reject']=function(_0x53832f,_0x507d09,_0xb70a4d){var _0x7f579c={'agent':{},'channel':_0x5050('0x71')};if(_0x53832f['body']['id']){delete _0x53832f[_0x5050('0x59')]['id'];}_0x53832f['body'][_0x5050('0x5e')]=_0x53832f['body'][_0x5050('0x5e')]||_0x53832f[_0x5050('0x5f')]['id'];_0x7f579c['agent']['id']=_0x53832f[_0x5050('0x59')]['UserId'];return db[_0x5050('0x3c')][_0x5050('0x58')]({'where':{'id':_0x53832f['params']['id'],'UserId':null}})[_0x5050('0x23')](handleEntityNotFound(_0x507d09,null))[_0x5050('0x23')](function(_0x7d4f52){if(_0x7d4f52){_0x7f579c[_0x5050('0x2a')]=_0x7d4f52['get']({'plain':!![]});return db['ChatInteraction'][_0x5050('0x58')]({'where':{'id':_0x7d4f52[_0x5050('0x72')]}});}return null;})[_0x5050('0x23')](handleEntityNotFound(_0x507d09,null))['then'](function(_0x297b65){if(_0x297b65){_0x7f579c['interaction']=_0x297b65[_0x5050('0x61')]({'plain':!![]});interaction_log[_0x5050('0x24')](_0x5050('0x73'),_0x53832f['user']['id'],_0x53832f[_0x5050('0x5f')][_0x5050('0x39')],_0x53832f[_0x5050('0x5f')][_0x5050('0x74')],_0x7f579c[_0x5050('0x65')]['id'],_0x53832f[_0x5050('0x59')]?JSON['stringify'](_0x53832f[_0x5050('0x59')]):_0x5050('0x68'));return respondWithRpcPromise('RejectMessage',_0x5050('0x75'),_0x7f579c);}return null;})['then'](function(_0x283d5e){if(_0x283d5e){_0x283d5e[_0x5050('0x2a')][_0x5050('0x6a')]=util[_0x5050('0x5c')]('SIP/%s',_0x53832f[_0x5050('0x5f')]['name']);_0x283d5e[_0x5050('0x2a')][_0x5050('0x6c')]=_0x7f579c[_0x5050('0x6c')];_0x283d5e['message'][_0x5050('0x76')]='reject';respondWithRpcPromise(_0x5050('0x6d'),_0x5050('0x6d'),{'event':_0x5050('0x77'),'message':_0x283d5e['message']},client9002);return _0x7f579c;}return null;})[_0x5050('0x23')](respondWithResult(_0x507d09,null))[_0x5050('0x2b')](handleError(_0x507d09,null));};