62ec1e871d162c797ae2464d953a0d7df0e31e59
[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 _0x54b7=['join','root','files','push','User','Contact','Messages','createdAt','direction','secret','read','SmsAccount','Account','fullname','get','mkdirSync','Sms','Owner','N.A.','closedAt','disposition','System','lastName','out','value','renderFile','server','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','moment','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','offset','undefined','limit','count','Content-Range','json','update','then','destroy','error','stack','name','send','index','SmsInteraction','type','key','findAll','sms','query','user','catch','show','params','keys','model','attributes','intersection','fields','length','includeAll','include','options','find','create','body','describe','SmsMessage','addMessage','ids','omit','getMessages','findOne','rawAttributes','filters','nolimit','order','sort','where','pick','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','color','emit','removeTags','download','unix','toString'];(function(_0x45346d,_0xffd56b){var _0x5ce7ca=function(_0x27ce87){while(--_0x27ce87){_0x45346d['push'](_0x45346d['shift']());}};_0x5ce7ca(++_0xffd56b);}(_0x54b7,0x187));var _0x754b=function(_0x26f821,_0x30175b){_0x26f821=_0x26f821-0x0;var _0x4af27f=_0x54b7[_0x26f821];return _0x4af27f;};'use strict';var rimraf=require('rimraf');var zipdir=require('zip-dir');var moment=require(_0x754b('0x0'));var BPromise=require(_0x754b('0x1'));var util=require(_0x754b('0x2'));var path=require(_0x754b('0x3'));var ejs=require(_0x754b('0x4'));var fs=require('fs');var _=require(_0x754b('0x5'));var Redis=require(_0x754b('0x6'));var interaction=require(_0x754b('0x7'));var qs=require('../../components/parsers/qs');var pdf=require(_0x754b('0x8'));var logger=require('../../config/logger')(_0x754b('0x9'));var config=require(_0x754b('0xa'));var db=require(_0x754b('0xb'))['db'];config[_0x754b('0xc')]=_[_0x754b('0xd')](config[_0x754b('0xc')],{'host':_0x754b('0xe'),'port':0x18eb});var socket=require(_0x754b('0xf'))(new Redis(config[_0x754b('0xc')]));require('./smsInteraction.socket')[_0x754b('0x10')](socket);function respondWithStatusCode(_0x4b117e,_0x23aa4e){_0x23aa4e=_0x23aa4e||0xcc;return function(_0x47cb46){if(_0x47cb46){return _0x4b117e[_0x754b('0x11')](_0x23aa4e);}return _0x4b117e[_0x754b('0x12')](_0x23aa4e)['end']();};}function respondWithResult(_0x2b3c10,_0x48a2c3){_0x48a2c3=_0x48a2c3||0xc8;return function(_0x28a3cd){if(_0x28a3cd){return _0x2b3c10[_0x754b('0x12')](_0x48a2c3)['json'](_0x28a3cd);}};}function respondWithFilteredResult(_0x34cda6,_0x3ce4a8){return function(_0x45ff82){if(_0x45ff82){var _0x466d36=typeof _0x3ce4a8[_0x754b('0x13')]===_0x754b('0x14')&&typeof _0x3ce4a8[_0x754b('0x15')]==='undefined';var _0xa2c5c1=_0x45ff82[_0x754b('0x16')];var _0x16a350=_0x466d36?0x0:_0x3ce4a8[_0x754b('0x13')];var _0x43569d=_0x466d36?_0x45ff82[_0x754b('0x16')]:_0x3ce4a8['offset']+_0x3ce4a8['limit'];var _0x3a6688;if(_0x43569d>=_0xa2c5c1){_0x43569d=_0xa2c5c1;_0x3a6688=0xc8;}else{_0x3a6688=0xce;}_0x34cda6['status'](_0x3a6688);return _0x34cda6['set'](_0x754b('0x17'),_0x16a350+'-'+_0x43569d+'/'+_0xa2c5c1)[_0x754b('0x18')](_0x45ff82);}return null;};}function saveUpdates(_0x20dd16){return function(_0x242683){if(_0x242683){return _0x242683[_0x754b('0x19')](_0x20dd16)[_0x754b('0x1a')](function(_0x1a923d){return _0x1a923d;});}return null;};}function removeEntity(_0x3d4652){return function(_0x489486){if(_0x489486){return _0x489486[_0x754b('0x1b')]()[_0x754b('0x1a')](function(){_0x3d4652[_0x754b('0x12')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4245fb){return function(_0x1eb097){if(!_0x1eb097){_0x4245fb[_0x754b('0x11')](0x194);}return _0x1eb097;};}function handleError(_0x30c659,_0x326a4f){_0x326a4f=_0x326a4f||0x1f4;return function(_0x292a64){logger[_0x754b('0x1c')](_0x292a64[_0x754b('0x1d')]);if(_0x292a64[_0x754b('0x1e')]){delete _0x292a64[_0x754b('0x1e')];}_0x30c659[_0x754b('0x12')](_0x326a4f)[_0x754b('0x1f')](_0x292a64);};}exports[_0x754b('0x20')]=function(_0x68676d,_0x543285){var _0xb39f22={};var _0x7df335=_['map'](db[_0x754b('0x21')]['rawAttributes'],function(_0x246916){return{'name':_0x246916['fieldName'],'type':_0x246916[_0x754b('0x22')][_0x754b('0x23')]};});_0xb39f22=qs['getOptions'](_0x7df335,_0x68676d);return interaction[_0x754b('0x24')](_0x754b('0x25'),_0x68676d[_0x754b('0x26')],_0x68676d[_0x754b('0x27')],_0xb39f22,_0x7df335)['then'](respondWithFilteredResult(_0x543285,_0xb39f22))[_0x754b('0x28')](handleError(_0x543285,null));};exports[_0x754b('0x29')]=function(_0x1a7fd4,_0x2b908b){var _0x5804c8={'raw':![],'where':{'id':_0x1a7fd4[_0x754b('0x2a')]['id']}},_0x3de909={};_0x3de909['model']=_[_0x754b('0x2b')](db['SmsInteraction']['rawAttributes']);_0x3de909[_0x754b('0x26')]=_[_0x754b('0x2b')](_0x1a7fd4['query']);_0x3de909['filters']=_['intersection'](_0x3de909[_0x754b('0x2c')],_0x3de909[_0x754b('0x26')]);_0x5804c8[_0x754b('0x2d')]=_[_0x754b('0x2e')](_0x3de909['model'],qs['fields'](_0x1a7fd4['query'][_0x754b('0x2f')]));_0x5804c8[_0x754b('0x2d')]=_0x5804c8[_0x754b('0x2d')][_0x754b('0x30')]?_0x5804c8[_0x754b('0x2d')]:_0x3de909['model'];if(_0x1a7fd4[_0x754b('0x26')][_0x754b('0x31')]){_0x5804c8[_0x754b('0x32')]=[{'all':!![]}];}_0x5804c8=_['merge']({},_0x5804c8,_0x1a7fd4[_0x754b('0x33')]);return db[_0x754b('0x21')][_0x754b('0x34')](_0x5804c8)[_0x754b('0x1a')](handleEntityNotFound(_0x2b908b,null))[_0x754b('0x1a')](respondWithResult(_0x2b908b,null))[_0x754b('0x28')](handleError(_0x2b908b,null));};exports[_0x754b('0x35')]=function(_0x3a905e,_0xf9b848){return db[_0x754b('0x21')][_0x754b('0x35')](_0x3a905e[_0x754b('0x36')],{})['then'](respondWithResult(_0xf9b848,0xc9))[_0x754b('0x28')](handleError(_0xf9b848,null));};exports[_0x754b('0x19')]=function(_0x1a320e,_0x137463){if(_0x1a320e['body']['id']){delete _0x1a320e['body']['id'];}return db[_0x754b('0x21')][_0x754b('0x34')]({'where':{'id':_0x1a320e[_0x754b('0x2a')]['id']}})[_0x754b('0x1a')](handleEntityNotFound(_0x137463,null))[_0x754b('0x1a')](saveUpdates(_0x1a320e[_0x754b('0x36')],null))[_0x754b('0x1a')](respondWithResult(_0x137463,null))[_0x754b('0x28')](handleError(_0x137463,null));};exports['destroy']=function(_0xae4e57,_0x46a9b8){return db['SmsInteraction']['find']({'where':{'id':_0xae4e57['params']['id']}})[_0x754b('0x1a')](handleEntityNotFound(_0x46a9b8,null))[_0x754b('0x1a')](removeEntity(_0x46a9b8,null))[_0x754b('0x28')](handleError(_0x46a9b8,null));};exports['describe']=function(_0x497738,_0x1a55be){return db[_0x754b('0x21')][_0x754b('0x37')]()[_0x754b('0x1a')](respondWithResult(_0x1a55be,null))[_0x754b('0x28')](handleError(_0x1a55be,null));};exports['addMessage']=function(_0x57db85,_0x24ebce){return db[_0x754b('0x38')][_0x754b('0x34')]({'where':{'id':_0x57db85[_0x754b('0x2a')]['id']}})[_0x754b('0x1a')](handleEntityNotFound(_0x24ebce,null))[_0x754b('0x1a')](function(_0x21b230){if(_0x21b230){return _0x21b230[_0x754b('0x39')](_0x57db85[_0x754b('0x36')][_0x754b('0x3a')],_[_0x754b('0x3b')](_0x57db85[_0x754b('0x36')],[_0x754b('0x3a'),'id'])||{});}})['then'](respondWithResult(_0x24ebce,null))[_0x754b('0x28')](handleError(_0x24ebce,null));};exports[_0x754b('0x3c')]=function(_0x5d4c87,_0x95f9da){var _0x579fb4={'raw':![],'where':{}};var _0x54b71e={};var _0x26e1b4={'count':0x0,'rows':[]};return db[_0x754b('0x21')][_0x754b('0x3d')]({'where':{'id':_0x5d4c87[_0x754b('0x2a')]['id']}})[_0x754b('0x1a')](handleEntityNotFound(_0x95f9da,null))[_0x754b('0x1a')](function(_0x35fa51){if(_0x35fa51){_0x54b71e[_0x754b('0x2c')]=_[_0x754b('0x2b')](db[_0x754b('0x38')][_0x754b('0x3e')]);_0x54b71e[_0x754b('0x26')]=_[_0x754b('0x2b')](_0x5d4c87[_0x754b('0x26')]);_0x54b71e[_0x754b('0x3f')]=_[_0x754b('0x2e')](_0x54b71e[_0x754b('0x2c')],_0x54b71e['query']);_0x579fb4[_0x754b('0x2d')]=_[_0x754b('0x2e')](_0x54b71e['model'],qs[_0x754b('0x2f')](_0x5d4c87[_0x754b('0x26')][_0x754b('0x2f')]));_0x579fb4[_0x754b('0x2d')]=_0x579fb4[_0x754b('0x2d')]['length']?_0x579fb4[_0x754b('0x2d')]:_0x54b71e[_0x754b('0x2c')];if(!_0x5d4c87['query']['hasOwnProperty'](_0x754b('0x40'))){_0x579fb4['limit']=qs['limit'](_0x5d4c87[_0x754b('0x26')]['limit']);_0x579fb4[_0x754b('0x13')]=qs[_0x754b('0x13')](_0x5d4c87['query'][_0x754b('0x13')]);}_0x579fb4[_0x754b('0x41')]=qs['sort'](_0x5d4c87[_0x754b('0x26')][_0x754b('0x42')]);_0x579fb4[_0x754b('0x43')]=qs[_0x754b('0x3f')](_[_0x754b('0x44')](_0x5d4c87[_0x754b('0x26')],_0x54b71e[_0x754b('0x3f')]));_0x579fb4[_0x754b('0x43')]['SmsInteractionId']=_0x35fa51['id'];if(_0x5d4c87[_0x754b('0x26')][_0x754b('0x45')]){_0x579fb4[_0x754b('0x43')]=_[_0x754b('0x46')](_0x579fb4[_0x754b('0x43')],{'$or':_[_0x754b('0x47')](_0x579fb4[_0x754b('0x2d')],function(_0x4cbfd0){var _0x448203={};_0x448203[_0x4cbfd0]={'$like':'%'+_0x5d4c87[_0x754b('0x26')][_0x754b('0x45')]+'%'};return _0x448203;})});}if(_0x5d4c87[_0x754b('0x26')][_0x754b('0x48')]){var _0x33de60=_0x5d4c87[_0x754b('0x26')]['$gte'][_0x754b('0x49')](',');var _0x21e5e4={};_0x21e5e4[_0x33de60[0x0]]={'$gte':moment(_0x33de60[0x1])[_0x754b('0x4a')](_0x754b('0x4b'))};_0x579fb4['where']=_[_0x754b('0x46')](_0x579fb4[_0x754b('0x43')],_0x21e5e4);}_0x579fb4=_[_0x754b('0x46')]({},_0x579fb4,_0x5d4c87[_0x754b('0x33')]);return db[_0x754b('0x38')][_0x754b('0x16')]({'where':_0x579fb4[_0x754b('0x43')]})[_0x754b('0x1a')](function(_0x7adb54){_0x26e1b4[_0x754b('0x16')]=_0x7adb54;if(_0x5d4c87[_0x754b('0x26')]['includeAll']){_0x579fb4[_0x754b('0x32')]=[{'all':!![]}];}return db[_0x754b('0x38')]['findAll'](_0x579fb4);})['then'](function(_0x1acbff){_0x26e1b4[_0x754b('0x4c')]=_0x1acbff;return _0x26e1b4;});}})[_0x754b('0x1a')](respondWithFilteredResult(_0x95f9da,_0x579fb4))['catch'](handleError(_0x95f9da,null));};exports[_0x754b('0x4d')]=function(_0x37bb88,_0x109779){return db[_0x754b('0x21')][_0x754b('0x34')]({'where':{'id':_0x37bb88['params']['id']}})['then'](handleEntityNotFound(_0x109779,null))[_0x754b('0x1a')](function(_0x37aafb){if(_0x37aafb){return _0x37aafb[_0x754b('0x4e')](_0x37bb88[_0x754b('0x36')][_0x754b('0x3a')],_[_0x754b('0x3b')](_0x37bb88[_0x754b('0x36')],[_0x754b('0x3a'),'id'])||{})['spread'](function(){return db['Tag'][_0x754b('0x24')]({'attributes':['id','name',_0x754b('0x4f')],'where':{'id':_0x37bb88[_0x754b('0x36')][_0x754b('0x3a')]}});})[_0x754b('0x1a')](function(_0x454081){socket[_0x754b('0x50')]('smsInteractionTags:save',{'id':Number(_0x37bb88[_0x754b('0x2a')]['id']),'tags':_0x454081||[]});return{'id':Number(_0x37bb88[_0x754b('0x2a')]['id']),'tags':_0x454081||[]};});}})[_0x754b('0x1a')](respondWithResult(_0x109779,null))[_0x754b('0x28')](handleError(_0x109779,null));};exports[_0x754b('0x51')]=function(_0x29df18,_0x2e4404){return db[_0x754b('0x21')][_0x754b('0x34')]({'where':{'id':_0x29df18[_0x754b('0x2a')]['id']}})[_0x754b('0x1a')](handleEntityNotFound(_0x2e4404,null))['then'](function(_0x3210b4){if(_0x3210b4){return _0x3210b4[_0x754b('0x51')](_0x29df18['query'][_0x754b('0x3a')]);}})[_0x754b('0x1a')](respondWithStatusCode(_0x2e4404,null))['catch'](handleError(_0x2e4404,null));};exports[_0x754b('0x52')]=function(_0x16d9a3,_0x1e6937){var _0x5c18d2=moment()[_0x754b('0x53')]()[_0x754b('0x54')]();var _0x48b0f5=path[_0x754b('0x55')](config[_0x754b('0x56')],'server',_0x754b('0x57'),'tmp');var _0x5ec3c7=path[_0x754b('0x55')](_0x48b0f5,_0x5c18d2);var _0x7a4b18=util['format']('transcript-%d-%s.zip',_0x16d9a3['params']['id'],_0x5c18d2);var _0x233ec5=path[_0x754b('0x55')](_0x48b0f5,_0x7a4b18);var _0x5abe9a=[];_0x5abe9a[_0x754b('0x58')]({'model':db[_0x754b('0x59')],'as':_0x754b('0x59'),'attributes':['id','fullname'],'raw':!![]});_0x5abe9a[_0x754b('0x58')]({'model':db['CmContact'],'as':_0x754b('0x5a'),'attributes':['id','firstName','lastName'],'raw':!![]});var _0x1e2faf=[{'model':db[_0x754b('0x38')],'as':_0x754b('0x5b'),'attributes':['id','body',_0x754b('0x5c'),_0x754b('0x5d'),_0x754b('0x5e'),_0x754b('0x5f')],'include':_0x5abe9a}];_0x1e2faf[_0x754b('0x58')]({'model':db[_0x754b('0x60')],'as':_0x754b('0x61'),'attributes':['id','name']});_0x1e2faf['push']({'model':db['User'],'as':'Owner','attributes':['id',_0x754b('0x62')]});return db[_0x754b('0x21')][_0x754b('0x34')]({'where':{'id':_0x16d9a3[_0x754b('0x2a')]['id']},'include':_0x1e2faf})[_0x754b('0x1a')](handleEntityNotFound(_0x1e6937,null))[_0x754b('0x1a')](function(_0x1fc221){if(_0x1fc221){var _0x2254c0=_0x1fc221[_0x754b('0x63')]({'plain':!![]});fs[_0x754b('0x64')](_0x5ec3c7);var _0x5471f7={'channel':_0x754b('0x65'),'account':_0x2254c0[_0x754b('0x61')][_0x754b('0x1e')],'agent':_0x2254c0[_0x754b('0x66')]?_0x2254c0['Owner'][_0x754b('0x62')]:_0x754b('0x67'),'createdAt':moment(_0x2254c0['createdAt'])[_0x754b('0x4a')](_0x754b('0x4b'))[_0x754b('0x54')](),'closedAt':_0x2254c0['closed']?moment(_0x2254c0[_0x754b('0x68')])['format'](_0x754b('0x4b'))[_0x754b('0x54')]():'','disposition':_0x2254c0[_0x754b('0x69')],'messages':_(_0x2254c0[_0x754b('0x5b')])[_0x754b('0x45')]({'secret':![]})[_0x754b('0x47')](function(_0x25df6e){return{'date':moment(_0x25df6e[_0x754b('0x5c')])[_0x754b('0x4a')](_0x754b('0x4b'))[_0x754b('0x54')](),'sender':_0x25df6e[_0x754b('0x5d')]==='out'?_0x25df6e['User']?_0x25df6e['User']['fullname']:_0x754b('0x6a'):_0x25df6e[_0x754b('0x5a')]['firstName']+(_0x25df6e[_0x754b('0x5a')][_0x754b('0x6b')]?'\x20'+_0x25df6e[_0x754b('0x5a')][_0x754b('0x6b')]:''),'body':_0x25df6e[_0x754b('0x36')],'direction':_0x25df6e['direction']===_0x754b('0x6c')?'A':'C','secret':_0x25df6e[_0x754b('0x5e')],'read':_0x25df6e['read']};})[_0x754b('0x6d')]()};return ejs[_0x754b('0x6e')](path[_0x754b('0x55')](config[_0x754b('0x56')],_0x754b('0x6f'),'views',_0x754b('0x70')),{'interaction':_0x5471f7})[_0x754b('0x1a')](function(_0x443494){var _0x5131e1=path[_0x754b('0x55')](_0x5ec3c7,_0x754b('0x71')+_0x2254c0['id']+'-'+_0x5c18d2+_0x754b('0x72'));var _0x6531cf={'path':_0x5131e1,'channel':_0x754b('0x65'),'interactionId':_0x2254c0['id']};return pdf[_0x754b('0x73')](_0x443494,_0x6531cf);})['then'](function(){return new BPromise(function(_0x463b14,_0xc040f8){zipdir(_0x5ec3c7,{'saveTo':_0x233ec5},function(_0x13ae2a,_0x2d7098){if(_0x13ae2a)return _0xc040f8(_0x13ae2a);return _0x463b14(_0x2d7098);});})[_0x754b('0x1a')](function(){return new BPromise(function(_0x5b3274,_0x54b127){rimraf(_0x5ec3c7,function(_0x282b13){if(_0x282b13)_0x54b127(_0x282b13);return _0x5b3274();});});})[_0x754b('0x1a')](function(){return _0x1e6937[_0x754b('0x52')](_0x233ec5,_0x7a4b18,function(_0xea2305){if(_0xea2305){console[_0x754b('0x74')](_0x754b('0x75'),_0xea2305);}else{fs[_0x754b('0x76')](_0x233ec5);}});});});}else{return _0x1e6937[_0x754b('0x11')](0xc8);}})['catch'](handleError(_0x1e6937,null));};