c9d6e4dd95065e77497581daa041684807be87e2
[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 _0xa9c6=['filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','omit','spread','Tag','findAll','color','emit','smsInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','transcript-%d-%s.zip','push','User','fullname','Contact','firstName','lastName','Messages','createdAt','secret','Account','Owner','get','mkdirSync','Sms','N.A.','closedAt','format','disposition','direction','System','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','zip-dir','bluebird','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','end','status','undefined','limit','count','set','update','then','destroy','error','stack','name','send','index','map','SmsInteraction','rawAttributes','fieldName','type','key','query','user','catch','show','params','model','keys','filters','attributes','intersection','fields','includeAll','include','merge','options','create','body','find','describe','addMessage','SmsMessage','ids','getMessages','findOne','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','SmsInteractionId'];(function(_0x240585,_0x375632){var _0x4edae0=function(_0x3cb045){while(--_0x3cb045){_0x240585['push'](_0x240585['shift']());}};_0x4edae0(++_0x375632);}(_0xa9c6,0xb4));var _0x6a9c=function(_0x289876,_0x24e1ab){_0x289876=_0x289876-0x0;var _0x303d78=_0xa9c6[_0x289876];return _0x303d78;};'use strict';var rimraf=require(_0x6a9c('0x0'));var zipdir=require(_0x6a9c('0x1'));var moment=require('moment');var BPromise=require(_0x6a9c('0x2'));var util=require(_0x6a9c('0x3'));var path=require(_0x6a9c('0x4'));var ejs=require(_0x6a9c('0x5'));var fs=require('fs');var _=require(_0x6a9c('0x6'));var Redis=require(_0x6a9c('0x7'));var interaction=require(_0x6a9c('0x8'));var qs=require(_0x6a9c('0x9'));var pdf=require(_0x6a9c('0xa'));var logger=require(_0x6a9c('0xb'))(_0x6a9c('0xc'));var config=require('../../config/environment');var db=require(_0x6a9c('0xd'))['db'];config[_0x6a9c('0xe')]=_[_0x6a9c('0xf')](config[_0x6a9c('0xe')],{'host':_0x6a9c('0x10'),'port':0x18eb});var socket=require(_0x6a9c('0x11'))(new Redis(config[_0x6a9c('0xe')]));require(_0x6a9c('0x12'))[_0x6a9c('0x13')](socket);function respondWithStatusCode(_0x452687,_0x83de86){_0x83de86=_0x83de86||0xcc;return function(_0x20c8a0){if(_0x20c8a0){return _0x452687[_0x6a9c('0x14')](_0x83de86);}return _0x452687['status'](_0x83de86)[_0x6a9c('0x15')]();};}function respondWithResult(_0x5dbd5,_0x5596aa){_0x5596aa=_0x5596aa||0xc8;return function(_0x29ec63){if(_0x29ec63){return _0x5dbd5[_0x6a9c('0x16')](_0x5596aa)['json'](_0x29ec63);}};}function respondWithFilteredResult(_0x5dcba1,_0x58c67e){return function(_0x39f4f0){if(_0x39f4f0){var _0x2f25a2=typeof _0x58c67e['offset']===_0x6a9c('0x17')&&typeof _0x58c67e[_0x6a9c('0x18')]===_0x6a9c('0x17');var _0x178e12=_0x39f4f0['count'];var _0x57edcd=_0x2f25a2?0x0:_0x58c67e['offset'];var _0xc12094=_0x2f25a2?_0x39f4f0[_0x6a9c('0x19')]:_0x58c67e['offset']+_0x58c67e[_0x6a9c('0x18')];var _0x43cf95;if(_0xc12094>=_0x178e12){_0xc12094=_0x178e12;_0x43cf95=0xc8;}else{_0x43cf95=0xce;}_0x5dcba1['status'](_0x43cf95);return _0x5dcba1[_0x6a9c('0x1a')]('Content-Range',_0x57edcd+'-'+_0xc12094+'/'+_0x178e12)['json'](_0x39f4f0);}return null;};}function saveUpdates(_0x11ff2){return function(_0xb050e3){if(_0xb050e3){return _0xb050e3[_0x6a9c('0x1b')](_0x11ff2)[_0x6a9c('0x1c')](function(_0x5774de){return _0x5774de;});}return null;};}function removeEntity(_0x355ea7){return function(_0x4ea01e){if(_0x4ea01e){return _0x4ea01e[_0x6a9c('0x1d')]()[_0x6a9c('0x1c')](function(){_0x355ea7[_0x6a9c('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x286462){return function(_0x2084bd){if(!_0x2084bd){_0x286462[_0x6a9c('0x14')](0x194);}return _0x2084bd;};}function handleError(_0x5183ed,_0x7f3f52){_0x7f3f52=_0x7f3f52||0x1f4;return function(_0x36230f){logger[_0x6a9c('0x1e')](_0x36230f[_0x6a9c('0x1f')]);if(_0x36230f[_0x6a9c('0x20')]){delete _0x36230f[_0x6a9c('0x20')];}_0x5183ed[_0x6a9c('0x16')](_0x7f3f52)[_0x6a9c('0x21')](_0x36230f);};}exports[_0x6a9c('0x22')]=function(_0x2b1137,_0x484326){var _0x212897={};var _0x19ae72=_[_0x6a9c('0x23')](db[_0x6a9c('0x24')][_0x6a9c('0x25')],function(_0x4eb9ac){return{'name':_0x4eb9ac[_0x6a9c('0x26')],'type':_0x4eb9ac[_0x6a9c('0x27')][_0x6a9c('0x28')]};});_0x212897=qs['getOptions'](_0x19ae72,_0x2b1137);return interaction['findAll']('sms',_0x2b1137[_0x6a9c('0x29')],_0x2b1137[_0x6a9c('0x2a')],_0x212897,_0x19ae72)[_0x6a9c('0x1c')](respondWithFilteredResult(_0x484326,_0x212897))[_0x6a9c('0x2b')](handleError(_0x484326,null));};exports[_0x6a9c('0x2c')]=function(_0x5548e4,_0x3982f1){var _0x248e01={'raw':![],'where':{'id':_0x5548e4[_0x6a9c('0x2d')]['id']}},_0x2516cd={};_0x2516cd[_0x6a9c('0x2e')]=_[_0x6a9c('0x2f')](db[_0x6a9c('0x24')][_0x6a9c('0x25')]);_0x2516cd[_0x6a9c('0x29')]=_[_0x6a9c('0x2f')](_0x5548e4[_0x6a9c('0x29')]);_0x2516cd[_0x6a9c('0x30')]=_['intersection'](_0x2516cd[_0x6a9c('0x2e')],_0x2516cd['query']);_0x248e01[_0x6a9c('0x31')]=_[_0x6a9c('0x32')](_0x2516cd[_0x6a9c('0x2e')],qs[_0x6a9c('0x33')](_0x5548e4[_0x6a9c('0x29')][_0x6a9c('0x33')]));_0x248e01[_0x6a9c('0x31')]=_0x248e01['attributes']['length']?_0x248e01[_0x6a9c('0x31')]:_0x2516cd[_0x6a9c('0x2e')];if(_0x5548e4[_0x6a9c('0x29')][_0x6a9c('0x34')]){_0x248e01[_0x6a9c('0x35')]=[{'all':!![]}];}_0x248e01=_[_0x6a9c('0x36')]({},_0x248e01,_0x5548e4[_0x6a9c('0x37')]);return db['SmsInteraction']['find'](_0x248e01)[_0x6a9c('0x1c')](handleEntityNotFound(_0x3982f1,null))[_0x6a9c('0x1c')](respondWithResult(_0x3982f1,null))[_0x6a9c('0x2b')](handleError(_0x3982f1,null));};exports[_0x6a9c('0x38')]=function(_0x513ce1,_0x505cfe){return db[_0x6a9c('0x24')][_0x6a9c('0x38')](_0x513ce1[_0x6a9c('0x39')],{})[_0x6a9c('0x1c')](respondWithResult(_0x505cfe,0xc9))[_0x6a9c('0x2b')](handleError(_0x505cfe,null));};exports[_0x6a9c('0x1b')]=function(_0x456221,_0x5704b1){if(_0x456221[_0x6a9c('0x39')]['id']){delete _0x456221[_0x6a9c('0x39')]['id'];}return db[_0x6a9c('0x24')][_0x6a9c('0x3a')]({'where':{'id':_0x456221[_0x6a9c('0x2d')]['id']}})[_0x6a9c('0x1c')](handleEntityNotFound(_0x5704b1,null))[_0x6a9c('0x1c')](saveUpdates(_0x456221[_0x6a9c('0x39')],null))[_0x6a9c('0x1c')](respondWithResult(_0x5704b1,null))[_0x6a9c('0x2b')](handleError(_0x5704b1,null));};exports[_0x6a9c('0x1d')]=function(_0x309ae5,_0x2d1fcb){return db['SmsInteraction'][_0x6a9c('0x3a')]({'where':{'id':_0x309ae5[_0x6a9c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x2d1fcb,null))[_0x6a9c('0x1c')](removeEntity(_0x2d1fcb,null))[_0x6a9c('0x2b')](handleError(_0x2d1fcb,null));};exports[_0x6a9c('0x3b')]=function(_0x3d2c90,_0x13c0ef){return db[_0x6a9c('0x24')]['describe']()['then'](respondWithResult(_0x13c0ef,null))['catch'](handleError(_0x13c0ef,null));};exports[_0x6a9c('0x3c')]=function(_0xdd72c3,_0x47d008){return db[_0x6a9c('0x3d')][_0x6a9c('0x3a')]({'where':{'id':_0xdd72c3[_0x6a9c('0x2d')]['id']}})[_0x6a9c('0x1c')](handleEntityNotFound(_0x47d008,null))[_0x6a9c('0x1c')](function(_0x4f364f){if(_0x4f364f){return _0x4f364f[_0x6a9c('0x3c')](_0xdd72c3['body'][_0x6a9c('0x3e')],_['omit'](_0xdd72c3['body'],[_0x6a9c('0x3e'),'id'])||{});}})[_0x6a9c('0x1c')](respondWithResult(_0x47d008,null))[_0x6a9c('0x2b')](handleError(_0x47d008,null));};exports[_0x6a9c('0x3f')]=function(_0x5b529b,_0x2a39b9){var _0x1f29b4={'raw':![],'where':{}};var _0x5b6c13={};var _0x4ef42d={'count':0x0,'rows':[]};return db[_0x6a9c('0x24')][_0x6a9c('0x40')]({'where':{'id':_0x5b529b[_0x6a9c('0x2d')]['id']}})[_0x6a9c('0x1c')](handleEntityNotFound(_0x2a39b9,null))[_0x6a9c('0x1c')](function(_0x4ff330){if(_0x4ff330){_0x5b6c13[_0x6a9c('0x2e')]=_['keys'](db[_0x6a9c('0x3d')][_0x6a9c('0x25')]);_0x5b6c13[_0x6a9c('0x29')]=_[_0x6a9c('0x2f')](_0x5b529b[_0x6a9c('0x29')]);_0x5b6c13[_0x6a9c('0x30')]=_[_0x6a9c('0x32')](_0x5b6c13[_0x6a9c('0x2e')],_0x5b6c13['query']);_0x1f29b4[_0x6a9c('0x31')]=_[_0x6a9c('0x32')](_0x5b6c13[_0x6a9c('0x2e')],qs[_0x6a9c('0x33')](_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x33')]));_0x1f29b4[_0x6a9c('0x31')]=_0x1f29b4[_0x6a9c('0x31')][_0x6a9c('0x41')]?_0x1f29b4[_0x6a9c('0x31')]:_0x5b6c13['model'];if(!_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x42')](_0x6a9c('0x43'))){_0x1f29b4[_0x6a9c('0x18')]=qs[_0x6a9c('0x18')](_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x18')]);_0x1f29b4[_0x6a9c('0x44')]=qs[_0x6a9c('0x44')](_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x44')]);}_0x1f29b4[_0x6a9c('0x45')]=qs[_0x6a9c('0x46')](_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x46')]);_0x1f29b4[_0x6a9c('0x47')]=qs['filters'](_[_0x6a9c('0x48')](_0x5b529b['query'],_0x5b6c13['filters']));_0x1f29b4[_0x6a9c('0x47')][_0x6a9c('0x49')]=_0x4ff330['id'];if(_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x4a')]){_0x1f29b4['where']=_[_0x6a9c('0x36')](_0x1f29b4[_0x6a9c('0x47')],{'$or':_[_0x6a9c('0x23')](_0x1f29b4['attributes'],function(_0x5d5bad){var _0xc3a086={};_0xc3a086[_0x5d5bad]={'$like':'%'+_0x5b529b['query'][_0x6a9c('0x4a')]+'%'};return _0xc3a086;})});}if(_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x4b')]){var _0x3d132c=_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x4b')][_0x6a9c('0x4c')](',');var _0x107de1={};_0x107de1[_0x3d132c[0x0]]={'$gte':moment(_0x3d132c[0x1])['format'](_0x6a9c('0x4d'))};_0x1f29b4[_0x6a9c('0x47')]=_[_0x6a9c('0x36')](_0x1f29b4[_0x6a9c('0x47')],_0x107de1);}_0x1f29b4=_[_0x6a9c('0x36')]({},_0x1f29b4,_0x5b529b['options']);return db[_0x6a9c('0x3d')]['count']({'where':_0x1f29b4['where']})[_0x6a9c('0x1c')](function(_0x4a7b20){_0x4ef42d[_0x6a9c('0x19')]=_0x4a7b20;if(_0x5b529b[_0x6a9c('0x29')][_0x6a9c('0x34')]){_0x1f29b4[_0x6a9c('0x35')]=[{'all':!![]}];}return db[_0x6a9c('0x3d')]['findAll'](_0x1f29b4);})[_0x6a9c('0x1c')](function(_0x2d78b3){_0x4ef42d[_0x6a9c('0x4e')]=_0x2d78b3;return _0x4ef42d;});}})[_0x6a9c('0x1c')](respondWithFilteredResult(_0x2a39b9,_0x1f29b4))[_0x6a9c('0x2b')](handleError(_0x2a39b9,null));};exports[_0x6a9c('0x4f')]=function(_0x5fad31,_0x4f71e1){return db[_0x6a9c('0x24')][_0x6a9c('0x3a')]({'where':{'id':_0x5fad31['params']['id']}})[_0x6a9c('0x1c')](handleEntityNotFound(_0x4f71e1,null))[_0x6a9c('0x1c')](function(_0x13edb6){if(_0x13edb6){return _0x13edb6[_0x6a9c('0x50')](_0x5fad31['body'][_0x6a9c('0x3e')],_[_0x6a9c('0x51')](_0x5fad31['body'],[_0x6a9c('0x3e'),'id'])||{})[_0x6a9c('0x52')](function(){return db[_0x6a9c('0x53')][_0x6a9c('0x54')]({'attributes':['id',_0x6a9c('0x20'),_0x6a9c('0x55')],'where':{'id':_0x5fad31[_0x6a9c('0x39')][_0x6a9c('0x3e')]}});})[_0x6a9c('0x1c')](function(_0x278b31){socket[_0x6a9c('0x56')](_0x6a9c('0x57'),{'id':Number(_0x5fad31[_0x6a9c('0x2d')]['id']),'tags':_0x278b31||[]});return{'id':Number(_0x5fad31[_0x6a9c('0x2d')]['id']),'tags':_0x278b31||[]};});}})[_0x6a9c('0x1c')](respondWithResult(_0x4f71e1,null))[_0x6a9c('0x2b')](handleError(_0x4f71e1,null));};exports[_0x6a9c('0x58')]=function(_0x478a5c,_0x11dd68){return db[_0x6a9c('0x24')][_0x6a9c('0x3a')]({'where':{'id':_0x478a5c[_0x6a9c('0x2d')]['id']}})[_0x6a9c('0x1c')](handleEntityNotFound(_0x11dd68,null))['then'](function(_0x166b91){if(_0x166b91){return _0x166b91[_0x6a9c('0x58')](_0x478a5c[_0x6a9c('0x29')][_0x6a9c('0x3e')]);}})[_0x6a9c('0x1c')](respondWithStatusCode(_0x11dd68,null))[_0x6a9c('0x2b')](handleError(_0x11dd68,null));};exports[_0x6a9c('0x59')]=function(_0x453669,_0x1fc194){var _0x2f24af=moment()[_0x6a9c('0x5a')]()[_0x6a9c('0x5b')]();var _0x37afca=path[_0x6a9c('0x5c')](config[_0x6a9c('0x5d')],_0x6a9c('0x5e'),_0x6a9c('0x5f'),'tmp');var _0x109d16=path[_0x6a9c('0x5c')](_0x37afca,_0x2f24af);var _0x2aacb7=util['format'](_0x6a9c('0x60'),_0x453669[_0x6a9c('0x2d')]['id'],_0x2f24af);var _0x467cd2=path[_0x6a9c('0x5c')](_0x37afca,_0x2aacb7);var _0x3cc9d7=[];_0x3cc9d7[_0x6a9c('0x61')]({'model':db[_0x6a9c('0x62')],'as':_0x6a9c('0x62'),'attributes':['id',_0x6a9c('0x63')],'raw':!![]});_0x3cc9d7[_0x6a9c('0x61')]({'model':db['CmContact'],'as':_0x6a9c('0x64'),'attributes':['id',_0x6a9c('0x65'),_0x6a9c('0x66')],'raw':!![]});var _0x31a575=[{'model':db[_0x6a9c('0x3d')],'as':_0x6a9c('0x67'),'attributes':['id',_0x6a9c('0x39'),_0x6a9c('0x68'),'direction',_0x6a9c('0x69'),'read'],'include':_0x3cc9d7}];_0x31a575[_0x6a9c('0x61')]({'model':db['SmsAccount'],'as':_0x6a9c('0x6a'),'attributes':['id',_0x6a9c('0x20')]});_0x31a575['push']({'model':db[_0x6a9c('0x62')],'as':_0x6a9c('0x6b'),'attributes':['id','fullname']});return db['SmsInteraction'][_0x6a9c('0x3a')]({'where':{'id':_0x453669['params']['id']},'include':_0x31a575})[_0x6a9c('0x1c')](handleEntityNotFound(_0x1fc194,null))['then'](function(_0x201ea7){if(_0x201ea7){var _0x3dae62=_0x201ea7[_0x6a9c('0x6c')]({'plain':!![]});fs[_0x6a9c('0x6d')](_0x109d16);var _0x3d1f65={'channel':_0x6a9c('0x6e'),'account':_0x3dae62[_0x6a9c('0x6a')][_0x6a9c('0x20')],'agent':_0x3dae62[_0x6a9c('0x6b')]?_0x3dae62['Owner'][_0x6a9c('0x63')]:_0x6a9c('0x6f'),'createdAt':moment(_0x3dae62[_0x6a9c('0x68')])['format'](_0x6a9c('0x4d'))[_0x6a9c('0x5b')](),'closedAt':_0x3dae62['closed']?moment(_0x3dae62[_0x6a9c('0x70')])[_0x6a9c('0x71')](_0x6a9c('0x4d'))[_0x6a9c('0x5b')]():'','disposition':_0x3dae62[_0x6a9c('0x72')],'messages':_(_0x3dae62[_0x6a9c('0x67')])[_0x6a9c('0x4a')]({'secret':![]})[_0x6a9c('0x23')](function(_0x41c72b){return{'date':moment(_0x41c72b[_0x6a9c('0x68')])[_0x6a9c('0x71')](_0x6a9c('0x4d'))[_0x6a9c('0x5b')](),'sender':_0x41c72b[_0x6a9c('0x73')]==='out'?_0x41c72b[_0x6a9c('0x62')]?_0x41c72b['User']['fullname']:_0x6a9c('0x74'):_0x41c72b['Contact'][_0x6a9c('0x65')]+(_0x41c72b[_0x6a9c('0x64')]['lastName']?'\x20'+_0x41c72b[_0x6a9c('0x64')][_0x6a9c('0x66')]:''),'body':_0x41c72b[_0x6a9c('0x39')],'direction':_0x41c72b[_0x6a9c('0x73')]==='out'?'A':'C','secret':_0x41c72b[_0x6a9c('0x69')],'read':_0x41c72b[_0x6a9c('0x75')]};})[_0x6a9c('0x76')]()};return ejs[_0x6a9c('0x77')](path[_0x6a9c('0x5c')](config[_0x6a9c('0x5d')],'server',_0x6a9c('0x78'),_0x6a9c('0x79')),{'interaction':_0x3d1f65})['then'](function(_0x1c0c8e){var _0x1b9910=path[_0x6a9c('0x5c')](_0x109d16,_0x6a9c('0x7a')+_0x3dae62['id']+'-'+_0x2f24af+_0x6a9c('0x7b'));var _0x3f6864={'path':_0x1b9910,'channel':_0x6a9c('0x6e'),'interactionId':_0x3dae62['id']};return pdf[_0x6a9c('0x7c')](_0x1c0c8e,_0x3f6864);})[_0x6a9c('0x1c')](function(){return new BPromise(function(_0xdde913,_0x201655){zipdir(_0x109d16,{'saveTo':_0x467cd2},function(_0x5d49d6,_0x2bf69d){if(_0x5d49d6)return _0x201655(_0x5d49d6);return _0xdde913(_0x2bf69d);});})[_0x6a9c('0x1c')](function(){return new BPromise(function(_0x3bb8ae,_0x138175){rimraf(_0x109d16,function(_0x3c2521){if(_0x3c2521)_0x138175(_0x3c2521);return _0x3bb8ae();});});})['then'](function(){return _0x1fc194[_0x6a9c('0x59')](_0x467cd2,_0x2aacb7,function(_0x3f91b1){if(_0x3f91b1){console[_0x6a9c('0x7d')](_0x6a9c('0x7e'),_0x3f91b1);}else{fs['unlinkSync'](_0x467cd2);}});});});}else{return _0x1fc194[_0x6a9c('0x14')](0xc8);}})[_0x6a9c('0x2b')](handleError(_0x1fc194,null));};