Built motion from commit (unavailable).|2.3.98
[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 _0xc0b9=['sort','pick','filter','where','merge','map','type','key','options','show','params','rawAttributes','includeAll','find','create','body','destroy','describe','chat-interactions','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','ChatInteraction','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','acceptMessage','interface','SIP/%s','channel','event','accept','EventManager','formData','chat','agent','role','RejectMessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','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','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','index','ChatMessage','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order'];(function(_0x4f5fa2,_0x491769){var _0x58cdb0=function(_0x450260){while(--_0x450260){_0x4f5fa2['push'](_0x4f5fa2['shift']());}};_0x58cdb0(++_0x491769);}(_0xc0b9,0xa2));var _0x9c0b=function(_0x1efe39,_0x404716){_0x1efe39=_0x1efe39-0x0;var _0xbc667e=_0xc0b9[_0x1efe39];return _0xbc667e;};'use strict';var pdf=require(_0x9c0b('0x0'));var emlformat=require(_0x9c0b('0x1'));var rimraf=require(_0x9c0b('0x2'));var zipdir=require(_0x9c0b('0x3'));var jsonpatch=require(_0x9c0b('0x4'));var rp=require(_0x9c0b('0x5'));var moment=require('moment');var BPromise=require(_0x9c0b('0x6'));var Mustache=require(_0x9c0b('0x7'));var util=require(_0x9c0b('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9c0b('0x9'));var fs=require('fs');var _=require(_0x9c0b('0xa'));var squel=require(_0x9c0b('0xb'));var crypto=require(_0x9c0b('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9c0b('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9c0b('0xe'));var Papa=require(_0x9c0b('0xf'));var authService=require(_0x9c0b('0x10'));var hardwareService=require(_0x9c0b('0x11'));var Redis=require(_0x9c0b('0x12'));var qs=require(_0x9c0b('0x13'));var logger=require(_0x9c0b('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x9c0b('0x15'));var db=require('../../mysqldb')['db'];config[_0x9c0b('0x16')]=_['defaults'](config[_0x9c0b('0x16')],{'host':_0x9c0b('0x17'),'port':0x18eb});var socket=require(_0x9c0b('0x18'))(new Redis(config[_0x9c0b('0x16')]));require(_0x9c0b('0x19'))[_0x9c0b('0x1a')](socket);var jayson=require(_0x9c0b('0x1b'));var client=jayson[_0x9c0b('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0x9c0b('0x1c')]['http']({'port':0x232a});function checkPasswordPattern(_0x183702,_0x3f90d9,_0x2986c6){if(_0x2986c6){var _0x304d3e=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x304d3e[_0x9c0b('0x1d')](_0x3f90d9)){return _0x183702;}else{throw new Error(_0x9c0b('0x1e'));}}else{return _0x183702;}}function respondWithRpcPromise(_0x52c866,_0x21008f,_0x2c62b5,_0x1f37ca){return new BPromise(function(_0x1f5d9c,_0xa2db9f){var _0x453084=_0x1f37ca||client;return _0x453084[_0x9c0b('0x1f')](_0x52c866,_0x2c62b5)[_0x9c0b('0x20')](function(_0x2c52bf){logger[_0x9c0b('0x21')](_0x9c0b('0x22'),_0x21008f,_0x9c0b('0x23'));logger[_0x9c0b('0x24')](_0x9c0b('0x25'),_0x21008f,'request\x20sent',JSON[_0x9c0b('0x26')](_0x2c52bf));if(_0x2c52bf['error']){if(_0x2c52bf['error'][_0x9c0b('0x27')]===0x1f4){logger[_0x9c0b('0x28')](_0x9c0b('0x22'),_0x21008f,_0x2c52bf[_0x9c0b('0x28')][_0x9c0b('0x29')]);return _0xa2db9f(_0x2c52bf[_0x9c0b('0x28')][_0x9c0b('0x29')]);}logger[_0x9c0b('0x28')](_0x9c0b('0x22'),_0x21008f,_0x2c52bf[_0x9c0b('0x28')][_0x9c0b('0x29')]);return _0x1f5d9c(_0x2c52bf[_0x9c0b('0x28')][_0x9c0b('0x29')]);}else{logger[_0x9c0b('0x21')](_0x9c0b('0x22'),_0x21008f,_0x9c0b('0x23'));_0x1f5d9c(_0x2c52bf[_0x9c0b('0x2a')][_0x9c0b('0x29')]);}})[_0x9c0b('0x2b')](function(_0x49889b){logger['error'](_0x9c0b('0x22'),_0x21008f,_0x49889b);_0xa2db9f(_0x49889b);});});}function respondWithStatusCode(_0x1e3501,_0xe358bc){_0xe358bc=_0xe358bc||0xcc;return function(_0x3b8c02){if(_0x3b8c02){return _0x1e3501[_0x9c0b('0x2c')](_0xe358bc);}return _0x1e3501[_0x9c0b('0x2d')](_0xe358bc)[_0x9c0b('0x2e')]();};}function respondWithResult(_0xbfe97e,_0x4a5696){_0x4a5696=_0x4a5696||0xc8;return function(_0x116c33){if(_0x116c33){return _0xbfe97e[_0x9c0b('0x2d')](_0x4a5696)[_0x9c0b('0x2f')](_0x116c33);}};}function respondWithFilteredResult(_0x34ae34,_0x5a06b2){return function(_0x2085b2){if(_0x2085b2){var _0x25f059=_0x2085b2[_0x9c0b('0x30')],_0x2ea3f6=_0x5a06b2[_0x9c0b('0x31')],_0x2c3784=_0x5a06b2[_0x9c0b('0x31')]+_0x5a06b2[_0x9c0b('0x32')],_0x5729bb;if(_0x2c3784>=_0x25f059){_0x2c3784=_0x25f059;_0x5729bb=0xc8;}else{_0x5729bb=0xce;}_0x34ae34[_0x9c0b('0x2d')](_0x5729bb);return _0x34ae34[_0x9c0b('0x33')](_0x9c0b('0x34'),_0x2ea3f6+'-'+_0x2c3784+'/'+_0x25f059)[_0x9c0b('0x2f')](_0x2085b2);}return null;};}function patchUpdates(_0x230ee0){return function(_0x222d54){try{jsonpatch[_0x9c0b('0x35')](_0x222d54,_0x230ee0,!![]);}catch(_0x3d146d){return BPromise[_0x9c0b('0x36')](_0x3d146d);}return _0x222d54[_0x9c0b('0x37')]();};}function saveUpdates(_0x3e46a4,_0x43e9d8){return function(_0x395ea1){if(_0x395ea1){return _0x395ea1[_0x9c0b('0x38')](_0x3e46a4)[_0x9c0b('0x20')](function(_0x113b5a){return _0x113b5a;});}return null;};}function removeEntity(_0xe00269,_0x2b47b1){return function(_0x252ec4){if(_0x252ec4){return _0x252ec4['destroy']()[_0x9c0b('0x20')](function(){_0xe00269[_0x9c0b('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f1ba3,_0x9962a3){return function(_0x3fd9d0){if(!_0x3fd9d0){_0x1f1ba3[_0x9c0b('0x2c')](0x194);}return _0x3fd9d0;};}function handleError(_0x10f286,_0x257c8f){_0x257c8f=_0x257c8f||0x1f4;return function(_0x3b2cab){logger[_0x9c0b('0x28')](_0x3b2cab[_0x9c0b('0x39')]);if(_0x3b2cab[_0x9c0b('0x3a')]){delete _0x3b2cab[_0x9c0b('0x3a')];}_0x10f286[_0x9c0b('0x2d')](_0x257c8f)['send'](_0x3b2cab);};}exports[_0x9c0b('0x3b')]=function(_0x37a1fb,_0x64566f){var _0x36fd77={},_0x5628a6={},_0x309757={'count':0x0,'rows':[]};var _0x4afc0d=db[_0x9c0b('0x3c')]['rawAttributes'];_0x5628a6[_0x9c0b('0x3d')]=_[_0x9c0b('0x3e')](_0x4afc0d);_0x5628a6[_0x9c0b('0x3f')]=_[_0x9c0b('0x3e')](_0x37a1fb[_0x9c0b('0x3f')]);_0x5628a6[_0x9c0b('0x40')]=_['intersection'](_0x5628a6[_0x9c0b('0x3d')],_0x5628a6['query']);_0x36fd77[_0x9c0b('0x41')]=_[_0x9c0b('0x42')](_0x5628a6[_0x9c0b('0x3d')],qs[_0x9c0b('0x43')](_0x37a1fb['query'][_0x9c0b('0x43')]));_0x36fd77['attributes']=_0x36fd77[_0x9c0b('0x41')][_0x9c0b('0x44')]?_0x36fd77[_0x9c0b('0x41')]:_0x5628a6[_0x9c0b('0x3d')];if(!_0x37a1fb[_0x9c0b('0x3f')][_0x9c0b('0x45')](_0x9c0b('0x46'))){_0x36fd77[_0x9c0b('0x32')]=qs[_0x9c0b('0x32')](_0x37a1fb[_0x9c0b('0x3f')][_0x9c0b('0x32')]);_0x36fd77[_0x9c0b('0x31')]=qs[_0x9c0b('0x31')](_0x37a1fb[_0x9c0b('0x3f')][_0x9c0b('0x31')]);}_0x36fd77[_0x9c0b('0x47')]=qs[_0x9c0b('0x48')](_0x37a1fb['query'][_0x9c0b('0x48')]);_0x36fd77['where']=qs['filters'](_[_0x9c0b('0x49')](_0x37a1fb['query'],_0x5628a6['filters']));if(_0x37a1fb['query'][_0x9c0b('0x4a')]){_0x36fd77[_0x9c0b('0x4b')]=_[_0x9c0b('0x4c')](_0x36fd77[_0x9c0b('0x4b')],{'$or':_[_0x9c0b('0x4d')](_0x4afc0d,function(_0x52e321){if(_0x52e321[_0x9c0b('0x4e')][_0x9c0b('0x4f')]!=='VIRTUAL'){var _0x49cb46={};_0x49cb46[_0x52e321['field']]={'$like':'%'+_0x37a1fb[_0x9c0b('0x3f')][_0x9c0b('0x4a')]+'%'};return _0x49cb46;}})});}_0x36fd77=_['merge']({},_0x36fd77,_0x37a1fb[_0x9c0b('0x50')]);var _0x10c97d={'where':_0x36fd77[_0x9c0b('0x4b')]};return db[_0x9c0b('0x3c')][_0x9c0b('0x30')](_0x10c97d)[_0x9c0b('0x20')](function(_0x57654f){_0x309757[_0x9c0b('0x30')]=_0x57654f;if(_0x37a1fb[_0x9c0b('0x3f')]['includeAll']){_0x36fd77['include']=[{'all':!![]}];}return db['ChatMessage']['findAll'](_0x36fd77);})['then'](function(_0x13263d){_0x309757['rows']=_0x13263d;return _0x309757;})['then'](respondWithFilteredResult(_0x64566f,_0x36fd77))[_0x9c0b('0x2b')](handleError(_0x64566f,null));};exports[_0x9c0b('0x51')]=function(_0x3576b6,_0x47ebbd){var _0x391797={'raw':!![],'where':{'id':_0x3576b6[_0x9c0b('0x52')]['id']}},_0x353de8={};_0x353de8[_0x9c0b('0x3d')]=_['keys'](db[_0x9c0b('0x3c')][_0x9c0b('0x53')]);_0x353de8[_0x9c0b('0x3f')]=_[_0x9c0b('0x3e')](_0x3576b6[_0x9c0b('0x3f')]);_0x353de8[_0x9c0b('0x40')]=_[_0x9c0b('0x42')](_0x353de8[_0x9c0b('0x3d')],_0x353de8[_0x9c0b('0x3f')]);_0x391797[_0x9c0b('0x41')]=_[_0x9c0b('0x42')](_0x353de8['model'],qs['fields'](_0x3576b6[_0x9c0b('0x3f')]['fields']));_0x391797['attributes']=_0x391797[_0x9c0b('0x41')]['length']?_0x391797['attributes']:_0x353de8[_0x9c0b('0x3d')];if(_0x3576b6[_0x9c0b('0x3f')][_0x9c0b('0x54')]){_0x391797['include']=[{'all':!![]}];}_0x391797=_['merge']({},_0x391797,_0x3576b6[_0x9c0b('0x50')]);return db[_0x9c0b('0x3c')][_0x9c0b('0x55')](_0x391797)[_0x9c0b('0x20')](handleEntityNotFound(_0x47ebbd,null))['then'](respondWithResult(_0x47ebbd,null))['catch'](handleError(_0x47ebbd,null));};exports[_0x9c0b('0x56')]=function(_0x58f4ec,_0xa49ffd){return db['ChatMessage']['create'](_0x58f4ec['body'],{})['then'](respondWithResult(_0xa49ffd,0xc9))[_0x9c0b('0x2b')](handleError(_0xa49ffd,null));};exports[_0x9c0b('0x38')]=function(_0x4744ad,_0x145df3){if(_0x4744ad['body']['id']){delete _0x4744ad[_0x9c0b('0x57')]['id'];}return db['ChatMessage'][_0x9c0b('0x55')]({'where':{'id':_0x4744ad['params']['id']}})[_0x9c0b('0x20')](handleEntityNotFound(_0x145df3,null))[_0x9c0b('0x20')](saveUpdates(_0x4744ad[_0x9c0b('0x57')],null))[_0x9c0b('0x20')](respondWithResult(_0x145df3,null))['catch'](handleError(_0x145df3,null));};exports[_0x9c0b('0x58')]=function(_0x27ca3f,_0x580aa6){return db[_0x9c0b('0x3c')]['find']({'where':{'id':_0x27ca3f[_0x9c0b('0x52')]['id']}})[_0x9c0b('0x20')](handleEntityNotFound(_0x580aa6,null))[_0x9c0b('0x20')](removeEntity(_0x580aa6,null))[_0x9c0b('0x2b')](handleError(_0x580aa6,null));};exports['describe']=function(_0x4193a3,_0x3503e4){return db[_0x9c0b('0x3c')][_0x9c0b('0x59')]()[_0x9c0b('0x20')](respondWithResult(_0x3503e4,null))['catch'](handleError(_0x3503e4,null));};var interaction_log=require(_0x9c0b('0x14'))(_0x9c0b('0x5a'));exports['accept']=function(_0x5a44fb,_0x20267d,_0x40844d){var _0x535fba={'channel':'chat'};if(_0x5a44fb[_0x9c0b('0x57')]['id']){delete _0x5a44fb[_0x9c0b('0x57')]['id'];}_0x5a44fb['body'][_0x9c0b('0x5b')]=!![];_0x5a44fb[_0x9c0b('0x57')]['readAt']=moment()[_0x9c0b('0x5c')](_0x9c0b('0x5d'));_0x5a44fb[_0x9c0b('0x57')]['UserId']=_0x5a44fb['body'][_0x9c0b('0x5e')]||_0x5a44fb[_0x9c0b('0x5f')]['id'];return db[_0x9c0b('0x3c')][_0x9c0b('0x55')]({'where':{'id':_0x5a44fb[_0x9c0b('0x52')]['id'],'UserId':null},'include':[{'model':db[_0x9c0b('0x60')],'as':_0x9c0b('0x61')}]})[_0x9c0b('0x20')](handleEntityNotFound(_0x20267d,null))[_0x9c0b('0x20')](saveUpdates(_0x5a44fb['body'],null))['then'](function(_0xf8105f){if(_0xf8105f){_0x535fba[_0x9c0b('0x29')]=_0xf8105f[_0x9c0b('0x62')]({'plain':!![]});return db[_0x9c0b('0x63')][_0x9c0b('0x55')]({'where':{'id':_0xf8105f['ChatInteractionId']}});}return null;})[_0x9c0b('0x20')](handleEntityNotFound(_0x20267d,null))['then'](function(_0x5a2a21){if(_0x5a2a21){return _0x5a2a21[_0x9c0b('0x38')]({'UserId':_0x5a44fb[_0x9c0b('0x57')]['UserId'],'read1stAt':_[_0x9c0b('0x64')](_0x5a2a21[_0x9c0b('0x65')])?moment()[_0x9c0b('0x5c')](_0x9c0b('0x5d')):undefined});}return null;})[_0x9c0b('0x20')](function(_0x52ba04){if(_0x52ba04){_0x535fba[_0x9c0b('0x66')]=_0x52ba04['get']({'plain':!![]});interaction_log['info'](_0x9c0b('0x67'),_0x5a44fb[_0x9c0b('0x5f')]['id'],_0x5a44fb[_0x9c0b('0x5f')][_0x9c0b('0x3a')],_0x5a44fb[_0x9c0b('0x5f')]['role'],_0x535fba[_0x9c0b('0x66')]['id'],_0x5a44fb['body']?JSON[_0x9c0b('0x26')](_0x5a44fb[_0x9c0b('0x57')]):_0x9c0b('0x68'));return respondWithRpcPromise('AcceptMessage',_0x9c0b('0x69'),_0x535fba);}return null;})[_0x9c0b('0x20')](function(_0x28201b){if(_0x28201b){if(_0x5a44fb[_0x9c0b('0x57')]['manual']){_0x535fba[_0x9c0b('0x29')][_0x9c0b('0x6a')]=util['format'](_0x9c0b('0x6b'),_0x5a44fb['user']['name']);_0x535fba[_0x9c0b('0x29')][_0x9c0b('0x6c')]=_0x535fba['channel'];_0x535fba[_0x9c0b('0x29')][_0x9c0b('0x6d')]=_0x9c0b('0x6e');return respondWithRpcPromise(_0x9c0b('0x6f'),_0x9c0b('0x6f'),{'event':'acceptmessage','message':_[_0x9c0b('0x4c')](_0x535fba[_0x9c0b('0x29')],JSON['parse'](_0x535fba['interaction'][_0x9c0b('0x70')]))},client9002)[_0x9c0b('0x20')](function(){return _0x535fba;});}return _0x535fba;}return null;})['then'](respondWithResult(_0x20267d,null))[_0x9c0b('0x2b')](handleError(_0x20267d,null));};var interaction_log=require('../../config/logger')(_0x9c0b('0x5a'));exports['reject']=function(_0x2c265c,_0x255a13,_0x5663c3){var _0x3b40a8={'agent':{},'channel':_0x9c0b('0x71')};if(_0x2c265c[_0x9c0b('0x57')]['id']){delete _0x2c265c[_0x9c0b('0x57')]['id'];}_0x2c265c['body'][_0x9c0b('0x5e')]=_0x2c265c[_0x9c0b('0x57')][_0x9c0b('0x5e')]||_0x2c265c['user']['id'];_0x3b40a8[_0x9c0b('0x72')]['id']=_0x2c265c[_0x9c0b('0x57')][_0x9c0b('0x5e')];return db[_0x9c0b('0x3c')]['find']({'where':{'id':_0x2c265c[_0x9c0b('0x52')]['id'],'UserId':null}})[_0x9c0b('0x20')](handleEntityNotFound(_0x255a13,null))[_0x9c0b('0x20')](function(_0x27cfba){if(_0x27cfba){_0x3b40a8[_0x9c0b('0x29')]=_0x27cfba[_0x9c0b('0x62')]({'plain':!![]});return db[_0x9c0b('0x63')][_0x9c0b('0x55')]({'where':{'id':_0x27cfba['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x255a13,null))[_0x9c0b('0x20')](function(_0x5e1bb7){if(_0x5e1bb7){_0x3b40a8['interaction']=_0x5e1bb7[_0x9c0b('0x62')]({'plain':!![]});interaction_log[_0x9c0b('0x21')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2c265c[_0x9c0b('0x5f')]['id'],_0x2c265c[_0x9c0b('0x5f')][_0x9c0b('0x3a')],_0x2c265c[_0x9c0b('0x5f')][_0x9c0b('0x73')],_0x3b40a8[_0x9c0b('0x66')]['id'],_0x2c265c[_0x9c0b('0x57')]?JSON[_0x9c0b('0x26')](_0x2c265c[_0x9c0b('0x57')]):_0x9c0b('0x68'));return respondWithRpcPromise(_0x9c0b('0x74'),'rejectMessage',_0x3b40a8);}return null;})[_0x9c0b('0x20')](function(_0x1e8f7c){if(_0x1e8f7c){_0x1e8f7c[_0x9c0b('0x29')]['interface']=util['format'](_0x9c0b('0x6b'),_0x2c265c[_0x9c0b('0x5f')]['name']);_0x1e8f7c[_0x9c0b('0x29')][_0x9c0b('0x6c')]=_0x3b40a8[_0x9c0b('0x6c')];_0x1e8f7c[_0x9c0b('0x29')][_0x9c0b('0x6d')]=_0x9c0b('0x36');respondWithRpcPromise('EventManager',_0x9c0b('0x6f'),{'event':'rejectmessage','message':_0x1e8f7c[_0x9c0b('0x29')]},client9002);return _0x3b40a8;}return null;})['then'](respondWithResult(_0x255a13,null))[_0x9c0b('0x2b')](handleError(_0x255a13,null));};