b4d9d63ac5798c0681d0551ebdcd6b155c1d728b
[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 _0x88cc=['then','destroy','stack','name','index','map','ChatMessage','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','catch','params','keys','find','create','body','describe','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','get','role','null','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','chat-interactions','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','localhost','redis','./chatMessage.socket','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','sendStatus','status','end','count','offset','limit','Content-Range','json','apply','reject','save','update'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x88cc,0x197));var _0xc88c=function(_0x35b07d,_0x3d0ae7){_0x35b07d=_0x35b07d-0x0;var _0x2868bc=_0x88cc[_0x35b07d];return _0x2868bc;};'use strict';var pdf=require(_0xc88c('0x0'));var emlformat=require(_0xc88c('0x1'));var rimraf=require(_0xc88c('0x2'));var zipdir=require(_0xc88c('0x3'));var jsonpatch=require(_0xc88c('0x4'));var rp=require(_0xc88c('0x5'));var moment=require('moment');var BPromise=require(_0xc88c('0x6'));var Mustache=require(_0xc88c('0x7'));var util=require('util');var path=require(_0xc88c('0x8'));var sox=require(_0xc88c('0x9'));var csv=require(_0xc88c('0xa'));var ejs=require(_0xc88c('0xb'));var fs=require('fs');var _=require(_0xc88c('0xc'));var squel=require(_0xc88c('0xd'));var crypto=require('crypto');var jsforce=require(_0xc88c('0xe'));var deskjs=require(_0xc88c('0xf'));var toCsv=require(_0xc88c('0xa'));var querystring=require(_0xc88c('0x10'));var Papa=require(_0xc88c('0x11'));var Redis=require(_0xc88c('0x12'));var authService=require(_0xc88c('0x13'));var qs=require(_0xc88c('0x14'));var as=require(_0xc88c('0x15'));var hardwareService=require(_0xc88c('0x16'));var logger=require(_0xc88c('0x17'))('api');var utils=require(_0xc88c('0x18'));var config=require(_0xc88c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc88c('0x1a'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xc88c('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc88c('0x1c')]));require(_0xc88c('0x1d'))['register'](socket);var jayson=require(_0xc88c('0x1e'));var client=jayson[_0xc88c('0x1f')][_0xc88c('0x20')]({'port':0x232c});var client9002=jayson[_0xc88c('0x1f')][_0xc88c('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x6d133b,_0x4d11a9,_0x55a1bc,_0x9a820f){return new BPromise(function(_0x5bebe0,_0x41e0d8){var _0x1b538a=_0x9a820f||client;return _0x1b538a[_0xc88c('0x21')](_0x6d133b,_0x55a1bc)['then'](function(_0x2db6ca){logger[_0xc88c('0x22')](_0xc88c('0x23'),_0x4d11a9,'request\x20sent');logger['debug'](_0xc88c('0x24'),_0x4d11a9,'request\x20sent',JSON[_0xc88c('0x25')](_0x2db6ca));if(_0x2db6ca['error']){if(_0x2db6ca[_0xc88c('0x26')]['code']===0x1f4){logger['error'](_0xc88c('0x23'),_0x4d11a9,_0x2db6ca[_0xc88c('0x26')][_0xc88c('0x27')]);return _0x41e0d8(_0x2db6ca[_0xc88c('0x26')][_0xc88c('0x27')]);}logger[_0xc88c('0x26')](_0xc88c('0x23'),_0x4d11a9,_0x2db6ca[_0xc88c('0x26')]['message']);return _0x5bebe0(_0x2db6ca['error'][_0xc88c('0x27')]);}else{logger[_0xc88c('0x22')]('ChatMessage,\x20%s,\x20%s',_0x4d11a9,_0xc88c('0x28'));_0x5bebe0(_0x2db6ca['result'][_0xc88c('0x27')]);}})['catch'](function(_0x5660a9){logger['error'](_0xc88c('0x23'),_0x4d11a9,_0x5660a9);_0x41e0d8(_0x5660a9);});});}function respondWithStatusCode(_0x1f25cc,_0x285101){_0x285101=_0x285101||0xcc;return function(_0x54ff7c){if(_0x54ff7c){return _0x1f25cc[_0xc88c('0x29')](_0x285101);}return _0x1f25cc[_0xc88c('0x2a')](_0x285101)[_0xc88c('0x2b')]();};}function respondWithResult(_0x7c3807,_0x3fb905){_0x3fb905=_0x3fb905||0xc8;return function(_0x2d8e81){if(_0x2d8e81){return _0x7c3807[_0xc88c('0x2a')](_0x3fb905)['json'](_0x2d8e81);}};}function respondWithFilteredResult(_0x234e87,_0x42b32a){return function(_0x23ba66){if(_0x23ba66){var _0xf767ea=_0x23ba66[_0xc88c('0x2c')],_0x4a01e8=_0x42b32a[_0xc88c('0x2d')],_0x1ba637=_0x42b32a['offset']+_0x42b32a[_0xc88c('0x2e')],_0x15402e;if(_0x1ba637>=_0xf767ea){_0x1ba637=_0xf767ea;_0x15402e=0xc8;}else{_0x15402e=0xce;}_0x234e87[_0xc88c('0x2a')](_0x15402e);return _0x234e87['set'](_0xc88c('0x2f'),_0x4a01e8+'-'+_0x1ba637+'/'+_0xf767ea)[_0xc88c('0x30')](_0x23ba66);}return null;};}function patchUpdates(_0x23d8e7){return function(_0x522838){try{jsonpatch[_0xc88c('0x31')](_0x522838,_0x23d8e7,!![]);}catch(_0x2b6033){return BPromise[_0xc88c('0x32')](_0x2b6033);}return _0x522838[_0xc88c('0x33')]();};}function saveUpdates(_0x131ceb,_0x5d0aae){return function(_0x476aaf){if(_0x476aaf){return _0x476aaf[_0xc88c('0x34')](_0x131ceb)[_0xc88c('0x35')](function(_0x372664){return _0x372664;});}return null;};}function removeEntity(_0x2703be,_0x54a382){return function(_0x26c079){if(_0x26c079){return _0x26c079[_0xc88c('0x36')]()['then'](function(){_0x2703be['status'](0xcc)[_0xc88c('0x2b')]();});}};}function handleEntityNotFound(_0x1999c4,_0x41f086){return function(_0x2651b9){if(!_0x2651b9){_0x1999c4[_0xc88c('0x29')](0x194);}return _0x2651b9;};}function handleError(_0x480323,_0x408e47){_0x408e47=_0x408e47||0x1f4;return function(_0x3a15c5){logger['error'](_0x3a15c5[_0xc88c('0x37')]);if(_0x3a15c5[_0xc88c('0x38')]){delete _0x3a15c5[_0xc88c('0x38')];}_0x480323[_0xc88c('0x2a')](_0x408e47)['send'](_0x3a15c5);};}exports[_0xc88c('0x39')]=function(_0x1f037c,_0x27a2f6){var _0x17c8db={},_0xb8758a={},_0x220f17={'count':0x0,'rows':[]};var _0xa7a295=_[_0xc88c('0x3a')](db[_0xc88c('0x3b')][_0xc88c('0x3c')],function(_0x49e4ca){return{'name':_0x49e4ca[_0xc88c('0x3d')],'type':_0x49e4ca[_0xc88c('0x3e')]['key']};});_0xb8758a[_0xc88c('0x3f')]=_[_0xc88c('0x3a')](_0xa7a295,_0xc88c('0x38'));_0xb8758a[_0xc88c('0x40')]=_['keys'](_0x1f037c[_0xc88c('0x40')]);_0xb8758a[_0xc88c('0x41')]=_[_0xc88c('0x42')](_0xb8758a['model'],_0xb8758a[_0xc88c('0x40')]);_0x17c8db[_0xc88c('0x43')]=_[_0xc88c('0x42')](_0xb8758a[_0xc88c('0x3f')],qs[_0xc88c('0x44')](_0x1f037c[_0xc88c('0x40')][_0xc88c('0x44')]));_0x17c8db[_0xc88c('0x43')]=_0x17c8db[_0xc88c('0x43')][_0xc88c('0x45')]?_0x17c8db['attributes']:_0xb8758a[_0xc88c('0x3f')];if(!_0x1f037c[_0xc88c('0x40')][_0xc88c('0x46')](_0xc88c('0x47'))){_0x17c8db[_0xc88c('0x2e')]=qs[_0xc88c('0x2e')](_0x1f037c['query']['limit']);_0x17c8db[_0xc88c('0x2d')]=qs[_0xc88c('0x2d')](_0x1f037c[_0xc88c('0x40')]['offset']);}_0x17c8db[_0xc88c('0x48')]=qs[_0xc88c('0x49')](_0x1f037c['query'][_0xc88c('0x49')]);_0x17c8db[_0xc88c('0x4a')]=qs[_0xc88c('0x41')](_[_0xc88c('0x4b')](_0x1f037c['query'],_0xb8758a[_0xc88c('0x41')]),_0xa7a295);if(_0x1f037c[_0xc88c('0x40')]['filter']){_0x17c8db[_0xc88c('0x4a')]=_[_0xc88c('0x4c')](_0x17c8db[_0xc88c('0x4a')],{'$or':_[_0xc88c('0x3a')](_0xa7a295,function(_0x1a460d){if(_0x1a460d[_0xc88c('0x3e')]!==_0xc88c('0x4d')){var _0x23f409={};_0x23f409[_0x1a460d[_0xc88c('0x38')]]={'$like':'%'+_0x1f037c[_0xc88c('0x40')]['filter']+'%'};return _0x23f409;}})});}_0x17c8db=_[_0xc88c('0x4c')]({},_0x17c8db,_0x1f037c[_0xc88c('0x4e')]);var _0x283c96={'where':_0x17c8db[_0xc88c('0x4a')]};return db[_0xc88c('0x3b')][_0xc88c('0x2c')](_0x283c96)[_0xc88c('0x35')](function(_0x23cc3d){_0x220f17['count']=_0x23cc3d;if(_0x1f037c[_0xc88c('0x40')][_0xc88c('0x4f')]){_0x17c8db['include']=[{'all':!![]}];}return db[_0xc88c('0x3b')]['findAll'](_0x17c8db);})[_0xc88c('0x35')](function(_0x258b33){_0x220f17['rows']=_0x258b33;return _0x220f17;})[_0xc88c('0x35')](respondWithFilteredResult(_0x27a2f6,_0x17c8db))[_0xc88c('0x50')](handleError(_0x27a2f6,null));};exports['show']=function(_0x3d6746,_0x1f7d7a){var _0x58d4ea={'raw':!![],'where':{'id':_0x3d6746[_0xc88c('0x51')]['id']}},_0x2aa1ee={};_0x2aa1ee['model']=_[_0xc88c('0x52')](db[_0xc88c('0x3b')][_0xc88c('0x3c')]);_0x2aa1ee[_0xc88c('0x40')]=_[_0xc88c('0x52')](_0x3d6746['query']);_0x2aa1ee[_0xc88c('0x41')]=_[_0xc88c('0x42')](_0x2aa1ee[_0xc88c('0x3f')],_0x2aa1ee['query']);_0x58d4ea['attributes']=_[_0xc88c('0x42')](_0x2aa1ee[_0xc88c('0x3f')],qs[_0xc88c('0x44')](_0x3d6746[_0xc88c('0x40')]['fields']));_0x58d4ea[_0xc88c('0x43')]=_0x58d4ea[_0xc88c('0x43')][_0xc88c('0x45')]?_0x58d4ea[_0xc88c('0x43')]:_0x2aa1ee[_0xc88c('0x3f')];if(_0x3d6746[_0xc88c('0x40')][_0xc88c('0x4f')]){_0x58d4ea['include']=[{'all':!![]}];}_0x58d4ea=_[_0xc88c('0x4c')]({},_0x58d4ea,_0x3d6746[_0xc88c('0x4e')]);return db[_0xc88c('0x3b')][_0xc88c('0x53')](_0x58d4ea)[_0xc88c('0x35')](handleEntityNotFound(_0x1f7d7a,null))['then'](respondWithResult(_0x1f7d7a,null))[_0xc88c('0x50')](handleError(_0x1f7d7a,null));};exports[_0xc88c('0x54')]=function(_0x238381,_0x46dd5e){return db['ChatMessage'][_0xc88c('0x54')](_0x238381[_0xc88c('0x55')],{})[_0xc88c('0x35')](respondWithResult(_0x46dd5e,0xc9))['catch'](handleError(_0x46dd5e,null));};exports['update']=function(_0x352e2d,_0x390d35){if(_0x352e2d[_0xc88c('0x55')]['id']){delete _0x352e2d['body']['id'];}return db[_0xc88c('0x3b')]['find']({'where':{'id':_0x352e2d[_0xc88c('0x51')]['id']}})[_0xc88c('0x35')](handleEntityNotFound(_0x390d35,null))[_0xc88c('0x35')](saveUpdates(_0x352e2d['body'],null))[_0xc88c('0x35')](respondWithResult(_0x390d35,null))[_0xc88c('0x50')](handleError(_0x390d35,null));};exports[_0xc88c('0x36')]=function(_0x22d62a,_0x22aeb2){return db[_0xc88c('0x3b')][_0xc88c('0x53')]({'where':{'id':_0x22d62a[_0xc88c('0x51')]['id']}})[_0xc88c('0x35')](handleEntityNotFound(_0x22aeb2,null))['then'](removeEntity(_0x22aeb2,null))[_0xc88c('0x50')](handleError(_0x22aeb2,null));};exports[_0xc88c('0x56')]=function(_0x389c6e,_0x49cc82){return db['ChatMessage'][_0xc88c('0x56')]()['then'](respondWithResult(_0x49cc82,null))[_0xc88c('0x50')](handleError(_0x49cc82,null));};var interaction_log=require(_0xc88c('0x17'))('chat-interactions');exports['accept']=function(_0xaf656d,_0x5b7314,_0x49e16c){var _0x33bb12={'channel':_0xc88c('0x57')};if(_0xaf656d[_0xc88c('0x55')]['id']){delete _0xaf656d['body']['id'];}_0xaf656d[_0xc88c('0x55')][_0xc88c('0x58')]=!![];_0xaf656d[_0xc88c('0x55')][_0xc88c('0x59')]=moment()[_0xc88c('0x5a')](_0xc88c('0x5b'));_0xaf656d[_0xc88c('0x55')][_0xc88c('0x5c')]=_0xaf656d[_0xc88c('0x55')][_0xc88c('0x5c')]||_0xaf656d[_0xc88c('0x5d')]['id'];return db[_0xc88c('0x3b')][_0xc88c('0x53')]({'where':{'id':_0xaf656d[_0xc88c('0x51')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0xc88c('0x35')](handleEntityNotFound(_0x5b7314,null))[_0xc88c('0x35')](saveUpdates(_0xaf656d[_0xc88c('0x55')],null))[_0xc88c('0x35')](function(_0x2821bb){if(_0x2821bb){_0x33bb12[_0xc88c('0x27')]=_0x2821bb['get']({'plain':!![]});return db[_0xc88c('0x5e')][_0xc88c('0x53')]({'where':{'id':_0x2821bb[_0xc88c('0x5f')]}});}return null;})[_0xc88c('0x35')](handleEntityNotFound(_0x5b7314,null))[_0xc88c('0x35')](function(_0xd5fb48){if(_0xd5fb48){return _0xd5fb48[_0xc88c('0x34')]({'UserId':_0xaf656d['body']['UserId'],'read1stAt':_[_0xc88c('0x60')](_0xd5fb48[_0xc88c('0x61')])?moment()[_0xc88c('0x5a')](_0xc88c('0x5b')):undefined});}return null;})['then'](function(_0x33bbca){if(_0x33bbca){_0x33bb12[_0xc88c('0x62')]=_0x33bbca[_0xc88c('0x63')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xaf656d[_0xc88c('0x5d')]['id'],_0xaf656d[_0xc88c('0x5d')]['name'],_0xaf656d[_0xc88c('0x5d')][_0xc88c('0x64')],_0x33bb12[_0xc88c('0x62')]['id'],_0xaf656d['body']?JSON[_0xc88c('0x25')](_0xaf656d[_0xc88c('0x55')]):_0xc88c('0x65'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x33bb12);}return null;})[_0xc88c('0x35')](function(_0x16d317){if(_0x16d317){if(_0xaf656d[_0xc88c('0x55')][_0xc88c('0x66')]){_0x33bb12[_0xc88c('0x27')][_0xc88c('0x67')]=util[_0xc88c('0x5a')](_0xc88c('0x68'),_0xaf656d[_0xc88c('0x5d')]['name']);_0x33bb12[_0xc88c('0x27')][_0xc88c('0x69')]=_0x33bb12[_0xc88c('0x69')];_0x33bb12['message'][_0xc88c('0x6a')]='accept';return respondWithRpcPromise('EventManager',_0xc88c('0x6b'),{'event':_0xc88c('0x6c'),'message':_[_0xc88c('0x4c')](_0x33bb12[_0xc88c('0x27')],JSON[_0xc88c('0x6d')](_0x33bb12['interaction']['formData']))},client9002)[_0xc88c('0x35')](function(){return _0x33bb12;});}return _0x33bb12;}return null;})[_0xc88c('0x35')](respondWithResult(_0x5b7314,null))[_0xc88c('0x50')](handleError(_0x5b7314,null));};var interaction_log=require(_0xc88c('0x17'))(_0xc88c('0x6e'));exports['reject']=function(_0x46c3fd,_0x4bab37,_0x1a7c74){var _0x147806={'agent':{},'channel':_0xc88c('0x57')};if(_0x46c3fd[_0xc88c('0x55')]['id']){delete _0x46c3fd['body']['id'];}_0x46c3fd['body'][_0xc88c('0x5c')]=_0x46c3fd[_0xc88c('0x55')][_0xc88c('0x5c')]||_0x46c3fd[_0xc88c('0x5d')]['id'];_0x147806['agent']['id']=_0x46c3fd[_0xc88c('0x55')][_0xc88c('0x5c')];return db['ChatMessage']['find']({'where':{'id':_0x46c3fd[_0xc88c('0x51')]['id'],'UserId':null}})[_0xc88c('0x35')](handleEntityNotFound(_0x4bab37,null))[_0xc88c('0x35')](function(_0x2793af){if(_0x2793af){_0x147806[_0xc88c('0x27')]=_0x2793af[_0xc88c('0x63')]({'plain':!![]});return db[_0xc88c('0x5e')][_0xc88c('0x53')]({'where':{'id':_0x2793af['ChatInteractionId']}});}return null;})[_0xc88c('0x35')](handleEntityNotFound(_0x4bab37,null))['then'](function(_0x129126){if(_0x129126){_0x147806[_0xc88c('0x62')]=_0x129126[_0xc88c('0x63')]({'plain':!![]});interaction_log[_0xc88c('0x22')](_0xc88c('0x6f'),_0x46c3fd[_0xc88c('0x5d')]['id'],_0x46c3fd['user'][_0xc88c('0x38')],_0x46c3fd[_0xc88c('0x5d')][_0xc88c('0x64')],_0x147806['interaction']['id'],_0x46c3fd['body']?JSON[_0xc88c('0x25')](_0x46c3fd[_0xc88c('0x55')]):_0xc88c('0x65'));return respondWithRpcPromise(_0xc88c('0x70'),_0xc88c('0x71'),_0x147806);}return null;})[_0xc88c('0x35')](function(_0x114a2c){if(_0x114a2c){_0x114a2c['message'][_0xc88c('0x67')]=util[_0xc88c('0x5a')](_0xc88c('0x68'),_0x46c3fd[_0xc88c('0x5d')]['name']);_0x114a2c['message'][_0xc88c('0x69')]=_0x147806['channel'];_0x114a2c[_0xc88c('0x27')][_0xc88c('0x6a')]=_0xc88c('0x32');respondWithRpcPromise(_0xc88c('0x6b'),_0xc88c('0x6b'),{'event':_0xc88c('0x72'),'message':_0x114a2c[_0xc88c('0x27')]},client9002);return _0x147806;}return null;})[_0xc88c('0x35')](respondWithResult(_0x4bab37,null))[_0xc88c('0x50')](handleError(_0x4bab37,null));};