aefd46ae2e1cc40ef866bb3eea4962f3e94fd6b6
[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 _0x1d34=['rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','./smsInteraction.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','update','then','destroy','name','send','map','SmsInteraction','rawAttributes','type','getOptions','sms','catch','show','model','keys','query','intersection','attributes','fields','includeAll','include','merge','options','find','create','body','params','describe','SmsMessage','ids','omit','getMessages','findOne','filters','length','hasOwnProperty','order','sort','SmsInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','where','findAll','rows','setTags','spread','color','emit','removeTags','download','unix','toString','join','server','files','tmp','format','transcript-%d-%s.zip','push','User','firstName','read','Account','fullname','get','Sms','Owner','createdAt','closed','closedAt','disposition','Messages','direction','out','Contact','lastName','value','root','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','unlinkSync'];(function(_0x51259b,_0x3b4562){var _0x28debf=function(_0xd9b596){while(--_0xd9b596){_0x51259b['push'](_0x51259b['shift']());}};_0x28debf(++_0x3b4562);}(_0x1d34,0x1c8));var _0x41d3=function(_0x339e5c,_0x56ff1d){_0x339e5c=_0x339e5c-0x0;var _0x36e52e=_0x1d34[_0x339e5c];return _0x36e52e;};'use strict';var rimraf=require(_0x41d3('0x0'));var zipdir=require(_0x41d3('0x1'));var moment=require(_0x41d3('0x2'));var BPromise=require(_0x41d3('0x3'));var util=require(_0x41d3('0x4'));var path=require(_0x41d3('0x5'));var ejs=require(_0x41d3('0x6'));var fs=require('fs');var _=require(_0x41d3('0x7'));var Redis=require(_0x41d3('0x8'));var interaction=require(_0x41d3('0x9'));var qs=require(_0x41d3('0xa'));var pdf=require(_0x41d3('0xb'));var logger=require(_0x41d3('0xc'))(_0x41d3('0xd'));var config=require(_0x41d3('0xe'));var db=require(_0x41d3('0xf'))['db'];config['redis']=_[_0x41d3('0x10')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x41d3('0x11')]));require(_0x41d3('0x12'))[_0x41d3('0x13')](socket);function respondWithStatusCode(_0x3dbc88,_0x584117){_0x584117=_0x584117||0xcc;return function(_0x242788){if(_0x242788){return _0x3dbc88[_0x41d3('0x14')](_0x584117);}return _0x3dbc88[_0x41d3('0x15')](_0x584117)[_0x41d3('0x16')]();};}function respondWithResult(_0x3168ad,_0x311bfd){_0x311bfd=_0x311bfd||0xc8;return function(_0x384e6d){if(_0x384e6d){return _0x3168ad[_0x41d3('0x15')](_0x311bfd)[_0x41d3('0x17')](_0x384e6d);}};}function respondWithFilteredResult(_0x1a2940,_0x7cb5d8){return function(_0x45e9f1){if(_0x45e9f1){var _0x4b3c47=typeof _0x7cb5d8['offset']===_0x41d3('0x18')&&typeof _0x7cb5d8[_0x41d3('0x19')]===_0x41d3('0x18');var _0x44262f=_0x45e9f1['count'];var _0x32d4fd=_0x4b3c47?0x0:_0x7cb5d8[_0x41d3('0x1a')];var _0x111d1d=_0x4b3c47?_0x45e9f1[_0x41d3('0x1b')]:_0x7cb5d8[_0x41d3('0x1a')]+_0x7cb5d8[_0x41d3('0x19')];var _0x7ca255;if(_0x111d1d>=_0x44262f){_0x111d1d=_0x44262f;_0x7ca255=0xc8;}else{_0x7ca255=0xce;}_0x1a2940[_0x41d3('0x15')](_0x7ca255);return _0x1a2940['set'](_0x41d3('0x1c'),_0x32d4fd+'-'+_0x111d1d+'/'+_0x44262f)[_0x41d3('0x17')](_0x45e9f1);}return null;};}function saveUpdates(_0x151a95){return function(_0xb2483b){if(_0xb2483b){return _0xb2483b[_0x41d3('0x1d')](_0x151a95)[_0x41d3('0x1e')](function(_0x50166f){return _0x50166f;});}return null;};}function removeEntity(_0x3a5562){return function(_0x4bec68){if(_0x4bec68){return _0x4bec68[_0x41d3('0x1f')]()[_0x41d3('0x1e')](function(){_0x3a5562[_0x41d3('0x15')](0xcc)[_0x41d3('0x16')]();});}};}function handleEntityNotFound(_0x56eb51){return function(_0x398576){if(!_0x398576){_0x56eb51['sendStatus'](0x194);}return _0x398576;};}function handleError(_0x1e5603,_0xa2b4de){_0xa2b4de=_0xa2b4de||0x1f4;return function(_0x190118){logger['error'](_0x190118['stack']);if(_0x190118[_0x41d3('0x20')]){delete _0x190118[_0x41d3('0x20')];}_0x1e5603['status'](_0xa2b4de)[_0x41d3('0x21')](_0x190118);};}exports['index']=function(_0x2937d8,_0x47bb73){var _0x34e2a9={};var _0x283bdf=_[_0x41d3('0x22')](db[_0x41d3('0x23')][_0x41d3('0x24')],function(_0x1ffaef){return{'name':_0x1ffaef['fieldName'],'type':_0x1ffaef[_0x41d3('0x25')]['key']};});_0x34e2a9=qs[_0x41d3('0x26')](_0x283bdf,_0x2937d8);return interaction['findAll'](_0x41d3('0x27'),_0x2937d8['query'],_0x2937d8['user'],_0x34e2a9,_0x283bdf)[_0x41d3('0x1e')](respondWithFilteredResult(_0x47bb73,_0x34e2a9))[_0x41d3('0x28')](handleError(_0x47bb73,null));};exports[_0x41d3('0x29')]=function(_0x1f6c1f,_0x4dd3a9){var _0x4f0aef={'raw':![],'where':{'id':_0x1f6c1f['params']['id']}},_0x1f8ac4={};_0x1f8ac4[_0x41d3('0x2a')]=_[_0x41d3('0x2b')](db[_0x41d3('0x23')][_0x41d3('0x24')]);_0x1f8ac4[_0x41d3('0x2c')]=_['keys'](_0x1f6c1f[_0x41d3('0x2c')]);_0x1f8ac4['filters']=_[_0x41d3('0x2d')](_0x1f8ac4[_0x41d3('0x2a')],_0x1f8ac4['query']);_0x4f0aef[_0x41d3('0x2e')]=_['intersection'](_0x1f8ac4['model'],qs[_0x41d3('0x2f')](_0x1f6c1f[_0x41d3('0x2c')][_0x41d3('0x2f')]));_0x4f0aef['attributes']=_0x4f0aef['attributes']['length']?_0x4f0aef[_0x41d3('0x2e')]:_0x1f8ac4['model'];if(_0x1f6c1f[_0x41d3('0x2c')][_0x41d3('0x30')]){_0x4f0aef[_0x41d3('0x31')]=[{'all':!![]}];}_0x4f0aef=_[_0x41d3('0x32')]({},_0x4f0aef,_0x1f6c1f[_0x41d3('0x33')]);return db[_0x41d3('0x23')][_0x41d3('0x34')](_0x4f0aef)[_0x41d3('0x1e')](handleEntityNotFound(_0x4dd3a9,null))['then'](respondWithResult(_0x4dd3a9,null))[_0x41d3('0x28')](handleError(_0x4dd3a9,null));};exports[_0x41d3('0x35')]=function(_0x33c620,_0x4dc0b0){return db[_0x41d3('0x23')][_0x41d3('0x35')](_0x33c620[_0x41d3('0x36')],{})[_0x41d3('0x1e')](respondWithResult(_0x4dc0b0,0xc9))[_0x41d3('0x28')](handleError(_0x4dc0b0,null));};exports['update']=function(_0x273f5b,_0xb0809a){if(_0x273f5b[_0x41d3('0x36')]['id']){delete _0x273f5b[_0x41d3('0x36')]['id'];}return db[_0x41d3('0x23')]['find']({'where':{'id':_0x273f5b[_0x41d3('0x37')]['id']}})[_0x41d3('0x1e')](handleEntityNotFound(_0xb0809a,null))[_0x41d3('0x1e')](saveUpdates(_0x273f5b['body'],null))['then'](respondWithResult(_0xb0809a,null))[_0x41d3('0x28')](handleError(_0xb0809a,null));};exports[_0x41d3('0x1f')]=function(_0x1a278b,_0x45a41a){return db[_0x41d3('0x23')][_0x41d3('0x34')]({'where':{'id':_0x1a278b['params']['id']}})['then'](handleEntityNotFound(_0x45a41a,null))['then'](removeEntity(_0x45a41a,null))[_0x41d3('0x28')](handleError(_0x45a41a,null));};exports[_0x41d3('0x38')]=function(_0x206a2f,_0x358f9e){return db['SmsInteraction'][_0x41d3('0x38')]()[_0x41d3('0x1e')](respondWithResult(_0x358f9e,null))[_0x41d3('0x28')](handleError(_0x358f9e,null));};exports['addMessage']=function(_0x351db7,_0x15534a){return db[_0x41d3('0x39')][_0x41d3('0x34')]({'where':{'id':_0x351db7['params']['id']}})[_0x41d3('0x1e')](handleEntityNotFound(_0x15534a,null))[_0x41d3('0x1e')](function(_0x3a4f75){if(_0x3a4f75){return _0x3a4f75['addMessage'](_0x351db7[_0x41d3('0x36')][_0x41d3('0x3a')],_[_0x41d3('0x3b')](_0x351db7[_0x41d3('0x36')],[_0x41d3('0x3a'),'id'])||{});}})[_0x41d3('0x1e')](respondWithResult(_0x15534a,null))['catch'](handleError(_0x15534a,null));};exports[_0x41d3('0x3c')]=function(_0x23e37b,_0x468864){var _0x31d12c={'raw':![],'where':{}};var _0x5d5875={};var _0x3c2fc8={'count':0x0,'rows':[]};return db[_0x41d3('0x23')][_0x41d3('0x3d')]({'where':{'id':_0x23e37b['params']['id']}})[_0x41d3('0x1e')](handleEntityNotFound(_0x468864,null))[_0x41d3('0x1e')](function(_0x4ee0eb){if(_0x4ee0eb){_0x5d5875[_0x41d3('0x2a')]=_[_0x41d3('0x2b')](db['SmsMessage'][_0x41d3('0x24')]);_0x5d5875[_0x41d3('0x2c')]=_[_0x41d3('0x2b')](_0x23e37b[_0x41d3('0x2c')]);_0x5d5875[_0x41d3('0x3e')]=_['intersection'](_0x5d5875['model'],_0x5d5875[_0x41d3('0x2c')]);_0x31d12c[_0x41d3('0x2e')]=_[_0x41d3('0x2d')](_0x5d5875['model'],qs['fields'](_0x23e37b['query'][_0x41d3('0x2f')]));_0x31d12c[_0x41d3('0x2e')]=_0x31d12c[_0x41d3('0x2e')][_0x41d3('0x3f')]?_0x31d12c[_0x41d3('0x2e')]:_0x5d5875[_0x41d3('0x2a')];if(!_0x23e37b[_0x41d3('0x2c')][_0x41d3('0x40')]('nolimit')){_0x31d12c[_0x41d3('0x19')]=qs[_0x41d3('0x19')](_0x23e37b['query'][_0x41d3('0x19')]);_0x31d12c['offset']=qs[_0x41d3('0x1a')](_0x23e37b[_0x41d3('0x2c')][_0x41d3('0x1a')]);}_0x31d12c[_0x41d3('0x41')]=qs[_0x41d3('0x42')](_0x23e37b['query']['sort']);_0x31d12c['where']=qs['filters'](_['pick'](_0x23e37b[_0x41d3('0x2c')],_0x5d5875['filters']));_0x31d12c['where'][_0x41d3('0x43')]=_0x4ee0eb['id'];if(_0x23e37b['query'][_0x41d3('0x44')]){_0x31d12c['where']=_['merge'](_0x31d12c['where'],{'$or':_[_0x41d3('0x22')](_0x31d12c[_0x41d3('0x2e')],function(_0x23a611){var _0x367402={};_0x367402[_0x23a611]={'$like':'%'+_0x23e37b[_0x41d3('0x2c')][_0x41d3('0x44')]+'%'};return _0x367402;})});}if(_0x23e37b['query'][_0x41d3('0x45')]){var _0x814c02=_0x23e37b[_0x41d3('0x2c')][_0x41d3('0x45')][_0x41d3('0x46')](',');var _0x10d742={};_0x10d742[_0x814c02[0x0]]={'$gte':moment(_0x814c02[0x1])['format'](_0x41d3('0x47'))};_0x31d12c[_0x41d3('0x48')]=_['merge'](_0x31d12c[_0x41d3('0x48')],_0x10d742);}_0x31d12c=_[_0x41d3('0x32')]({},_0x31d12c,_0x23e37b[_0x41d3('0x33')]);return db[_0x41d3('0x39')][_0x41d3('0x1b')]({'where':_0x31d12c[_0x41d3('0x48')]})[_0x41d3('0x1e')](function(_0x206bc8){_0x3c2fc8['count']=_0x206bc8;if(_0x23e37b['query'][_0x41d3('0x30')]){_0x31d12c[_0x41d3('0x31')]=[{'all':!![]}];}return db['SmsMessage'][_0x41d3('0x49')](_0x31d12c);})['then'](function(_0x453e87){_0x3c2fc8[_0x41d3('0x4a')]=_0x453e87;return _0x3c2fc8;});}})[_0x41d3('0x1e')](respondWithFilteredResult(_0x468864,_0x31d12c))['catch'](handleError(_0x468864,null));};exports['addTags']=function(_0x5ee758,_0x5b1ec3){return db[_0x41d3('0x23')][_0x41d3('0x34')]({'where':{'id':_0x5ee758[_0x41d3('0x37')]['id']}})['then'](handleEntityNotFound(_0x5b1ec3,null))['then'](function(_0x1ab160){if(_0x1ab160){return _0x1ab160[_0x41d3('0x4b')](_0x5ee758[_0x41d3('0x36')][_0x41d3('0x3a')],_[_0x41d3('0x3b')](_0x5ee758[_0x41d3('0x36')],[_0x41d3('0x3a'),'id'])||{})[_0x41d3('0x4c')](function(){return db['Tag'][_0x41d3('0x49')]({'attributes':['id',_0x41d3('0x20'),_0x41d3('0x4d')],'where':{'id':_0x5ee758['body'][_0x41d3('0x3a')]}});})[_0x41d3('0x1e')](function(_0x29ae3f){socket[_0x41d3('0x4e')]('smsInteractionTags:save',{'id':Number(_0x5ee758[_0x41d3('0x37')]['id']),'tags':_0x29ae3f||[]});return{'id':Number(_0x5ee758[_0x41d3('0x37')]['id']),'tags':_0x29ae3f||[]};});}})[_0x41d3('0x1e')](respondWithResult(_0x5b1ec3,null))[_0x41d3('0x28')](handleError(_0x5b1ec3,null));};exports['removeTags']=function(_0x43428a,_0x18717e){return db[_0x41d3('0x23')][_0x41d3('0x34')]({'where':{'id':_0x43428a[_0x41d3('0x37')]['id']}})[_0x41d3('0x1e')](handleEntityNotFound(_0x18717e,null))['then'](function(_0x508fb9){if(_0x508fb9){return _0x508fb9[_0x41d3('0x4f')](_0x43428a[_0x41d3('0x2c')][_0x41d3('0x3a')]);}})[_0x41d3('0x1e')](respondWithStatusCode(_0x18717e,null))[_0x41d3('0x28')](handleError(_0x18717e,null));};exports[_0x41d3('0x50')]=function(_0x39b5bc,_0x550eca){var _0x1eb6fe=moment()[_0x41d3('0x51')]()[_0x41d3('0x52')]();var _0x3832d3=path[_0x41d3('0x53')](config['root'],_0x41d3('0x54'),_0x41d3('0x55'),_0x41d3('0x56'));var _0x58c552=path[_0x41d3('0x53')](_0x3832d3,_0x1eb6fe);var _0x5be61c=util[_0x41d3('0x57')](_0x41d3('0x58'),_0x39b5bc[_0x41d3('0x37')]['id'],_0x1eb6fe);var _0x14e69f=path[_0x41d3('0x53')](_0x3832d3,_0x5be61c);var _0x2bf0cf=[];_0x2bf0cf[_0x41d3('0x59')]({'model':db[_0x41d3('0x5a')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x2bf0cf[_0x41d3('0x59')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x41d3('0x5b'),'lastName'],'raw':!![]});var _0x435bf7=[{'model':db[_0x41d3('0x39')],'as':'Messages','attributes':['id',_0x41d3('0x36'),'createdAt','direction','secret',_0x41d3('0x5c')],'include':_0x2bf0cf}];_0x435bf7['push']({'model':db['SmsAccount'],'as':_0x41d3('0x5d'),'attributes':['id',_0x41d3('0x20')]});_0x435bf7[_0x41d3('0x59')]({'model':db['User'],'as':'Owner','attributes':['id',_0x41d3('0x5e')]});return db['SmsInteraction']['find']({'where':{'id':_0x39b5bc[_0x41d3('0x37')]['id']},'include':_0x435bf7})[_0x41d3('0x1e')](handleEntityNotFound(_0x550eca,null))[_0x41d3('0x1e')](function(_0x5e8564){if(_0x5e8564){var _0x49318c=_0x5e8564[_0x41d3('0x5f')]({'plain':!![]});fs['mkdirSync'](_0x58c552);var _0x5726c0={'channel':_0x41d3('0x60'),'account':_0x49318c[_0x41d3('0x5d')][_0x41d3('0x20')],'agent':_0x49318c[_0x41d3('0x61')]?_0x49318c['Owner']['fullname']:'N.A.','createdAt':moment(_0x49318c[_0x41d3('0x62')])['format'](_0x41d3('0x47'))['toString'](),'closedAt':_0x49318c[_0x41d3('0x63')]?moment(_0x49318c[_0x41d3('0x64')])[_0x41d3('0x57')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x49318c[_0x41d3('0x65')],'messages':_(_0x49318c[_0x41d3('0x66')])['filter']({'secret':![]})['map'](function(_0xa880bc){return{'date':moment(_0xa880bc[_0x41d3('0x62')])[_0x41d3('0x57')](_0x41d3('0x47'))[_0x41d3('0x52')](),'sender':_0xa880bc[_0x41d3('0x67')]===_0x41d3('0x68')?_0xa880bc[_0x41d3('0x5a')]?_0xa880bc['User']['fullname']:'System':_0xa880bc[_0x41d3('0x69')][_0x41d3('0x5b')]+(_0xa880bc['Contact'][_0x41d3('0x6a')]?'\x20'+_0xa880bc[_0x41d3('0x69')][_0x41d3('0x6a')]:''),'body':_0xa880bc[_0x41d3('0x36')],'direction':_0xa880bc['direction']===_0x41d3('0x68')?'A':'C','secret':_0xa880bc['secret'],'read':_0xa880bc[_0x41d3('0x5c')]};})[_0x41d3('0x6b')]()};return ejs['renderFile'](path[_0x41d3('0x53')](config[_0x41d3('0x6c')],_0x41d3('0x54'),'views',_0x41d3('0x6d')),{'interaction':_0x5726c0})[_0x41d3('0x1e')](function(_0x3c18c1){var _0x44c580=path[_0x41d3('0x53')](_0x58c552,'transcript-'+_0x49318c['id']+'-'+_0x1eb6fe+_0x41d3('0x6e'));var _0x5e746c={'path':_0x44c580,'channel':_0x41d3('0x60'),'interactionId':_0x49318c['id']};return pdf[_0x41d3('0x6f')](_0x3c18c1,_0x5e746c);})[_0x41d3('0x1e')](function(){return new BPromise(function(_0x5040a7,_0x2f001a){zipdir(_0x58c552,{'saveTo':_0x14e69f},function(_0x537363,_0x4fc8ab){if(_0x537363)return _0x2f001a(_0x537363);return _0x5040a7(_0x4fc8ab);});})['then'](function(){return new BPromise(function(_0x3dffe4,_0x3a61da){rimraf(_0x58c552,function(_0x7d0d36){if(_0x7d0d36)_0x3a61da(_0x7d0d36);return _0x3dffe4();});});})['then'](function(){return _0x550eca[_0x41d3('0x50')](_0x14e69f,_0x5be61c,function(_0x1da4b0){if(_0x1da4b0){console['log'](_0x41d3('0x70'),_0x1da4b0);}else{fs[_0x41d3('0x71')](_0x14e69f);}});});});}else{return _0x550eca[_0x41d3('0x14')](0xc8);}})[_0x41d3('0x28')](handleError(_0x550eca,null));};