Built motion from commit (unavailable).|2.4.4
[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 _0x9099=['request-promise','bluebird','mustache','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','test','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','json','count','offset','limit','set','Content-Range','apply','reject','update','stack','name','send','index','rawAttributes','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','key','VIRTUAL','field','ChatMessage','includeAll','include','rows','params','intersection','options','find','create','body','destroy','describe','chat-interactions','chat','read','readAt','UserId','user','CmContact','Contact','ChatInteraction','ChatInteractionId','isNil','read1stAt','format','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','manual','interface','channel','event','accept','EventManager','parse','interaction','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','SIP/%s','rejectmessage','eml-format','zip-dir'];(function(_0x1f1482,_0x1c9c84){var _0x4ff082=function(_0x52c12c){while(--_0x52c12c){_0x1f1482['push'](_0x1f1482['shift']());}};_0x4ff082(++_0x1c9c84);}(_0x9099,0xf0));var _0x9909=function(_0x30cc1a,_0x162bbc){_0x30cc1a=_0x30cc1a-0x0;var _0xb3f18f=_0x9099[_0x30cc1a];return _0xb3f18f;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9909('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9909('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9909('0x2'));var moment=require('moment');var BPromise=require(_0x9909('0x3'));var Mustache=require(_0x9909('0x4'));var util=require('util');var path=require(_0x9909('0x5'));var sox=require(_0x9909('0x6'));var csv=require(_0x9909('0x7'));var ejs=require(_0x9909('0x8'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9909('0x9'));var deskjs=require(_0x9909('0xa'));var toCsv=require(_0x9909('0x7'));var querystring=require(_0x9909('0xb'));var Papa=require(_0x9909('0xc'));var Redis=require(_0x9909('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x9909('0xe'));var hardwareService=require(_0x9909('0xf'));var logger=require(_0x9909('0x10'))(_0x9909('0x11'));var utils=require(_0x9909('0x12'));var config=require(_0x9909('0x13'));var db=require(_0x9909('0x14'))['db'];config[_0x9909('0x15')]=_[_0x9909('0x16')](config['redis'],{'host':_0x9909('0x17'),'port':0x18eb});var socket=require(_0x9909('0x18'))(new Redis(config[_0x9909('0x15')]));require('./chatMessage.socket')[_0x9909('0x19')](socket);var jayson=require(_0x9909('0x1a'));var client=jayson[_0x9909('0x1b')][_0x9909('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0x9909('0x1c')]({'port':0x232a});function checkPasswordPattern(_0x10565e,_0x1ed34d,_0x1407f8){if(_0x1407f8){var _0x3b29bb=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x3b29bb[_0x9909('0x1d')](_0x1ed34d)){return _0x10565e;}else{throw new Error(_0x9909('0x1e'));}}else{return _0x10565e;}}function respondWithRpcPromise(_0x238351,_0x55c99d,_0x2fe958,_0x1ea8d4){return new BPromise(function(_0x4c15b7,_0x865118){var _0x87cab1=_0x1ea8d4||client;return _0x87cab1[_0x9909('0x1f')](_0x238351,_0x2fe958)[_0x9909('0x20')](function(_0x5071af){logger[_0x9909('0x21')](_0x9909('0x22'),_0x55c99d,_0x9909('0x23'));logger['debug'](_0x9909('0x24'),_0x55c99d,'request\x20sent',JSON[_0x9909('0x25')](_0x5071af));if(_0x5071af[_0x9909('0x26')]){if(_0x5071af[_0x9909('0x26')]['code']===0x1f4){logger[_0x9909('0x26')](_0x9909('0x22'),_0x55c99d,_0x5071af['error']['message']);return _0x865118(_0x5071af[_0x9909('0x26')][_0x9909('0x27')]);}logger[_0x9909('0x26')](_0x9909('0x22'),_0x55c99d,_0x5071af[_0x9909('0x26')][_0x9909('0x27')]);return _0x4c15b7(_0x5071af['error'][_0x9909('0x27')]);}else{logger['info'](_0x9909('0x22'),_0x55c99d,_0x9909('0x23'));_0x4c15b7(_0x5071af[_0x9909('0x28')][_0x9909('0x27')]);}})[_0x9909('0x29')](function(_0x56f5cc){logger[_0x9909('0x26')](_0x9909('0x22'),_0x55c99d,_0x56f5cc);_0x865118(_0x56f5cc);});});}function respondWithStatusCode(_0x3ab2e7,_0x1ce4fa){_0x1ce4fa=_0x1ce4fa||0xcc;return function(_0x5d1a1f){if(_0x5d1a1f){return _0x3ab2e7[_0x9909('0x2a')](_0x1ce4fa);}return _0x3ab2e7['status'](_0x1ce4fa)[_0x9909('0x2b')]();};}function respondWithResult(_0x4e16bd,_0x38f5ed){_0x38f5ed=_0x38f5ed||0xc8;return function(_0x445837){if(_0x445837){return _0x4e16bd[_0x9909('0x2c')](_0x38f5ed)[_0x9909('0x2d')](_0x445837);}};}function respondWithFilteredResult(_0x4c1c09,_0x538cce){return function(_0x1adcff){if(_0x1adcff){var _0x1f4ac0=_0x1adcff[_0x9909('0x2e')],_0x5687e9=_0x538cce[_0x9909('0x2f')],_0x266510=_0x538cce[_0x9909('0x2f')]+_0x538cce[_0x9909('0x30')],_0x180995;if(_0x266510>=_0x1f4ac0){_0x266510=_0x1f4ac0;_0x180995=0xc8;}else{_0x180995=0xce;}_0x4c1c09[_0x9909('0x2c')](_0x180995);return _0x4c1c09[_0x9909('0x31')](_0x9909('0x32'),_0x5687e9+'-'+_0x266510+'/'+_0x1f4ac0)['json'](_0x1adcff);}return null;};}function patchUpdates(_0x386c0c){return function(_0x3cf0c7){try{jsonpatch[_0x9909('0x33')](_0x3cf0c7,_0x386c0c,!![]);}catch(_0x1849f8){return BPromise[_0x9909('0x34')](_0x1849f8);}return _0x3cf0c7['save']();};}function saveUpdates(_0x1052ae,_0x2d2e38){return function(_0xa89601){if(_0xa89601){return _0xa89601[_0x9909('0x35')](_0x1052ae)[_0x9909('0x20')](function(_0x5065e7){return _0x5065e7;});}return null;};}function removeEntity(_0x27f5d5,_0xd5b686){return function(_0x26eeba){if(_0x26eeba){return _0x26eeba['destroy']()[_0x9909('0x20')](function(){_0x27f5d5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x267f96,_0x5b6a83){return function(_0x22df7e){if(!_0x22df7e){_0x267f96[_0x9909('0x2a')](0x194);}return _0x22df7e;};}function handleError(_0x33d53a,_0x56bc74){_0x56bc74=_0x56bc74||0x1f4;return function(_0x196ce6){logger['error'](_0x196ce6[_0x9909('0x36')]);if(_0x196ce6[_0x9909('0x37')]){delete _0x196ce6['name'];}_0x33d53a[_0x9909('0x2c')](_0x56bc74)[_0x9909('0x38')](_0x196ce6);};}exports[_0x9909('0x39')]=function(_0x11731c,_0x4b79ab){var _0x5ab7af={},_0x87fe8b={},_0x12c551={'count':0x0,'rows':[]};var _0x214d1d=db['ChatMessage'][_0x9909('0x3a')];_0x87fe8b[_0x9909('0x3b')]=_['keys'](_0x214d1d);_0x87fe8b['query']=_[_0x9909('0x3c')](_0x11731c[_0x9909('0x3d')]);_0x87fe8b[_0x9909('0x3e')]=_['intersection'](_0x87fe8b[_0x9909('0x3b')],_0x87fe8b['query']);_0x5ab7af[_0x9909('0x3f')]=_['intersection'](_0x87fe8b[_0x9909('0x3b')],qs['fields'](_0x11731c[_0x9909('0x3d')][_0x9909('0x40')]));_0x5ab7af[_0x9909('0x3f')]=_0x5ab7af[_0x9909('0x3f')][_0x9909('0x41')]?_0x5ab7af['attributes']:_0x87fe8b['model'];if(!_0x11731c[_0x9909('0x3d')][_0x9909('0x42')](_0x9909('0x43'))){_0x5ab7af['limit']=qs[_0x9909('0x30')](_0x11731c[_0x9909('0x3d')][_0x9909('0x30')]);_0x5ab7af[_0x9909('0x2f')]=qs[_0x9909('0x2f')](_0x11731c[_0x9909('0x3d')]['offset']);}_0x5ab7af['order']=qs[_0x9909('0x44')](_0x11731c['query'][_0x9909('0x44')]);_0x5ab7af[_0x9909('0x45')]=qs[_0x9909('0x3e')](_[_0x9909('0x46')](_0x11731c[_0x9909('0x3d')],_0x87fe8b[_0x9909('0x3e')]));if(_0x11731c[_0x9909('0x3d')][_0x9909('0x47')]){_0x5ab7af[_0x9909('0x45')]=_[_0x9909('0x48')](_0x5ab7af[_0x9909('0x45')],{'$or':_[_0x9909('0x49')](_0x214d1d,function(_0x2be8ad){if(_0x2be8ad['type'][_0x9909('0x4a')]!==_0x9909('0x4b')){var _0x27666e={};_0x27666e[_0x2be8ad[_0x9909('0x4c')]]={'$like':'%'+_0x11731c[_0x9909('0x3d')][_0x9909('0x47')]+'%'};return _0x27666e;}})});}_0x5ab7af=_[_0x9909('0x48')]({},_0x5ab7af,_0x11731c['options']);var _0x2d23c3={'where':_0x5ab7af['where']};return db[_0x9909('0x4d')][_0x9909('0x2e')](_0x2d23c3)[_0x9909('0x20')](function(_0xd3593b){_0x12c551[_0x9909('0x2e')]=_0xd3593b;if(_0x11731c['query'][_0x9909('0x4e')]){_0x5ab7af[_0x9909('0x4f')]=[{'all':!![]}];}return db[_0x9909('0x4d')]['findAll'](_0x5ab7af);})[_0x9909('0x20')](function(_0x4466f2){_0x12c551[_0x9909('0x50')]=_0x4466f2;return _0x12c551;})[_0x9909('0x20')](respondWithFilteredResult(_0x4b79ab,_0x5ab7af))[_0x9909('0x29')](handleError(_0x4b79ab,null));};exports['show']=function(_0x3fb47b,_0x471b6d){var _0x4bd93b={'raw':!![],'where':{'id':_0x3fb47b[_0x9909('0x51')]['id']}},_0x34a97b={};_0x34a97b['model']=_[_0x9909('0x3c')](db['ChatMessage']['rawAttributes']);_0x34a97b[_0x9909('0x3d')]=_[_0x9909('0x3c')](_0x3fb47b['query']);_0x34a97b['filters']=_[_0x9909('0x52')](_0x34a97b[_0x9909('0x3b')],_0x34a97b[_0x9909('0x3d')]);_0x4bd93b[_0x9909('0x3f')]=_[_0x9909('0x52')](_0x34a97b[_0x9909('0x3b')],qs['fields'](_0x3fb47b['query'][_0x9909('0x40')]));_0x4bd93b[_0x9909('0x3f')]=_0x4bd93b[_0x9909('0x3f')][_0x9909('0x41')]?_0x4bd93b[_0x9909('0x3f')]:_0x34a97b['model'];if(_0x3fb47b[_0x9909('0x3d')][_0x9909('0x4e')]){_0x4bd93b['include']=[{'all':!![]}];}_0x4bd93b=_[_0x9909('0x48')]({},_0x4bd93b,_0x3fb47b[_0x9909('0x53')]);return db[_0x9909('0x4d')][_0x9909('0x54')](_0x4bd93b)[_0x9909('0x20')](handleEntityNotFound(_0x471b6d,null))[_0x9909('0x20')](respondWithResult(_0x471b6d,null))['catch'](handleError(_0x471b6d,null));};exports[_0x9909('0x55')]=function(_0x10fbad,_0x130eb7){return db['ChatMessage']['create'](_0x10fbad['body'],{})[_0x9909('0x20')](respondWithResult(_0x130eb7,0xc9))[_0x9909('0x29')](handleError(_0x130eb7,null));};exports[_0x9909('0x35')]=function(_0x416227,_0x1a8965){if(_0x416227[_0x9909('0x56')]['id']){delete _0x416227['body']['id'];}return db[_0x9909('0x4d')][_0x9909('0x54')]({'where':{'id':_0x416227['params']['id']}})[_0x9909('0x20')](handleEntityNotFound(_0x1a8965,null))[_0x9909('0x20')](saveUpdates(_0x416227['body'],null))['then'](respondWithResult(_0x1a8965,null))[_0x9909('0x29')](handleError(_0x1a8965,null));};exports[_0x9909('0x57')]=function(_0x4afa2e,_0x34be3c){return db[_0x9909('0x4d')][_0x9909('0x54')]({'where':{'id':_0x4afa2e[_0x9909('0x51')]['id']}})[_0x9909('0x20')](handleEntityNotFound(_0x34be3c,null))[_0x9909('0x20')](removeEntity(_0x34be3c,null))['catch'](handleError(_0x34be3c,null));};exports[_0x9909('0x58')]=function(_0x2aae08,_0x3da0c6){return db[_0x9909('0x4d')][_0x9909('0x58')]()['then'](respondWithResult(_0x3da0c6,null))[_0x9909('0x29')](handleError(_0x3da0c6,null));};var interaction_log=require('../../config/logger')(_0x9909('0x59'));exports['accept']=function(_0x50620f,_0x38dae4,_0x37f60f){var _0x46e38f={'channel':_0x9909('0x5a')};if(_0x50620f[_0x9909('0x56')]['id']){delete _0x50620f[_0x9909('0x56')]['id'];}_0x50620f['body'][_0x9909('0x5b')]=!![];_0x50620f[_0x9909('0x56')][_0x9909('0x5c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x50620f[_0x9909('0x56')][_0x9909('0x5d')]=_0x50620f[_0x9909('0x56')][_0x9909('0x5d')]||_0x50620f[_0x9909('0x5e')]['id'];return db[_0x9909('0x4d')]['find']({'where':{'id':_0x50620f[_0x9909('0x51')]['id'],'UserId':null},'include':[{'model':db[_0x9909('0x5f')],'as':_0x9909('0x60')}]})['then'](handleEntityNotFound(_0x38dae4,null))[_0x9909('0x20')](saveUpdates(_0x50620f['body'],null))['then'](function(_0x434d42){if(_0x434d42){_0x46e38f[_0x9909('0x27')]=_0x434d42['get']({'plain':!![]});return db[_0x9909('0x61')][_0x9909('0x54')]({'where':{'id':_0x434d42[_0x9909('0x62')]}});}return null;})['then'](handleEntityNotFound(_0x38dae4,null))[_0x9909('0x20')](function(_0xeb51e9){if(_0xeb51e9){return _0xeb51e9[_0x9909('0x35')]({'UserId':_0x50620f[_0x9909('0x56')]['UserId'],'read1stAt':_[_0x9909('0x63')](_0xeb51e9[_0x9909('0x64')])?moment()[_0x9909('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x9909('0x20')](function(_0x4f8021){if(_0x4f8021){_0x46e38f['interaction']=_0x4f8021[_0x9909('0x66')]({'plain':!![]});interaction_log[_0x9909('0x21')](_0x9909('0x67'),_0x50620f[_0x9909('0x5e')]['id'],_0x50620f[_0x9909('0x5e')]['name'],_0x50620f['user'][_0x9909('0x68')],_0x46e38f['interaction']['id'],_0x50620f[_0x9909('0x56')]?JSON['stringify'](_0x50620f['body']):_0x9909('0x69'));return respondWithRpcPromise(_0x9909('0x6a'),_0x9909('0x6b'),_0x46e38f);}return null;})[_0x9909('0x20')](function(_0x4bab9c){if(_0x4bab9c){if(_0x50620f[_0x9909('0x56')][_0x9909('0x6c')]){_0x46e38f[_0x9909('0x27')][_0x9909('0x6d')]=util['format']('SIP/%s',_0x50620f[_0x9909('0x5e')]['name']);_0x46e38f[_0x9909('0x27')]['channel']=_0x46e38f[_0x9909('0x6e')];_0x46e38f[_0x9909('0x27')][_0x9909('0x6f')]=_0x9909('0x70');return respondWithRpcPromise(_0x9909('0x71'),_0x9909('0x71'),{'event':'acceptmessage','message':_['merge'](_0x46e38f[_0x9909('0x27')],JSON[_0x9909('0x72')](_0x46e38f[_0x9909('0x73')][_0x9909('0x74')]))},client9002)[_0x9909('0x20')](function(){return _0x46e38f;});}return _0x46e38f;}return null;})[_0x9909('0x20')](respondWithResult(_0x38dae4,null))['catch'](handleError(_0x38dae4,null));};var interaction_log=require(_0x9909('0x10'))('chat-interactions');exports[_0x9909('0x34')]=function(_0x24dc48,_0x4f7697,_0x2d62ed){var _0x3f51f7={'agent':{},'channel':_0x9909('0x5a')};if(_0x24dc48[_0x9909('0x56')]['id']){delete _0x24dc48[_0x9909('0x56')]['id'];}_0x24dc48['body']['UserId']=_0x24dc48['body'][_0x9909('0x5d')]||_0x24dc48['user']['id'];_0x3f51f7['agent']['id']=_0x24dc48['body'][_0x9909('0x5d')];return db['ChatMessage'][_0x9909('0x54')]({'where':{'id':_0x24dc48[_0x9909('0x51')]['id'],'UserId':null}})[_0x9909('0x20')](handleEntityNotFound(_0x4f7697,null))['then'](function(_0x25d1d5){if(_0x25d1d5){_0x3f51f7['message']=_0x25d1d5['get']({'plain':!![]});return db[_0x9909('0x61')]['find']({'where':{'id':_0x25d1d5[_0x9909('0x62')]}});}return null;})[_0x9909('0x20')](handleEntityNotFound(_0x4f7697,null))[_0x9909('0x20')](function(_0x422747){if(_0x422747){_0x3f51f7['interaction']=_0x422747[_0x9909('0x66')]({'plain':!![]});interaction_log[_0x9909('0x21')](_0x9909('0x75'),_0x24dc48[_0x9909('0x5e')]['id'],_0x24dc48[_0x9909('0x5e')][_0x9909('0x37')],_0x24dc48[_0x9909('0x5e')][_0x9909('0x68')],_0x3f51f7[_0x9909('0x73')]['id'],_0x24dc48[_0x9909('0x56')]?JSON['stringify'](_0x24dc48[_0x9909('0x56')]):_0x9909('0x69'));return respondWithRpcPromise(_0x9909('0x76'),'rejectMessage',_0x3f51f7);}return null;})[_0x9909('0x20')](function(_0x48c54a){if(_0x48c54a){_0x48c54a[_0x9909('0x27')]['interface']=util[_0x9909('0x65')](_0x9909('0x77'),_0x24dc48[_0x9909('0x5e')]['name']);_0x48c54a[_0x9909('0x27')][_0x9909('0x6e')]=_0x3f51f7['channel'];_0x48c54a[_0x9909('0x27')][_0x9909('0x6f')]=_0x9909('0x34');respondWithRpcPromise('EventManager',_0x9909('0x71'),{'event':_0x9909('0x78'),'message':_0x48c54a[_0x9909('0x27')]},client9002);return _0x3f51f7;}return null;})['then'](respondWithResult(_0x4f7697,null))['catch'](handleError(_0x4f7697,null));};