Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / smsInteraction / smsInteraction.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 _0xba98=['update','then','error','name','index','SmsInteraction','fieldName','type','key','getOptions','findAll','sms','user','catch','model','keys','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','find','create','body','params','describe','addMessage','SmsMessage','ids','omit','getMessages','hasOwnProperty','nolimit','order','sort','pick','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','include','rows','addTags','setTags','spread','Tag','color','emit','smsInteractionTags:save','removeTags','download','unix','root','files','tmp','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','lastName','createdAt','secret','SmsAccount','Owner','get','mkdirSync','Sms','Account','toString','closed','disposition','Messages','map','direction','out','System','read','renderFile','join','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x261527,_0x4aa9f5){var _0x540a18=function(_0xd6cd8){while(--_0xd6cd8){_0x261527['push'](_0x261527['shift']());}};_0x540a18(++_0x4aa9f5);}(_0xba98,0xdd));var _0x8ba9=function(_0x1b4a68,_0x59c033){_0x1b4a68=_0x1b4a68-0x0;var _0x78e106=_0xba98[_0x1b4a68];return _0x78e106;};'use strict';var rimraf=require(_0x8ba9('0x0'));var zipdir=require(_0x8ba9('0x1'));var moment=require('moment');var BPromise=require(_0x8ba9('0x2'));var util=require(_0x8ba9('0x3'));var path=require(_0x8ba9('0x4'));var ejs=require(_0x8ba9('0x5'));var fs=require('fs');var _=require(_0x8ba9('0x6'));var Redis=require(_0x8ba9('0x7'));var interaction=require(_0x8ba9('0x8'));var qs=require(_0x8ba9('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x8ba9('0xa'))('api');var config=require(_0x8ba9('0xb'));var db=require(_0x8ba9('0xc'))['db'];config[_0x8ba9('0xd')]=_['defaults'](config[_0x8ba9('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8ba9('0xe'))(new Redis(config[_0x8ba9('0xd')]));require(_0x8ba9('0xf'))[_0x8ba9('0x10')](socket);function respondWithStatusCode(_0x5811f3,_0xd362a8){_0xd362a8=_0xd362a8||0xcc;return function(_0x729eab){if(_0x729eab){return _0x5811f3[_0x8ba9('0x11')](_0xd362a8);}return _0x5811f3['status'](_0xd362a8)[_0x8ba9('0x12')]();};}function respondWithResult(_0x4a44e6,_0x28b5e8){_0x28b5e8=_0x28b5e8||0xc8;return function(_0x428ea1){if(_0x428ea1){return _0x4a44e6[_0x8ba9('0x13')](_0x28b5e8)[_0x8ba9('0x14')](_0x428ea1);}};}function respondWithFilteredResult(_0x3ef351,_0x345293){return function(_0x125666){if(_0x125666){var _0x30d6de=typeof _0x345293[_0x8ba9('0x15')]===_0x8ba9('0x16')&&typeof _0x345293[_0x8ba9('0x17')]===_0x8ba9('0x16');var _0xe8ddd9=_0x125666[_0x8ba9('0x18')];var _0x97da73=_0x30d6de?0x0:_0x345293[_0x8ba9('0x15')];var _0x7d943b=_0x30d6de?_0x125666[_0x8ba9('0x18')]:_0x345293[_0x8ba9('0x15')]+_0x345293['limit'];var _0x356a6f;if(_0x7d943b>=_0xe8ddd9){_0x7d943b=_0xe8ddd9;_0x356a6f=0xc8;}else{_0x356a6f=0xce;}_0x3ef351[_0x8ba9('0x13')](_0x356a6f);return _0x3ef351[_0x8ba9('0x19')](_0x8ba9('0x1a'),_0x97da73+'-'+_0x7d943b+'/'+_0xe8ddd9)['json'](_0x125666);}return null;};}function saveUpdates(_0x157971){return function(_0x45dc70){if(_0x45dc70){return _0x45dc70[_0x8ba9('0x1b')](_0x157971)[_0x8ba9('0x1c')](function(_0xb55625){return _0xb55625;});}return null;};}function removeEntity(_0x266c4b){return function(_0x4612b0){if(_0x4612b0){return _0x4612b0['destroy']()[_0x8ba9('0x1c')](function(){_0x266c4b[_0x8ba9('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ca71e){return function(_0x409291){if(!_0x409291){_0x3ca71e[_0x8ba9('0x11')](0x194);}return _0x409291;};}function handleError(_0x52ba8c,_0x124254){_0x124254=_0x124254||0x1f4;return function(_0x5af9f7){logger[_0x8ba9('0x1d')](_0x5af9f7['stack']);if(_0x5af9f7[_0x8ba9('0x1e')]){delete _0x5af9f7[_0x8ba9('0x1e')];}_0x52ba8c['status'](_0x124254)['send'](_0x5af9f7);};}exports[_0x8ba9('0x1f')]=function(_0x10e9b1,_0x1c3662){var _0x381b1e={};var _0x308eee=_['map'](db[_0x8ba9('0x20')]['rawAttributes'],function(_0x1fe5bb){return{'name':_0x1fe5bb[_0x8ba9('0x21')],'type':_0x1fe5bb[_0x8ba9('0x22')][_0x8ba9('0x23')]};});_0x381b1e=qs[_0x8ba9('0x24')](_0x308eee,_0x10e9b1);return interaction[_0x8ba9('0x25')](_0x8ba9('0x26'),_0x10e9b1['query'],_0x10e9b1[_0x8ba9('0x27')],_0x381b1e,_0x308eee)[_0x8ba9('0x1c')](respondWithFilteredResult(_0x1c3662,_0x381b1e))[_0x8ba9('0x28')](handleError(_0x1c3662,null));};exports['show']=function(_0x37cc23,_0x3900ad){var _0x297e47={'raw':![],'where':{'id':_0x37cc23['params']['id']}},_0x125485={};_0x125485[_0x8ba9('0x29')]=_[_0x8ba9('0x2a')](db['SmsInteraction'][_0x8ba9('0x2b')]);_0x125485[_0x8ba9('0x2c')]=_[_0x8ba9('0x2a')](_0x37cc23[_0x8ba9('0x2c')]);_0x125485[_0x8ba9('0x2d')]=_[_0x8ba9('0x2e')](_0x125485[_0x8ba9('0x29')],_0x125485[_0x8ba9('0x2c')]);_0x297e47[_0x8ba9('0x2f')]=_[_0x8ba9('0x2e')](_0x125485['model'],qs[_0x8ba9('0x30')](_0x37cc23['query'][_0x8ba9('0x30')]));_0x297e47[_0x8ba9('0x2f')]=_0x297e47[_0x8ba9('0x2f')][_0x8ba9('0x31')]?_0x297e47[_0x8ba9('0x2f')]:_0x125485[_0x8ba9('0x29')];if(_0x37cc23[_0x8ba9('0x2c')][_0x8ba9('0x32')]){_0x297e47['include']=[{'all':!![]}];}_0x297e47=_['merge']({},_0x297e47,_0x37cc23['options']);return db[_0x8ba9('0x20')][_0x8ba9('0x33')](_0x297e47)[_0x8ba9('0x1c')](handleEntityNotFound(_0x3900ad,null))[_0x8ba9('0x1c')](respondWithResult(_0x3900ad,null))[_0x8ba9('0x28')](handleError(_0x3900ad,null));};exports[_0x8ba9('0x34')]=function(_0x13e453,_0x3713e4){return db[_0x8ba9('0x20')][_0x8ba9('0x34')](_0x13e453[_0x8ba9('0x35')],{})[_0x8ba9('0x1c')](respondWithResult(_0x3713e4,0xc9))[_0x8ba9('0x28')](handleError(_0x3713e4,null));};exports[_0x8ba9('0x1b')]=function(_0x4a4000,_0xc981c3){if(_0x4a4000[_0x8ba9('0x35')]['id']){delete _0x4a4000[_0x8ba9('0x35')]['id'];}return db['SmsInteraction']['find']({'where':{'id':_0x4a4000[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0xc981c3,null))[_0x8ba9('0x1c')](saveUpdates(_0x4a4000['body'],null))['then'](respondWithResult(_0xc981c3,null))[_0x8ba9('0x28')](handleError(_0xc981c3,null));};exports['destroy']=function(_0x16e916,_0x42670a){return db[_0x8ba9('0x20')][_0x8ba9('0x33')]({'where':{'id':_0x16e916[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x42670a,null))[_0x8ba9('0x1c')](removeEntity(_0x42670a,null))[_0x8ba9('0x28')](handleError(_0x42670a,null));};exports[_0x8ba9('0x37')]=function(_0x126d51,_0x4c2341){return db['SmsInteraction'][_0x8ba9('0x37')]()['then'](respondWithResult(_0x4c2341,null))[_0x8ba9('0x28')](handleError(_0x4c2341,null));};exports[_0x8ba9('0x38')]=function(_0x40563b,_0x498d42){return db[_0x8ba9('0x39')]['find']({'where':{'id':_0x40563b[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x498d42,null))['then'](function(_0x38e127){if(_0x38e127){return _0x38e127[_0x8ba9('0x38')](_0x40563b[_0x8ba9('0x35')][_0x8ba9('0x3a')],_[_0x8ba9('0x3b')](_0x40563b[_0x8ba9('0x35')],[_0x8ba9('0x3a'),'id'])||{});}})[_0x8ba9('0x1c')](respondWithResult(_0x498d42,null))[_0x8ba9('0x28')](handleError(_0x498d42,null));};exports[_0x8ba9('0x3c')]=function(_0x3a2d5e,_0x3a3fe6){var _0x1bfa83={'raw':![],'where':{}};var _0x484a80={};var _0x4a0ff0={'count':0x0,'rows':[]};return db[_0x8ba9('0x20')]['findOne']({'where':{'id':_0x3a2d5e[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x3a3fe6,null))[_0x8ba9('0x1c')](function(_0x393820){if(_0x393820){_0x484a80['model']=_[_0x8ba9('0x2a')](db[_0x8ba9('0x39')]['rawAttributes']);_0x484a80[_0x8ba9('0x2c')]=_['keys'](_0x3a2d5e[_0x8ba9('0x2c')]);_0x484a80[_0x8ba9('0x2d')]=_[_0x8ba9('0x2e')](_0x484a80['model'],_0x484a80[_0x8ba9('0x2c')]);_0x1bfa83[_0x8ba9('0x2f')]=_[_0x8ba9('0x2e')](_0x484a80['model'],qs[_0x8ba9('0x30')](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x30')]));_0x1bfa83[_0x8ba9('0x2f')]=_0x1bfa83[_0x8ba9('0x2f')]['length']?_0x1bfa83[_0x8ba9('0x2f')]:_0x484a80[_0x8ba9('0x29')];if(!_0x3a2d5e['query'][_0x8ba9('0x3d')](_0x8ba9('0x3e'))){_0x1bfa83['limit']=qs['limit'](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x17')]);_0x1bfa83[_0x8ba9('0x15')]=qs[_0x8ba9('0x15')](_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x15')]);}_0x1bfa83[_0x8ba9('0x3f')]=qs[_0x8ba9('0x40')](_0x3a2d5e['query'][_0x8ba9('0x40')]);_0x1bfa83['where']=qs['filters'](_[_0x8ba9('0x41')](_0x3a2d5e[_0x8ba9('0x2c')],_0x484a80['filters']));_0x1bfa83[_0x8ba9('0x42')]['SmsInteractionId']=_0x393820['id'];if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x43')]){_0x1bfa83[_0x8ba9('0x42')]=_['merge'](_0x1bfa83[_0x8ba9('0x42')],{'$or':_['map'](_0x1bfa83[_0x8ba9('0x2f')],function(_0xa52349){var _0x28bb80={};_0x28bb80[_0xa52349]={'$like':'%'+_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x43')]+'%'};return _0x28bb80;})});}if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x44')]){var _0x5502b2=_0x3a2d5e[_0x8ba9('0x2c')]['$gte'][_0x8ba9('0x45')](',');var _0x586491={};_0x586491[_0x5502b2[0x0]]={'$gte':moment(_0x5502b2[0x1])[_0x8ba9('0x46')](_0x8ba9('0x47'))};_0x1bfa83['where']=_[_0x8ba9('0x48')](_0x1bfa83[_0x8ba9('0x42')],_0x586491);}_0x1bfa83=_[_0x8ba9('0x48')]({},_0x1bfa83,_0x3a2d5e['options']);return db[_0x8ba9('0x39')][_0x8ba9('0x18')]({'where':_0x1bfa83[_0x8ba9('0x42')]})[_0x8ba9('0x1c')](function(_0x79caa6){_0x4a0ff0[_0x8ba9('0x18')]=_0x79caa6;if(_0x3a2d5e[_0x8ba9('0x2c')][_0x8ba9('0x32')]){_0x1bfa83[_0x8ba9('0x49')]=[{'all':!![]}];}return db[_0x8ba9('0x39')][_0x8ba9('0x25')](_0x1bfa83);})[_0x8ba9('0x1c')](function(_0x1bc2ef){_0x4a0ff0[_0x8ba9('0x4a')]=_0x1bc2ef;return _0x4a0ff0;});}})[_0x8ba9('0x1c')](respondWithFilteredResult(_0x3a3fe6,_0x1bfa83))[_0x8ba9('0x28')](handleError(_0x3a3fe6,null));};exports[_0x8ba9('0x4b')]=function(_0x27bcb1,_0x40f190){return db['SmsInteraction'][_0x8ba9('0x33')]({'where':{'id':_0x27bcb1[_0x8ba9('0x36')]['id']}})[_0x8ba9('0x1c')](handleEntityNotFound(_0x40f190,null))[_0x8ba9('0x1c')](function(_0x3fea97){if(_0x3fea97){return _0x3fea97[_0x8ba9('0x4c')](_0x27bcb1[_0x8ba9('0x35')][_0x8ba9('0x3a')],_[_0x8ba9('0x3b')](_0x27bcb1[_0x8ba9('0x35')],[_0x8ba9('0x3a'),'id'])||{})[_0x8ba9('0x4d')](function(){return db[_0x8ba9('0x4e')][_0x8ba9('0x25')]({'attributes':['id',_0x8ba9('0x1e'),_0x8ba9('0x4f')],'where':{'id':_0x27bcb1[_0x8ba9('0x35')][_0x8ba9('0x3a')]}});})[_0x8ba9('0x1c')](function(_0x3f1e43){socket[_0x8ba9('0x50')](_0x8ba9('0x51'),{'id':Number(_0x27bcb1[_0x8ba9('0x36')]['id']),'tags':_0x3f1e43||[]});return{'id':Number(_0x27bcb1[_0x8ba9('0x36')]['id']),'tags':_0x3f1e43||[]};});}})[_0x8ba9('0x1c')](respondWithResult(_0x40f190,null))['catch'](handleError(_0x40f190,null));};exports['removeTags']=function(_0x14f521,_0x268020){return db[_0x8ba9('0x20')]['find']({'where':{'id':_0x14f521[_0x8ba9('0x36')]['id']}})['then'](handleEntityNotFound(_0x268020,null))[_0x8ba9('0x1c')](function(_0x4c2ead){if(_0x4c2ead){return _0x4c2ead[_0x8ba9('0x52')](_0x14f521[_0x8ba9('0x2c')]['ids']);}})[_0x8ba9('0x1c')](respondWithStatusCode(_0x268020,null))[_0x8ba9('0x28')](handleError(_0x268020,null));};exports[_0x8ba9('0x53')]=function(_0x41187e,_0x19f1f6){var _0xbf8ec1=moment()[_0x8ba9('0x54')]()['toString']();var _0x2dc148=path['join'](config[_0x8ba9('0x55')],'server',_0x8ba9('0x56'),_0x8ba9('0x57'));var _0x2701f3=path['join'](_0x2dc148,_0xbf8ec1);var _0x184490=util[_0x8ba9('0x46')](_0x8ba9('0x58'),_0x41187e[_0x8ba9('0x36')]['id'],_0xbf8ec1);var _0x170eb8=path['join'](_0x2dc148,_0x184490);var _0x352097=[];_0x352097[_0x8ba9('0x59')]({'model':db[_0x8ba9('0x5a')],'as':_0x8ba9('0x5a'),'attributes':['id',_0x8ba9('0x5b')],'raw':!![]});_0x352097['push']({'model':db[_0x8ba9('0x5c')],'as':_0x8ba9('0x5d'),'attributes':['id',_0x8ba9('0x5e'),_0x8ba9('0x5f')],'raw':!![]});var _0x5efade=[{'model':db[_0x8ba9('0x39')],'as':'Messages','attributes':['id',_0x8ba9('0x35'),_0x8ba9('0x60'),'direction',_0x8ba9('0x61'),'read'],'include':_0x352097}];_0x5efade[_0x8ba9('0x59')]({'model':db[_0x8ba9('0x62')],'as':'Account','attributes':['id',_0x8ba9('0x1e')]});_0x5efade[_0x8ba9('0x59')]({'model':db['User'],'as':_0x8ba9('0x63'),'attributes':['id',_0x8ba9('0x5b')]});return db[_0x8ba9('0x20')][_0x8ba9('0x33')]({'where':{'id':_0x41187e[_0x8ba9('0x36')]['id']},'include':_0x5efade})['then'](handleEntityNotFound(_0x19f1f6,null))[_0x8ba9('0x1c')](function(_0x4bd4da){if(_0x4bd4da){var _0x433d20=_0x4bd4da[_0x8ba9('0x64')]({'plain':!![]});fs[_0x8ba9('0x65')](_0x2701f3);var _0x512303={'channel':_0x8ba9('0x66'),'account':_0x433d20[_0x8ba9('0x67')][_0x8ba9('0x1e')],'agent':_0x433d20[_0x8ba9('0x63')]?_0x433d20[_0x8ba9('0x63')][_0x8ba9('0x5b')]:'N.A.','createdAt':moment(_0x433d20[_0x8ba9('0x60')])[_0x8ba9('0x46')](_0x8ba9('0x47'))[_0x8ba9('0x68')](),'closedAt':_0x433d20[_0x8ba9('0x69')]?moment(_0x433d20['closedAt'])[_0x8ba9('0x46')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x433d20[_0x8ba9('0x6a')],'messages':_(_0x433d20[_0x8ba9('0x6b')])[_0x8ba9('0x43')]({'secret':![]})[_0x8ba9('0x6c')](function(_0x2a4dd1){return{'date':moment(_0x2a4dd1[_0x8ba9('0x60')])['format'](_0x8ba9('0x47'))[_0x8ba9('0x68')](),'sender':_0x2a4dd1[_0x8ba9('0x6d')]===_0x8ba9('0x6e')?_0x2a4dd1[_0x8ba9('0x5a')]?_0x2a4dd1[_0x8ba9('0x5a')][_0x8ba9('0x5b')]:_0x8ba9('0x6f'):_0x2a4dd1[_0x8ba9('0x5d')]['firstName']+(_0x2a4dd1[_0x8ba9('0x5d')]['lastName']?'\x20'+_0x2a4dd1['Contact'][_0x8ba9('0x5f')]:''),'body':_0x2a4dd1['body'],'direction':_0x2a4dd1[_0x8ba9('0x6d')]===_0x8ba9('0x6e')?'A':'C','secret':_0x2a4dd1[_0x8ba9('0x61')],'read':_0x2a4dd1[_0x8ba9('0x70')]};})['value']()};return ejs[_0x8ba9('0x71')](path[_0x8ba9('0x72')](config[_0x8ba9('0x55')],_0x8ba9('0x73'),_0x8ba9('0x74'),_0x8ba9('0x75')),{'interaction':_0x512303})[_0x8ba9('0x1c')](function(_0x5802e1){var _0x5b2146=path[_0x8ba9('0x72')](_0x2701f3,_0x8ba9('0x76')+_0x433d20['id']+'-'+_0xbf8ec1+_0x8ba9('0x77'));var _0x265468={'path':_0x5b2146,'channel':'Sms','interactionId':_0x433d20['id']};return pdf[_0x8ba9('0x78')](_0x5802e1,_0x265468);})[_0x8ba9('0x1c')](function(){return new BPromise(function(_0x5c2687,_0x1fee93){zipdir(_0x2701f3,{'saveTo':_0x170eb8},function(_0x56912a,_0x421dbd){if(_0x56912a)return _0x1fee93(_0x56912a);return _0x5c2687(_0x421dbd);});})['then'](function(){return new BPromise(function(_0x4b96d9,_0x13d289){rimraf(_0x2701f3,function(_0x3e7dc8){if(_0x3e7dc8)_0x13d289(_0x3e7dc8);return _0x4b96d9();});});})[_0x8ba9('0x1c')](function(){return _0x19f1f6[_0x8ba9('0x53')](_0x170eb8,_0x184490,function(_0xce0f6e){if(_0xce0f6e){console[_0x8ba9('0x79')](_0x8ba9('0x7a'),_0xce0f6e);}else{fs[_0x8ba9('0x7b')](_0x170eb8);}});});});}else{return _0x19f1f6[_0x8ba9('0x11')](0xc8);}})[_0x8ba9('0x28')](handleError(_0x19f1f6,null));};