Built motion from commit 449495f6.|2.6.27
[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 _0xa8e1=['rows','addTags','findAll','emit','smsInteractionTags:save','removeTags','download','unix','server','files','join','format','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','Messages','createdAt','direction','secret','Account','Owner','get','mkdirSync','Sms','toString','closed','closedAt','out','System','firstName','lastName','value','renderFile','root','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','json','undefined','offset','limit','set','update','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','key','getOptions','sms','query','catch','params','model','keys','SmsInteraction','filters','intersection','fields','attributes','includeAll','options','find','create','body','describe','ids','omit','getMessages','findOne','SmsMessage','length','hasOwnProperty','order','sort','where','pick','SmsInteractionId','filter','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','count','include'];(function(_0x3a0ae8,_0x33b3ac){var _0x30d886=function(_0x195906){while(--_0x195906){_0x3a0ae8['push'](_0x3a0ae8['shift']());}};_0x30d886(++_0x33b3ac);}(_0xa8e1,0x11c));var _0x1a8e=function(_0x4d8666,_0x2ff19d){_0x4d8666=_0x4d8666-0x0;var _0x37175b=_0xa8e1[_0x4d8666];return _0x37175b;};'use strict';var rimraf=require(_0x1a8e('0x0'));var zipdir=require(_0x1a8e('0x1'));var moment=require(_0x1a8e('0x2'));var BPromise=require(_0x1a8e('0x3'));var util=require(_0x1a8e('0x4'));var path=require(_0x1a8e('0x5'));var ejs=require(_0x1a8e('0x6'));var fs=require('fs');var _=require(_0x1a8e('0x7'));var Redis=require('ioredis');var interaction=require(_0x1a8e('0x8'));var qs=require(_0x1a8e('0x9'));var pdf=require(_0x1a8e('0xa'));var logger=require(_0x1a8e('0xb'))(_0x1a8e('0xc'));var config=require(_0x1a8e('0xd'));var db=require(_0x1a8e('0xe'))['db'];config[_0x1a8e('0xf')]=_[_0x1a8e('0x10')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1a8e('0x11'))(new Redis(config[_0x1a8e('0xf')]));require(_0x1a8e('0x12'))[_0x1a8e('0x13')](socket);function respondWithStatusCode(_0x36fb4b,_0x32a12e){_0x32a12e=_0x32a12e||0xcc;return function(_0x403cc2){if(_0x403cc2){return _0x36fb4b[_0x1a8e('0x14')](_0x32a12e);}return _0x36fb4b[_0x1a8e('0x15')](_0x32a12e)['end']();};}function respondWithResult(_0x5c1570,_0x8b9c6){_0x8b9c6=_0x8b9c6||0xc8;return function(_0x1a7004){if(_0x1a7004){return _0x5c1570['status'](_0x8b9c6)[_0x1a8e('0x16')](_0x1a7004);}};}function respondWithFilteredResult(_0xc6d56e,_0x59585b){return function(_0x4e9865){if(_0x4e9865){var _0x1945c9=typeof _0x59585b['offset']===_0x1a8e('0x17')&&typeof _0x59585b['limit']===_0x1a8e('0x17');var _0xe12722=_0x4e9865['count'];var _0x5017c9=_0x1945c9?0x0:_0x59585b['offset'];var _0x3b4fa7=_0x1945c9?_0x4e9865['count']:_0x59585b[_0x1a8e('0x18')]+_0x59585b[_0x1a8e('0x19')];var _0x7af9ee;if(_0x3b4fa7>=_0xe12722){_0x3b4fa7=_0xe12722;_0x7af9ee=0xc8;}else{_0x7af9ee=0xce;}_0xc6d56e[_0x1a8e('0x15')](_0x7af9ee);return _0xc6d56e[_0x1a8e('0x1a')]('Content-Range',_0x5017c9+'-'+_0x3b4fa7+'/'+_0xe12722)[_0x1a8e('0x16')](_0x4e9865);}return null;};}function saveUpdates(_0x339f28){return function(_0x27c300){if(_0x27c300){return _0x27c300[_0x1a8e('0x1b')](_0x339f28)[_0x1a8e('0x1c')](function(_0x243a51){return _0x243a51;});}return null;};}function removeEntity(_0x459509){return function(_0x249f87){if(_0x249f87){return _0x249f87[_0x1a8e('0x1d')]()[_0x1a8e('0x1c')](function(){_0x459509[_0x1a8e('0x15')](0xcc)[_0x1a8e('0x1e')]();});}};}function handleEntityNotFound(_0x43d02e){return function(_0x92cb0a){if(!_0x92cb0a){_0x43d02e[_0x1a8e('0x14')](0x194);}return _0x92cb0a;};}function handleError(_0x40bb8b,_0x403c70){_0x403c70=_0x403c70||0x1f4;return function(_0x428ca9){logger['error'](_0x428ca9[_0x1a8e('0x1f')]);if(_0x428ca9[_0x1a8e('0x20')]){delete _0x428ca9[_0x1a8e('0x20')];}_0x40bb8b[_0x1a8e('0x15')](_0x403c70)[_0x1a8e('0x21')](_0x428ca9);};}exports[_0x1a8e('0x22')]=function(_0x45402f,_0x582e81){var _0x4057d1={};var _0x526aeb=_[_0x1a8e('0x23')](db['SmsInteraction'][_0x1a8e('0x24')],function(_0x114f2b){return{'name':_0x114f2b[_0x1a8e('0x25')],'type':_0x114f2b['type'][_0x1a8e('0x26')]};});_0x4057d1=qs[_0x1a8e('0x27')](_0x526aeb,_0x45402f);return interaction['findAll'](_0x1a8e('0x28'),_0x45402f[_0x1a8e('0x29')],_0x45402f['user'],_0x4057d1,_0x526aeb)[_0x1a8e('0x1c')](respondWithFilteredResult(_0x582e81,_0x4057d1))[_0x1a8e('0x2a')](handleError(_0x582e81,null));};exports['show']=function(_0x8cacc9,_0x2cd279){var _0x2b63e4={'raw':![],'where':{'id':_0x8cacc9[_0x1a8e('0x2b')]['id']}},_0x4ba097={};_0x4ba097[_0x1a8e('0x2c')]=_[_0x1a8e('0x2d')](db[_0x1a8e('0x2e')][_0x1a8e('0x24')]);_0x4ba097[_0x1a8e('0x29')]=_['keys'](_0x8cacc9['query']);_0x4ba097[_0x1a8e('0x2f')]=_[_0x1a8e('0x30')](_0x4ba097[_0x1a8e('0x2c')],_0x4ba097[_0x1a8e('0x29')]);_0x2b63e4['attributes']=_[_0x1a8e('0x30')](_0x4ba097['model'],qs[_0x1a8e('0x31')](_0x8cacc9[_0x1a8e('0x29')]['fields']));_0x2b63e4[_0x1a8e('0x32')]=_0x2b63e4[_0x1a8e('0x32')]['length']?_0x2b63e4[_0x1a8e('0x32')]:_0x4ba097['model'];if(_0x8cacc9[_0x1a8e('0x29')][_0x1a8e('0x33')]){_0x2b63e4['include']=[{'all':!![]}];}_0x2b63e4=_['merge']({},_0x2b63e4,_0x8cacc9[_0x1a8e('0x34')]);return db[_0x1a8e('0x2e')][_0x1a8e('0x35')](_0x2b63e4)[_0x1a8e('0x1c')](handleEntityNotFound(_0x2cd279,null))[_0x1a8e('0x1c')](respondWithResult(_0x2cd279,null))['catch'](handleError(_0x2cd279,null));};exports[_0x1a8e('0x36')]=function(_0x29b77f,_0x5ea4dc){return db[_0x1a8e('0x2e')]['create'](_0x29b77f[_0x1a8e('0x37')],{})[_0x1a8e('0x1c')](respondWithResult(_0x5ea4dc,0xc9))[_0x1a8e('0x2a')](handleError(_0x5ea4dc,null));};exports['update']=function(_0x2e89b8,_0xed7b32){if(_0x2e89b8[_0x1a8e('0x37')]['id']){delete _0x2e89b8[_0x1a8e('0x37')]['id'];}return db[_0x1a8e('0x2e')]['find']({'where':{'id':_0x2e89b8[_0x1a8e('0x2b')]['id']}})['then'](handleEntityNotFound(_0xed7b32,null))[_0x1a8e('0x1c')](saveUpdates(_0x2e89b8[_0x1a8e('0x37')],null))[_0x1a8e('0x1c')](respondWithResult(_0xed7b32,null))[_0x1a8e('0x2a')](handleError(_0xed7b32,null));};exports['destroy']=function(_0x357024,_0x47d7de){return db[_0x1a8e('0x2e')][_0x1a8e('0x35')]({'where':{'id':_0x357024[_0x1a8e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x47d7de,null))['then'](removeEntity(_0x47d7de,null))['catch'](handleError(_0x47d7de,null));};exports[_0x1a8e('0x38')]=function(_0x4f3ded,_0xfdd560){return db[_0x1a8e('0x2e')][_0x1a8e('0x38')]()[_0x1a8e('0x1c')](respondWithResult(_0xfdd560,null))[_0x1a8e('0x2a')](handleError(_0xfdd560,null));};exports['addMessage']=function(_0x45163d,_0x2ad097){return db['SmsMessage']['find']({'where':{'id':_0x45163d[_0x1a8e('0x2b')]['id']}})[_0x1a8e('0x1c')](handleEntityNotFound(_0x2ad097,null))[_0x1a8e('0x1c')](function(_0x51e35e){if(_0x51e35e){return _0x51e35e['addMessage'](_0x45163d[_0x1a8e('0x37')][_0x1a8e('0x39')],_[_0x1a8e('0x3a')](_0x45163d['body'],[_0x1a8e('0x39'),'id'])||{});}})['then'](respondWithResult(_0x2ad097,null))[_0x1a8e('0x2a')](handleError(_0x2ad097,null));};exports[_0x1a8e('0x3b')]=function(_0x262fd5,_0x8ce5c3){var _0x4d90d1={'raw':![],'where':{}};var _0x279a9d={};var _0x1e9483={'count':0x0,'rows':[]};return db[_0x1a8e('0x2e')][_0x1a8e('0x3c')]({'where':{'id':_0x262fd5[_0x1a8e('0x2b')]['id']}})[_0x1a8e('0x1c')](handleEntityNotFound(_0x8ce5c3,null))[_0x1a8e('0x1c')](function(_0x2f4b1d){if(_0x2f4b1d){_0x279a9d[_0x1a8e('0x2c')]=_[_0x1a8e('0x2d')](db[_0x1a8e('0x3d')][_0x1a8e('0x24')]);_0x279a9d['query']=_['keys'](_0x262fd5[_0x1a8e('0x29')]);_0x279a9d['filters']=_[_0x1a8e('0x30')](_0x279a9d[_0x1a8e('0x2c')],_0x279a9d['query']);_0x4d90d1['attributes']=_[_0x1a8e('0x30')](_0x279a9d[_0x1a8e('0x2c')],qs['fields'](_0x262fd5['query']['fields']));_0x4d90d1['attributes']=_0x4d90d1[_0x1a8e('0x32')][_0x1a8e('0x3e')]?_0x4d90d1[_0x1a8e('0x32')]:_0x279a9d[_0x1a8e('0x2c')];if(!_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x3f')]('nolimit')){_0x4d90d1[_0x1a8e('0x19')]=qs['limit'](_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x19')]);_0x4d90d1[_0x1a8e('0x18')]=qs[_0x1a8e('0x18')](_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x18')]);}_0x4d90d1[_0x1a8e('0x40')]=qs[_0x1a8e('0x41')](_0x262fd5[_0x1a8e('0x29')]['sort']);_0x4d90d1[_0x1a8e('0x42')]=qs[_0x1a8e('0x2f')](_[_0x1a8e('0x43')](_0x262fd5['query'],_0x279a9d['filters']));_0x4d90d1[_0x1a8e('0x42')][_0x1a8e('0x44')]=_0x2f4b1d['id'];if(_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x45')]){_0x4d90d1['where']=_[_0x1a8e('0x46')](_0x4d90d1[_0x1a8e('0x42')],{'$or':_[_0x1a8e('0x23')](_0x4d90d1['attributes'],function(_0x20eca4){var _0x3484d2={};_0x3484d2[_0x20eca4]={'$like':'%'+_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x45')]+'%'};return _0x3484d2;})});}if(_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x47')]){var _0x3793cc=_0x262fd5[_0x1a8e('0x29')][_0x1a8e('0x47')][_0x1a8e('0x48')](',');var _0xfa2e0f={};_0xfa2e0f[_0x3793cc[0x0]]={'$gte':moment(_0x3793cc[0x1])['format'](_0x1a8e('0x49'))};_0x4d90d1[_0x1a8e('0x42')]=_[_0x1a8e('0x46')](_0x4d90d1[_0x1a8e('0x42')],_0xfa2e0f);}_0x4d90d1=_['merge']({},_0x4d90d1,_0x262fd5['options']);return db[_0x1a8e('0x3d')][_0x1a8e('0x4a')]({'where':_0x4d90d1[_0x1a8e('0x42')]})['then'](function(_0x595332){_0x1e9483[_0x1a8e('0x4a')]=_0x595332;if(_0x262fd5[_0x1a8e('0x29')]['includeAll']){_0x4d90d1[_0x1a8e('0x4b')]=[{'all':!![]}];}return db[_0x1a8e('0x3d')]['findAll'](_0x4d90d1);})['then'](function(_0x16d926){_0x1e9483[_0x1a8e('0x4c')]=_0x16d926;return _0x1e9483;});}})['then'](respondWithFilteredResult(_0x8ce5c3,_0x4d90d1))[_0x1a8e('0x2a')](handleError(_0x8ce5c3,null));};exports[_0x1a8e('0x4d')]=function(_0x1236e8,_0x3faa0d){return db['SmsInteraction'][_0x1a8e('0x35')]({'where':{'id':_0x1236e8['params']['id']}})[_0x1a8e('0x1c')](handleEntityNotFound(_0x3faa0d,null))['then'](function(_0x18e027){if(_0x18e027){return _0x18e027['setTags'](_0x1236e8['body'][_0x1a8e('0x39')],_[_0x1a8e('0x3a')](_0x1236e8['body'],[_0x1a8e('0x39'),'id'])||{})['spread'](function(){return db['Tag'][_0x1a8e('0x4e')]({'attributes':['id',_0x1a8e('0x20'),'color'],'where':{'id':_0x1236e8[_0x1a8e('0x37')]['ids']}});})[_0x1a8e('0x1c')](function(_0x262e33){socket[_0x1a8e('0x4f')](_0x1a8e('0x50'),{'id':Number(_0x1236e8[_0x1a8e('0x2b')]['id']),'tags':_0x262e33||[]});return{'id':Number(_0x1236e8[_0x1a8e('0x2b')]['id']),'tags':_0x262e33||[]};});}})[_0x1a8e('0x1c')](respondWithResult(_0x3faa0d,null))[_0x1a8e('0x2a')](handleError(_0x3faa0d,null));};exports[_0x1a8e('0x51')]=function(_0x3ed92d,_0x31ed1b){return db[_0x1a8e('0x2e')][_0x1a8e('0x35')]({'where':{'id':_0x3ed92d[_0x1a8e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x31ed1b,null))[_0x1a8e('0x1c')](function(_0x1485ef){if(_0x1485ef){return _0x1485ef[_0x1a8e('0x51')](_0x3ed92d['query'][_0x1a8e('0x39')]);}})[_0x1a8e('0x1c')](respondWithStatusCode(_0x31ed1b,null))[_0x1a8e('0x2a')](handleError(_0x31ed1b,null));};exports[_0x1a8e('0x52')]=function(_0x4f835f,_0x230a9d){var _0x46de78=moment()[_0x1a8e('0x53')]()['toString']();var _0x3a93f4=path['join'](config['root'],_0x1a8e('0x54'),_0x1a8e('0x55'),'tmp');var _0x4859f1=path[_0x1a8e('0x56')](_0x3a93f4,_0x46de78);var _0x128abe=util[_0x1a8e('0x57')](_0x1a8e('0x58'),_0x4f835f[_0x1a8e('0x2b')]['id'],_0x46de78);var _0x16371d=path[_0x1a8e('0x56')](_0x3a93f4,_0x128abe);var _0x4ed3e4=[];_0x4ed3e4['push']({'model':db[_0x1a8e('0x59')],'as':_0x1a8e('0x59'),'attributes':['id',_0x1a8e('0x5a')],'raw':!![]});_0x4ed3e4[_0x1a8e('0x5b')]({'model':db[_0x1a8e('0x5c')],'as':_0x1a8e('0x5d'),'attributes':['id','firstName','lastName'],'raw':!![]});var _0x58b9d1=[{'model':db['SmsMessage'],'as':_0x1a8e('0x5e'),'attributes':['id',_0x1a8e('0x37'),_0x1a8e('0x5f'),_0x1a8e('0x60'),_0x1a8e('0x61'),'read'],'include':_0x4ed3e4}];_0x58b9d1['push']({'model':db['SmsAccount'],'as':_0x1a8e('0x62'),'attributes':['id','name']});_0x58b9d1[_0x1a8e('0x5b')]({'model':db[_0x1a8e('0x59')],'as':_0x1a8e('0x63'),'attributes':['id',_0x1a8e('0x5a')]});return db[_0x1a8e('0x2e')][_0x1a8e('0x35')]({'where':{'id':_0x4f835f[_0x1a8e('0x2b')]['id']},'include':_0x58b9d1})[_0x1a8e('0x1c')](handleEntityNotFound(_0x230a9d,null))[_0x1a8e('0x1c')](function(_0x4c9d41){if(_0x4c9d41){var _0x13fcc7=_0x4c9d41[_0x1a8e('0x64')]({'plain':!![]});fs[_0x1a8e('0x65')](_0x4859f1);var _0x56461d={'channel':_0x1a8e('0x66'),'account':_0x13fcc7[_0x1a8e('0x62')][_0x1a8e('0x20')],'agent':_0x13fcc7[_0x1a8e('0x63')]?_0x13fcc7[_0x1a8e('0x63')][_0x1a8e('0x5a')]:'N.A.','createdAt':moment(_0x13fcc7[_0x1a8e('0x5f')])[_0x1a8e('0x57')](_0x1a8e('0x49'))[_0x1a8e('0x67')](),'closedAt':_0x13fcc7[_0x1a8e('0x68')]?moment(_0x13fcc7[_0x1a8e('0x69')])['format'](_0x1a8e('0x49'))['toString']():'','disposition':_0x13fcc7['disposition'],'messages':_(_0x13fcc7[_0x1a8e('0x5e')])[_0x1a8e('0x45')]({'secret':![]})['map'](function(_0x494adc){return{'date':moment(_0x494adc[_0x1a8e('0x5f')])[_0x1a8e('0x57')](_0x1a8e('0x49'))[_0x1a8e('0x67')](),'sender':_0x494adc[_0x1a8e('0x60')]===_0x1a8e('0x6a')?_0x494adc[_0x1a8e('0x59')]?_0x494adc[_0x1a8e('0x59')][_0x1a8e('0x5a')]:_0x1a8e('0x6b'):_0x494adc[_0x1a8e('0x5d')][_0x1a8e('0x6c')]+(_0x494adc[_0x1a8e('0x5d')]['lastName']?'\x20'+_0x494adc[_0x1a8e('0x5d')][_0x1a8e('0x6d')]:''),'body':_0x494adc[_0x1a8e('0x37')],'direction':_0x494adc[_0x1a8e('0x60')]===_0x1a8e('0x6a')?'A':'C','secret':_0x494adc['secret'],'read':_0x494adc['read']};})[_0x1a8e('0x6e')]()};return ejs[_0x1a8e('0x6f')](path[_0x1a8e('0x56')](config[_0x1a8e('0x70')],'server',_0x1a8e('0x71'),_0x1a8e('0x72')),{'interaction':_0x56461d})[_0x1a8e('0x1c')](function(_0x4c55b1){var _0x137b84=path['join'](_0x4859f1,_0x1a8e('0x73')+_0x13fcc7['id']+'-'+_0x46de78+_0x1a8e('0x74'));var _0x3411b5={'path':_0x137b84,'channel':_0x1a8e('0x66'),'interactionId':_0x13fcc7['id']};return pdf[_0x1a8e('0x75')](_0x4c55b1,_0x3411b5);})['then'](function(){return new BPromise(function(_0x2bfbe0,_0x3fd877){zipdir(_0x4859f1,{'saveTo':_0x16371d},function(_0x24ffef,_0x507155){if(_0x24ffef)return _0x3fd877(_0x24ffef);return _0x2bfbe0(_0x507155);});})[_0x1a8e('0x1c')](function(){return new BPromise(function(_0x10c8ed,_0x39bf36){rimraf(_0x4859f1,function(_0x2a135a){if(_0x2a135a)_0x39bf36(_0x2a135a);return _0x10c8ed();});});})[_0x1a8e('0x1c')](function(){return _0x230a9d[_0x1a8e('0x52')](_0x16371d,_0x128abe,function(_0x5b5a22){if(_0x5b5a22){console[_0x1a8e('0x76')](_0x1a8e('0x77'),_0x5b5a22);}else{fs['unlinkSync'](_0x16371d);}});});});}else{return _0x230a9d[_0x1a8e('0x14')](0xc8);}})[_0x1a8e('0x2a')](handleError(_0x230a9d,null));};