76b06dace7cb728c6a35171a66e91d86213edfa2
[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 _0xedd9=['ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','ChatMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','name','send','index','map','ChatMessage','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','options','includeAll','include','findAll','rows','params','merge','find','create','body','describe','chat','readAt','format','UserId','agent','CmContact','Contact','get','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','ChatInteraction'];(function(_0x4e83be,_0x43ce01){var _0x1d1a28=function(_0x4f7096){while(--_0x4f7096){_0x4e83be['push'](_0x4e83be['shift']());}};_0x1d1a28(++_0x43ce01);}(_0xedd9,0xfc));var _0x9edd=function(_0x1f3f9b,_0x55efc3){_0x1f3f9b=_0x1f3f9b-0x0;var _0x45d4e2=_0xedd9[_0x1f3f9b];return _0x45d4e2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];config[_0x9edd('0x18')]=_[_0x9edd('0x19')](config[_0x9edd('0x18')],{'host':_0x9edd('0x1a'),'port':0x18eb});var socket=require(_0x9edd('0x1b'))(new Redis(config['redis']));require(_0x9edd('0x1c'))[_0x9edd('0x1d')](socket);var jayson=require(_0x9edd('0x1e'));var client=jayson[_0x9edd('0x1f')][_0x9edd('0x20')]({'port':0x232c});var client9002=jayson[_0x9edd('0x1f')][_0x9edd('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x75a4ab,_0x4ea60f,_0x5f5bf4,_0x448996){return new BPromise(function(_0x449cee,_0x5acf65){var _0x1b54c0=_0x448996||client;return _0x1b54c0[_0x9edd('0x21')](_0x75a4ab,_0x5f5bf4)[_0x9edd('0x22')](function(_0x4d8f33){logger[_0x9edd('0x23')]('ChatMessage,\x20%s,\x20%s',_0x4ea60f,_0x9edd('0x24'));logger[_0x9edd('0x25')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x4ea60f,'request\x20sent',JSON[_0x9edd('0x26')](_0x4d8f33));if(_0x4d8f33['error']){if(_0x4d8f33[_0x9edd('0x27')]['code']===0x1f4){logger['error'](_0x9edd('0x28'),_0x4ea60f,_0x4d8f33[_0x9edd('0x27')]['message']);return _0x5acf65(_0x4d8f33['error'][_0x9edd('0x29')]);}logger[_0x9edd('0x27')](_0x9edd('0x28'),_0x4ea60f,_0x4d8f33['error'][_0x9edd('0x29')]);return _0x449cee(_0x4d8f33[_0x9edd('0x27')][_0x9edd('0x29')]);}else{logger[_0x9edd('0x23')](_0x9edd('0x28'),_0x4ea60f,'request\x20sent');_0x449cee(_0x4d8f33[_0x9edd('0x2a')][_0x9edd('0x29')]);}})[_0x9edd('0x2b')](function(_0x2f9f86){logger[_0x9edd('0x27')]('ChatMessage,\x20%s,\x20%s',_0x4ea60f,_0x2f9f86);_0x5acf65(_0x2f9f86);});});}function respondWithStatusCode(_0x4b3d1b,_0x3276ee){_0x3276ee=_0x3276ee||0xcc;return function(_0xfeca7b){if(_0xfeca7b){return _0x4b3d1b[_0x9edd('0x2c')](_0x3276ee);}return _0x4b3d1b[_0x9edd('0x2d')](_0x3276ee)[_0x9edd('0x2e')]();};}function respondWithResult(_0x4fe471,_0x57a2cc){_0x57a2cc=_0x57a2cc||0xc8;return function(_0x214d0a){if(_0x214d0a){return _0x4fe471[_0x9edd('0x2d')](_0x57a2cc)[_0x9edd('0x2f')](_0x214d0a);}};}function respondWithFilteredResult(_0x52746a,_0x238b22){return function(_0x28cfae){if(_0x28cfae){var _0x2ae8dd=_0x28cfae[_0x9edd('0x30')],_0x41af53=_0x238b22[_0x9edd('0x31')],_0x5eccfb=_0x238b22[_0x9edd('0x31')]+_0x238b22[_0x9edd('0x32')],_0x2155a1;if(_0x5eccfb>=_0x2ae8dd){_0x5eccfb=_0x2ae8dd;_0x2155a1=0xc8;}else{_0x2155a1=0xce;}_0x52746a[_0x9edd('0x2d')](_0x2155a1);return _0x52746a[_0x9edd('0x33')](_0x9edd('0x34'),_0x41af53+'-'+_0x5eccfb+'/'+_0x2ae8dd)[_0x9edd('0x2f')](_0x28cfae);}return null;};}function patchUpdates(_0x1c2e2b){return function(_0x4fd03f){try{jsonpatch[_0x9edd('0x35')](_0x4fd03f,_0x1c2e2b,!![]);}catch(_0x6907a5){return BPromise[_0x9edd('0x36')](_0x6907a5);}return _0x4fd03f[_0x9edd('0x37')]();};}function saveUpdates(_0x5af178,_0x1453d2){return function(_0x259259){if(_0x259259){return _0x259259[_0x9edd('0x38')](_0x5af178)['then'](function(_0x2d2f88){return _0x2d2f88;});}return null;};}function removeEntity(_0x3990fb,_0xde9b13){return function(_0x38a7be){if(_0x38a7be){return _0x38a7be[_0x9edd('0x39')]()[_0x9edd('0x22')](function(){_0x3990fb[_0x9edd('0x2d')](0xcc)[_0x9edd('0x2e')]();});}};}function handleEntityNotFound(_0xd0fd74,_0x2539c6){return function(_0x29e789){if(!_0x29e789){_0xd0fd74[_0x9edd('0x2c')](0x194);}return _0x29e789;};}function handleError(_0x27eb7e,_0x14f780){_0x14f780=_0x14f780||0x1f4;return function(_0x5757fc){logger[_0x9edd('0x27')](_0x5757fc['stack']);if(_0x5757fc[_0x9edd('0x3a')]){delete _0x5757fc[_0x9edd('0x3a')];}_0x27eb7e[_0x9edd('0x2d')](_0x14f780)[_0x9edd('0x3b')](_0x5757fc);};}exports[_0x9edd('0x3c')]=function(_0x4fa5ab,_0x6de835){var _0x44dbfc={},_0x2b3469={},_0x38e9be={'count':0x0,'rows':[]};var _0x1be77f=_[_0x9edd('0x3d')](db[_0x9edd('0x3e')][_0x9edd('0x3f')],function(_0x1ccee8){return{'name':_0x1ccee8[_0x9edd('0x40')],'type':_0x1ccee8['type'][_0x9edd('0x41')]};});_0x2b3469['model']=_[_0x9edd('0x3d')](_0x1be77f,'name');_0x2b3469[_0x9edd('0x42')]=_[_0x9edd('0x43')](_0x4fa5ab[_0x9edd('0x42')]);_0x2b3469['filters']=_[_0x9edd('0x44')](_0x2b3469[_0x9edd('0x45')],_0x2b3469[_0x9edd('0x42')]);_0x44dbfc['attributes']=_[_0x9edd('0x44')](_0x2b3469['model'],qs[_0x9edd('0x46')](_0x4fa5ab[_0x9edd('0x42')]['fields']));_0x44dbfc[_0x9edd('0x47')]=_0x44dbfc[_0x9edd('0x47')][_0x9edd('0x48')]?_0x44dbfc[_0x9edd('0x47')]:_0x2b3469['model'];if(!_0x4fa5ab[_0x9edd('0x42')]['hasOwnProperty'](_0x9edd('0x49'))){_0x44dbfc[_0x9edd('0x32')]=qs['limit'](_0x4fa5ab[_0x9edd('0x42')]['limit']);_0x44dbfc['offset']=qs[_0x9edd('0x31')](_0x4fa5ab[_0x9edd('0x42')][_0x9edd('0x31')]);}_0x44dbfc[_0x9edd('0x4a')]=qs[_0x9edd('0x4b')](_0x4fa5ab[_0x9edd('0x42')][_0x9edd('0x4b')]);_0x44dbfc[_0x9edd('0x4c')]=qs[_0x9edd('0x4d')](_[_0x9edd('0x4e')](_0x4fa5ab[_0x9edd('0x42')],_0x2b3469[_0x9edd('0x4d')]),_0x1be77f);if(_0x4fa5ab[_0x9edd('0x42')][_0x9edd('0x4f')]){_0x44dbfc[_0x9edd('0x4c')]=_['merge'](_0x44dbfc[_0x9edd('0x4c')],{'$or':_[_0x9edd('0x3d')](_0x1be77f,function(_0x2231c1){if(_0x2231c1[_0x9edd('0x50')]!==_0x9edd('0x51')){var _0x3ecdfd={};_0x3ecdfd[_0x2231c1[_0x9edd('0x3a')]]={'$like':'%'+_0x4fa5ab['query']['filter']+'%'};return _0x3ecdfd;}})});}_0x44dbfc=_['merge']({},_0x44dbfc,_0x4fa5ab[_0x9edd('0x52')]);var _0x58a1dd={'where':_0x44dbfc[_0x9edd('0x4c')]};return db[_0x9edd('0x3e')][_0x9edd('0x30')](_0x58a1dd)[_0x9edd('0x22')](function(_0x367791){_0x38e9be['count']=_0x367791;if(_0x4fa5ab[_0x9edd('0x42')][_0x9edd('0x53')]){_0x44dbfc[_0x9edd('0x54')]=[{'all':!![]}];}return db['ChatMessage'][_0x9edd('0x55')](_0x44dbfc);})[_0x9edd('0x22')](function(_0x2159aa){_0x38e9be[_0x9edd('0x56')]=_0x2159aa;return _0x38e9be;})[_0x9edd('0x22')](respondWithFilteredResult(_0x6de835,_0x44dbfc))[_0x9edd('0x2b')](handleError(_0x6de835,null));};exports['show']=function(_0x441e4a,_0x237e91){var _0x596b71={'raw':!![],'where':{'id':_0x441e4a[_0x9edd('0x57')]['id']}},_0xb93816={};_0xb93816['model']=_[_0x9edd('0x43')](db[_0x9edd('0x3e')][_0x9edd('0x3f')]);_0xb93816['query']=_[_0x9edd('0x43')](_0x441e4a[_0x9edd('0x42')]);_0xb93816[_0x9edd('0x4d')]=_[_0x9edd('0x44')](_0xb93816['model'],_0xb93816[_0x9edd('0x42')]);_0x596b71[_0x9edd('0x47')]=_[_0x9edd('0x44')](_0xb93816['model'],qs[_0x9edd('0x46')](_0x441e4a[_0x9edd('0x42')]['fields']));_0x596b71[_0x9edd('0x47')]=_0x596b71['attributes'][_0x9edd('0x48')]?_0x596b71[_0x9edd('0x47')]:_0xb93816[_0x9edd('0x45')];if(_0x441e4a[_0x9edd('0x42')][_0x9edd('0x53')]){_0x596b71[_0x9edd('0x54')]=[{'all':!![]}];}_0x596b71=_[_0x9edd('0x58')]({},_0x596b71,_0x441e4a[_0x9edd('0x52')]);return db[_0x9edd('0x3e')][_0x9edd('0x59')](_0x596b71)[_0x9edd('0x22')](handleEntityNotFound(_0x237e91,null))['then'](respondWithResult(_0x237e91,null))[_0x9edd('0x2b')](handleError(_0x237e91,null));};exports[_0x9edd('0x5a')]=function(_0x3acc09,_0x58fe29){return db[_0x9edd('0x3e')]['create'](_0x3acc09['body'],{})['then'](respondWithResult(_0x58fe29,0xc9))[_0x9edd('0x2b')](handleError(_0x58fe29,null));};exports[_0x9edd('0x38')]=function(_0x366316,_0x35ddb3){if(_0x366316['body']['id']){delete _0x366316['body']['id'];}return db['ChatMessage'][_0x9edd('0x59')]({'where':{'id':_0x366316[_0x9edd('0x57')]['id']}})[_0x9edd('0x22')](handleEntityNotFound(_0x35ddb3,null))[_0x9edd('0x22')](saveUpdates(_0x366316[_0x9edd('0x5b')],null))[_0x9edd('0x22')](respondWithResult(_0x35ddb3,null))[_0x9edd('0x2b')](handleError(_0x35ddb3,null));};exports[_0x9edd('0x39')]=function(_0x4eb780,_0x16dfdc){return db['ChatMessage'][_0x9edd('0x59')]({'where':{'id':_0x4eb780[_0x9edd('0x57')]['id']}})['then'](handleEntityNotFound(_0x16dfdc,null))[_0x9edd('0x22')](removeEntity(_0x16dfdc,null))[_0x9edd('0x2b')](handleError(_0x16dfdc,null));};exports[_0x9edd('0x5c')]=function(_0x5ec9af,_0xc648c4){return db[_0x9edd('0x3e')][_0x9edd('0x5c')]()[_0x9edd('0x22')](respondWithResult(_0xc648c4,null))[_0x9edd('0x2b')](handleError(_0xc648c4,null));};var interaction_log=require(_0x9edd('0x13'))('chat-interactions');exports['accept']=function(_0x452ca5,_0x54f96c,_0x173ec9){var _0x3e9a3e={'agent':{},'channel':_0x9edd('0x5d')};if(_0x452ca5[_0x9edd('0x5b')]['id']){delete _0x452ca5['body']['id'];}_0x452ca5[_0x9edd('0x5b')]['read']=!![];_0x452ca5[_0x9edd('0x5b')][_0x9edd('0x5e')]=moment()[_0x9edd('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x452ca5[_0x9edd('0x5b')]['UserId']=_0x452ca5[_0x9edd('0x5b')][_0x9edd('0x60')]||_0x452ca5['user']['id'];_0x3e9a3e[_0x9edd('0x61')]['id']=_0x452ca5['body'][_0x9edd('0x60')];return db[_0x9edd('0x3e')][_0x9edd('0x59')]({'where':{'id':_0x452ca5['params']['id'],'UserId':null},'include':[{'model':db[_0x9edd('0x62')],'as':_0x9edd('0x63')}]})[_0x9edd('0x22')](handleEntityNotFound(_0x54f96c,null))[_0x9edd('0x22')](saveUpdates(_0x452ca5[_0x9edd('0x5b')],null))['then'](function(_0x48f017){if(_0x48f017){_0x3e9a3e[_0x9edd('0x29')]=_0x48f017[_0x9edd('0x64')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x48f017['ChatInteractionId']}});}return null;})[_0x9edd('0x22')](handleEntityNotFound(_0x54f96c,null))['then'](function(_0x5cde37){if(_0x5cde37){return _0x5cde37[_0x9edd('0x38')]({'UserId':_0x452ca5[_0x9edd('0x5b')]['UserId'],'read1stAt':_[_0x9edd('0x65')](_0x5cde37[_0x9edd('0x66')])?moment()[_0x9edd('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x9edd('0x22')](function(_0x57695c){if(_0x57695c){_0x3e9a3e[_0x9edd('0x67')]=_0x57695c[_0x9edd('0x64')]({'plain':!![]});interaction_log['info'](_0x9edd('0x68'),_0x452ca5[_0x9edd('0x69')]['id'],_0x452ca5['user'][_0x9edd('0x3a')],_0x452ca5[_0x9edd('0x69')][_0x9edd('0x6a')],_0x3e9a3e[_0x9edd('0x67')]['id'],_0x452ca5['body']?JSON[_0x9edd('0x26')](_0x452ca5['body']):_0x9edd('0x6b'));return respondWithRpcPromise(_0x9edd('0x6c'),_0x9edd('0x6d'),_0x3e9a3e);}return null;})['then'](function(_0x106a67){if(_0x106a67){if(_0x452ca5[_0x9edd('0x5b')][_0x9edd('0x6e')]){_0x3e9a3e[_0x9edd('0x29')][_0x9edd('0x6f')]=util[_0x9edd('0x5f')](_0x9edd('0x70'),_0x452ca5['user']['name']);_0x3e9a3e[_0x9edd('0x29')][_0x9edd('0x71')]=_0x3e9a3e[_0x9edd('0x71')];_0x3e9a3e[_0x9edd('0x29')][_0x9edd('0x72')]='accept';return respondWithRpcPromise(_0x9edd('0x73'),_0x9edd('0x73'),{'event':_0x9edd('0x74'),'message':_['merge'](_0x3e9a3e[_0x9edd('0x29')],JSON[_0x9edd('0x75')](_0x3e9a3e['interaction'][_0x9edd('0x76')]))},client9002)[_0x9edd('0x22')](function(){return _0x3e9a3e;});}return _0x3e9a3e;}return null;})['then'](respondWithResult(_0x54f96c,null))[_0x9edd('0x2b')](handleError(_0x54f96c,null));};var interaction_log=require(_0x9edd('0x13'))('chat-interactions');exports[_0x9edd('0x36')]=function(_0x4b8cbc,_0x4dce9f,_0x45c9ef){var _0x3959a7={'agent':{},'channel':_0x9edd('0x5d')};if(_0x4b8cbc['body']['id']){delete _0x4b8cbc[_0x9edd('0x5b')]['id'];}_0x4b8cbc[_0x9edd('0x5b')]['UserId']=_0x4b8cbc[_0x9edd('0x5b')][_0x9edd('0x60')]||_0x4b8cbc[_0x9edd('0x69')]['id'];_0x3959a7[_0x9edd('0x61')]['id']=_0x4b8cbc['body']['UserId'];return db[_0x9edd('0x3e')]['find']({'where':{'id':_0x4b8cbc[_0x9edd('0x57')]['id'],'UserId':null}})[_0x9edd('0x22')](handleEntityNotFound(_0x4dce9f,null))[_0x9edd('0x22')](function(_0x3cfd35){if(_0x3cfd35){_0x3959a7[_0x9edd('0x29')]=_0x3cfd35[_0x9edd('0x64')]({'plain':!![]});return db[_0x9edd('0x77')][_0x9edd('0x59')]({'where':{'id':_0x3cfd35[_0x9edd('0x78')]}});}return null;})['then'](handleEntityNotFound(_0x4dce9f,null))[_0x9edd('0x22')](function(_0x3c4db7){if(_0x3c4db7){_0x3959a7[_0x9edd('0x67')]=_0x3c4db7[_0x9edd('0x64')]({'plain':!![]});interaction_log[_0x9edd('0x23')](_0x9edd('0x79'),_0x4b8cbc[_0x9edd('0x69')]['id'],_0x4b8cbc['user'][_0x9edd('0x3a')],_0x4b8cbc[_0x9edd('0x69')]['role'],_0x3959a7[_0x9edd('0x67')]['id'],_0x4b8cbc[_0x9edd('0x5b')]?JSON['stringify'](_0x4b8cbc[_0x9edd('0x5b')]):_0x9edd('0x6b'));return respondWithRpcPromise(_0x9edd('0x7a'),'rejectMessage',_0x3959a7);}return null;})[_0x9edd('0x22')](function(_0x191c3e){if(_0x191c3e){_0x191c3e[_0x9edd('0x29')]['interface']=util['format']('SIP/%s',_0x4b8cbc['user'][_0x9edd('0x3a')]);_0x191c3e[_0x9edd('0x29')][_0x9edd('0x71')]=_0x3959a7['channel'];_0x191c3e['message']['event']=_0x9edd('0x36');respondWithRpcPromise(_0x9edd('0x73'),_0x9edd('0x73'),{'event':_0x9edd('0x7b'),'message':_0x191c3e[_0x9edd('0x29')]},client9002);return _0x3959a7;}return null;})[_0x9edd('0x22')](respondWithResult(_0x4dce9f,null))[_0x9edd('0x2b')](handleError(_0x4dce9f,null));};