be047640eaa210d7ec7421b2db420b89d582bf5e
[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 _0x8e6a=['System','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','bluebird','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','end','undefined','count','offset','limit','set','Content-Range','json','update','then','error','stack','name','send','index','SmsInteraction','rawAttributes','type','key','getOptions','sms','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','include','merge','create','body','find','destroy','describe','addMessage','ids','omit','getMessages','findOne','SmsMessage','nolimit','order','sort','pick','where','SmsInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','color','smsInteractionTags:save','removeTags','download','toString','join','root','server','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','lastName','Messages','direction','secret','SmsAccount','Account','Owner','get','Sms','N.A.','createdAt','closed','closedAt','out'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8e6a,0x85));var _0xa8e6=function(_0x11916d,_0x477d6b){_0x11916d=_0x11916d-0x0;var _0x4393ce=_0x8e6a[_0x11916d];return _0x4393ce;};'use strict';var rimraf=require(_0xa8e6('0x0'));var zipdir=require(_0xa8e6('0x1'));var moment=require('moment');var BPromise=require(_0xa8e6('0x2'));var util=require('util');var path=require(_0xa8e6('0x3'));var ejs=require(_0xa8e6('0x4'));var fs=require('fs');var _=require(_0xa8e6('0x5'));var Redis=require(_0xa8e6('0x6'));var interaction=require(_0xa8e6('0x7'));var qs=require(_0xa8e6('0x8'));var pdf=require(_0xa8e6('0x9'));var logger=require('../../config/logger')(_0xa8e6('0xa'));var config=require(_0xa8e6('0xb'));var db=require(_0xa8e6('0xc'))['db'];config['redis']=_[_0xa8e6('0xd')](config[_0xa8e6('0xe')],{'host':_0xa8e6('0xf'),'port':0x18eb});var socket=require(_0xa8e6('0x10'))(new Redis(config[_0xa8e6('0xe')]));require('./smsInteraction.socket')[_0xa8e6('0x11')](socket);function respondWithStatusCode(_0x313e57,_0x4bfc31){_0x4bfc31=_0x4bfc31||0xcc;return function(_0x5e9b5a){if(_0x5e9b5a){return _0x313e57[_0xa8e6('0x12')](_0x4bfc31);}return _0x313e57['status'](_0x4bfc31)[_0xa8e6('0x13')]();};}function respondWithResult(_0x546db3,_0x53f8c0){_0x53f8c0=_0x53f8c0||0xc8;return function(_0x488c62){if(_0x488c62){return _0x546db3['status'](_0x53f8c0)['json'](_0x488c62);}};}function respondWithFilteredResult(_0x3fbf4c,_0x22d018){return function(_0x287721){if(_0x287721){var _0x2bafdd=typeof _0x22d018['offset']===_0xa8e6('0x14')&&typeof _0x22d018['limit']==='undefined';var _0x51afc1=_0x287721[_0xa8e6('0x15')];var _0x29398e=_0x2bafdd?0x0:_0x22d018[_0xa8e6('0x16')];var _0x1891b0=_0x2bafdd?_0x287721['count']:_0x22d018[_0xa8e6('0x16')]+_0x22d018[_0xa8e6('0x17')];var _0x3d1cb1;if(_0x1891b0>=_0x51afc1){_0x1891b0=_0x51afc1;_0x3d1cb1=0xc8;}else{_0x3d1cb1=0xce;}_0x3fbf4c['status'](_0x3d1cb1);return _0x3fbf4c[_0xa8e6('0x18')](_0xa8e6('0x19'),_0x29398e+'-'+_0x1891b0+'/'+_0x51afc1)[_0xa8e6('0x1a')](_0x287721);}return null;};}function saveUpdates(_0x13be6e){return function(_0x22965e){if(_0x22965e){return _0x22965e[_0xa8e6('0x1b')](_0x13be6e)['then'](function(_0x3fbabe){return _0x3fbabe;});}return null;};}function removeEntity(_0x2ff401){return function(_0x35529d){if(_0x35529d){return _0x35529d['destroy']()[_0xa8e6('0x1c')](function(){_0x2ff401['status'](0xcc)[_0xa8e6('0x13')]();});}};}function handleEntityNotFound(_0x10846c){return function(_0x24a1bc){if(!_0x24a1bc){_0x10846c[_0xa8e6('0x12')](0x194);}return _0x24a1bc;};}function handleError(_0x7ae4fa,_0x30ab28){_0x30ab28=_0x30ab28||0x1f4;return function(_0x17331d){logger[_0xa8e6('0x1d')](_0x17331d[_0xa8e6('0x1e')]);if(_0x17331d[_0xa8e6('0x1f')]){delete _0x17331d[_0xa8e6('0x1f')];}_0x7ae4fa['status'](_0x30ab28)[_0xa8e6('0x20')](_0x17331d);};}exports[_0xa8e6('0x21')]=function(_0x1dc450,_0x48e7c9){var _0x2c4a74={};var _0x3fe160=_['map'](db[_0xa8e6('0x22')][_0xa8e6('0x23')],function(_0x5903c9){return{'name':_0x5903c9['fieldName'],'type':_0x5903c9[_0xa8e6('0x24')][_0xa8e6('0x25')]};});_0x2c4a74=qs[_0xa8e6('0x26')](_0x3fe160,_0x1dc450);return interaction['findAll'](_0xa8e6('0x27'),_0x1dc450[_0xa8e6('0x28')],_0x1dc450[_0xa8e6('0x29')],_0x2c4a74,_0x3fe160)[_0xa8e6('0x1c')](respondWithFilteredResult(_0x48e7c9,_0x2c4a74))[_0xa8e6('0x2a')](handleError(_0x48e7c9,null));};exports[_0xa8e6('0x2b')]=function(_0x2e92df,_0x4e2de1){var _0x5c299c={'raw':![],'where':{'id':_0x2e92df[_0xa8e6('0x2c')]['id']}},_0x350a21={};_0x350a21[_0xa8e6('0x2d')]=_[_0xa8e6('0x2e')](db[_0xa8e6('0x22')]['rawAttributes']);_0x350a21[_0xa8e6('0x28')]=_[_0xa8e6('0x2e')](_0x2e92df[_0xa8e6('0x28')]);_0x350a21[_0xa8e6('0x2f')]=_[_0xa8e6('0x30')](_0x350a21[_0xa8e6('0x2d')],_0x350a21['query']);_0x5c299c[_0xa8e6('0x31')]=_[_0xa8e6('0x30')](_0x350a21[_0xa8e6('0x2d')],qs[_0xa8e6('0x32')](_0x2e92df[_0xa8e6('0x28')][_0xa8e6('0x32')]));_0x5c299c[_0xa8e6('0x31')]=_0x5c299c['attributes'][_0xa8e6('0x33')]?_0x5c299c['attributes']:_0x350a21['model'];if(_0x2e92df[_0xa8e6('0x28')]['includeAll']){_0x5c299c[_0xa8e6('0x34')]=[{'all':!![]}];}_0x5c299c=_[_0xa8e6('0x35')]({},_0x5c299c,_0x2e92df['options']);return db['SmsInteraction']['find'](_0x5c299c)[_0xa8e6('0x1c')](handleEntityNotFound(_0x4e2de1,null))[_0xa8e6('0x1c')](respondWithResult(_0x4e2de1,null))[_0xa8e6('0x2a')](handleError(_0x4e2de1,null));};exports[_0xa8e6('0x36')]=function(_0x54d02f,_0x33d1f2){return db['SmsInteraction'][_0xa8e6('0x36')](_0x54d02f[_0xa8e6('0x37')],{})[_0xa8e6('0x1c')](respondWithResult(_0x33d1f2,0xc9))['catch'](handleError(_0x33d1f2,null));};exports[_0xa8e6('0x1b')]=function(_0x103c58,_0x2ef461){if(_0x103c58['body']['id']){delete _0x103c58[_0xa8e6('0x37')]['id'];}return db['SmsInteraction'][_0xa8e6('0x38')]({'where':{'id':_0x103c58[_0xa8e6('0x2c')]['id']}})['then'](handleEntityNotFound(_0x2ef461,null))[_0xa8e6('0x1c')](saveUpdates(_0x103c58[_0xa8e6('0x37')],null))[_0xa8e6('0x1c')](respondWithResult(_0x2ef461,null))[_0xa8e6('0x2a')](handleError(_0x2ef461,null));};exports[_0xa8e6('0x39')]=function(_0x18d427,_0x35b633){return db[_0xa8e6('0x22')][_0xa8e6('0x38')]({'where':{'id':_0x18d427[_0xa8e6('0x2c')]['id']}})['then'](handleEntityNotFound(_0x35b633,null))[_0xa8e6('0x1c')](removeEntity(_0x35b633,null))[_0xa8e6('0x2a')](handleError(_0x35b633,null));};exports[_0xa8e6('0x3a')]=function(_0x4d062b,_0x2ed295){return db[_0xa8e6('0x22')][_0xa8e6('0x3a')]()['then'](respondWithResult(_0x2ed295,null))[_0xa8e6('0x2a')](handleError(_0x2ed295,null));};exports[_0xa8e6('0x3b')]=function(_0x5c9995,_0x468567){return db['SmsMessage'][_0xa8e6('0x38')]({'where':{'id':_0x5c9995['params']['id']}})[_0xa8e6('0x1c')](handleEntityNotFound(_0x468567,null))['then'](function(_0x1777ed){if(_0x1777ed){return _0x1777ed[_0xa8e6('0x3b')](_0x5c9995['body'][_0xa8e6('0x3c')],_[_0xa8e6('0x3d')](_0x5c9995['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x468567,null))['catch'](handleError(_0x468567,null));};exports[_0xa8e6('0x3e')]=function(_0x23e367,_0x5a8e6c){var _0x3b9749={'raw':![],'where':{}};var _0x141340={};var _0x3f070b={'count':0x0,'rows':[]};return db[_0xa8e6('0x22')][_0xa8e6('0x3f')]({'where':{'id':_0x23e367['params']['id']}})[_0xa8e6('0x1c')](handleEntityNotFound(_0x5a8e6c,null))['then'](function(_0x31c703){if(_0x31c703){_0x141340[_0xa8e6('0x2d')]=_[_0xa8e6('0x2e')](db[_0xa8e6('0x40')][_0xa8e6('0x23')]);_0x141340[_0xa8e6('0x28')]=_[_0xa8e6('0x2e')](_0x23e367[_0xa8e6('0x28')]);_0x141340[_0xa8e6('0x2f')]=_[_0xa8e6('0x30')](_0x141340['model'],_0x141340[_0xa8e6('0x28')]);_0x3b9749[_0xa8e6('0x31')]=_['intersection'](_0x141340['model'],qs[_0xa8e6('0x32')](_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x32')]));_0x3b9749[_0xa8e6('0x31')]=_0x3b9749[_0xa8e6('0x31')][_0xa8e6('0x33')]?_0x3b9749[_0xa8e6('0x31')]:_0x141340[_0xa8e6('0x2d')];if(!_0x23e367[_0xa8e6('0x28')]['hasOwnProperty'](_0xa8e6('0x41'))){_0x3b9749[_0xa8e6('0x17')]=qs[_0xa8e6('0x17')](_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x17')]);_0x3b9749['offset']=qs[_0xa8e6('0x16')](_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x16')]);}_0x3b9749[_0xa8e6('0x42')]=qs['sort'](_0x23e367['query'][_0xa8e6('0x43')]);_0x3b9749['where']=qs['filters'](_[_0xa8e6('0x44')](_0x23e367[_0xa8e6('0x28')],_0x141340[_0xa8e6('0x2f')]));_0x3b9749[_0xa8e6('0x45')][_0xa8e6('0x46')]=_0x31c703['id'];if(_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x47')]){_0x3b9749[_0xa8e6('0x45')]=_['merge'](_0x3b9749[_0xa8e6('0x45')],{'$or':_[_0xa8e6('0x48')](_0x3b9749[_0xa8e6('0x31')],function(_0x550d45){var _0x26bf31={};_0x26bf31[_0x550d45]={'$like':'%'+_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x47')]+'%'};return _0x26bf31;})});}if(_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x49')]){var _0x1a4d39=_0x23e367[_0xa8e6('0x28')][_0xa8e6('0x49')][_0xa8e6('0x4a')](',');var _0x372ab8={};_0x372ab8[_0x1a4d39[0x0]]={'$gte':moment(_0x1a4d39[0x1])['format'](_0xa8e6('0x4b'))};_0x3b9749[_0xa8e6('0x45')]=_[_0xa8e6('0x35')](_0x3b9749[_0xa8e6('0x45')],_0x372ab8);}_0x3b9749=_[_0xa8e6('0x35')]({},_0x3b9749,_0x23e367['options']);return db[_0xa8e6('0x40')][_0xa8e6('0x15')]({'where':_0x3b9749[_0xa8e6('0x45')]})['then'](function(_0x4179d3){_0x3f070b['count']=_0x4179d3;if(_0x23e367[_0xa8e6('0x28')]['includeAll']){_0x3b9749['include']=[{'all':!![]}];}return db[_0xa8e6('0x40')][_0xa8e6('0x4c')](_0x3b9749);})[_0xa8e6('0x1c')](function(_0x1353ab){_0x3f070b[_0xa8e6('0x4d')]=_0x1353ab;return _0x3f070b;});}})[_0xa8e6('0x1c')](respondWithFilteredResult(_0x5a8e6c,_0x3b9749))[_0xa8e6('0x2a')](handleError(_0x5a8e6c,null));};exports[_0xa8e6('0x4e')]=function(_0x191b16,_0x942343){return db['SmsInteraction'][_0xa8e6('0x38')]({'where':{'id':_0x191b16[_0xa8e6('0x2c')]['id']}})[_0xa8e6('0x1c')](handleEntityNotFound(_0x942343,null))[_0xa8e6('0x1c')](function(_0x2161e9){if(_0x2161e9){return _0x2161e9[_0xa8e6('0x4f')](_0x191b16[_0xa8e6('0x37')][_0xa8e6('0x3c')],_['omit'](_0x191b16[_0xa8e6('0x37')],[_0xa8e6('0x3c'),'id'])||{})['spread'](function(){return db['Tag'][_0xa8e6('0x4c')]({'attributes':['id','name',_0xa8e6('0x50')],'where':{'id':_0x191b16[_0xa8e6('0x37')][_0xa8e6('0x3c')]}});})[_0xa8e6('0x1c')](function(_0x513448){socket['emit'](_0xa8e6('0x51'),{'id':Number(_0x191b16[_0xa8e6('0x2c')]['id']),'tags':_0x513448||[]});return{'id':Number(_0x191b16[_0xa8e6('0x2c')]['id']),'tags':_0x513448||[]};});}})[_0xa8e6('0x1c')](respondWithResult(_0x942343,null))[_0xa8e6('0x2a')](handleError(_0x942343,null));};exports[_0xa8e6('0x52')]=function(_0x591075,_0x3d8fe5){return db[_0xa8e6('0x22')][_0xa8e6('0x38')]({'where':{'id':_0x591075['params']['id']}})['then'](handleEntityNotFound(_0x3d8fe5,null))[_0xa8e6('0x1c')](function(_0x534dd1){if(_0x534dd1){return _0x534dd1[_0xa8e6('0x52')](_0x591075[_0xa8e6('0x28')][_0xa8e6('0x3c')]);}})[_0xa8e6('0x1c')](respondWithStatusCode(_0x3d8fe5,null))['catch'](handleError(_0x3d8fe5,null));};exports[_0xa8e6('0x53')]=function(_0x1259ac,_0xccbd53){var _0x66f36e=moment()['unix']()[_0xa8e6('0x54')]();var _0x45821d=path[_0xa8e6('0x55')](config[_0xa8e6('0x56')],_0xa8e6('0x57'),'files','tmp');var _0x3d6f01=path[_0xa8e6('0x55')](_0x45821d,_0x66f36e);var _0x160734=util[_0xa8e6('0x58')](_0xa8e6('0x59'),_0x1259ac['params']['id'],_0x66f36e);var _0x5bf199=path[_0xa8e6('0x55')](_0x45821d,_0x160734);var _0x5d3182=[];_0x5d3182[_0xa8e6('0x5a')]({'model':db[_0xa8e6('0x5b')],'as':_0xa8e6('0x5b'),'attributes':['id',_0xa8e6('0x5c')],'raw':!![]});_0x5d3182['push']({'model':db[_0xa8e6('0x5d')],'as':_0xa8e6('0x5e'),'attributes':['id','firstName',_0xa8e6('0x5f')],'raw':!![]});var _0x2bbfb1=[{'model':db[_0xa8e6('0x40')],'as':_0xa8e6('0x60'),'attributes':['id',_0xa8e6('0x37'),'createdAt',_0xa8e6('0x61'),_0xa8e6('0x62'),'read'],'include':_0x5d3182}];_0x2bbfb1[_0xa8e6('0x5a')]({'model':db[_0xa8e6('0x63')],'as':_0xa8e6('0x64'),'attributes':['id','name']});_0x2bbfb1[_0xa8e6('0x5a')]({'model':db[_0xa8e6('0x5b')],'as':_0xa8e6('0x65'),'attributes':['id',_0xa8e6('0x5c')]});return db['SmsInteraction'][_0xa8e6('0x38')]({'where':{'id':_0x1259ac[_0xa8e6('0x2c')]['id']},'include':_0x2bbfb1})['then'](handleEntityNotFound(_0xccbd53,null))[_0xa8e6('0x1c')](function(_0x4ceb23){if(_0x4ceb23){var _0x171131=_0x4ceb23[_0xa8e6('0x66')]({'plain':!![]});fs['mkdirSync'](_0x3d6f01);var _0xa7b03b={'channel':_0xa8e6('0x67'),'account':_0x171131[_0xa8e6('0x64')][_0xa8e6('0x1f')],'agent':_0x171131['Owner']?_0x171131[_0xa8e6('0x65')]['fullname']:_0xa8e6('0x68'),'createdAt':moment(_0x171131[_0xa8e6('0x69')])['format'](_0xa8e6('0x4b'))['toString'](),'closedAt':_0x171131[_0xa8e6('0x6a')]?moment(_0x171131[_0xa8e6('0x6b')])[_0xa8e6('0x58')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x171131['disposition'],'messages':_(_0x171131['Messages'])[_0xa8e6('0x47')]({'secret':![]})[_0xa8e6('0x48')](function(_0x58d653){return{'date':moment(_0x58d653['createdAt'])[_0xa8e6('0x58')](_0xa8e6('0x4b'))[_0xa8e6('0x54')](),'sender':_0x58d653['direction']===_0xa8e6('0x6c')?_0x58d653[_0xa8e6('0x5b')]?_0x58d653[_0xa8e6('0x5b')][_0xa8e6('0x5c')]:_0xa8e6('0x6d'):_0x58d653[_0xa8e6('0x5e')]['firstName']+(_0x58d653[_0xa8e6('0x5e')]['lastName']?'\x20'+_0x58d653[_0xa8e6('0x5e')]['lastName']:''),'body':_0x58d653[_0xa8e6('0x37')],'direction':_0x58d653[_0xa8e6('0x61')]==='out'?'A':'C','secret':_0x58d653['secret'],'read':_0x58d653[_0xa8e6('0x6e')]};})[_0xa8e6('0x6f')]()};return ejs[_0xa8e6('0x70')](path['join'](config[_0xa8e6('0x56')],_0xa8e6('0x57'),_0xa8e6('0x71'),_0xa8e6('0x72')),{'interaction':_0xa7b03b})[_0xa8e6('0x1c')](function(_0x2291c1){var _0x971dfc=path[_0xa8e6('0x55')](_0x3d6f01,_0xa8e6('0x73')+_0x171131['id']+'-'+_0x66f36e+_0xa8e6('0x74'));var _0x3dac31={'path':_0x971dfc,'channel':_0xa8e6('0x67'),'interactionId':_0x171131['id']};return pdf[_0xa8e6('0x75')](_0x2291c1,_0x3dac31);})[_0xa8e6('0x1c')](function(){return new BPromise(function(_0x192282,_0x5f36d6){zipdir(_0x3d6f01,{'saveTo':_0x5bf199},function(_0x43616c,_0x2ecc28){if(_0x43616c)return _0x5f36d6(_0x43616c);return _0x192282(_0x2ecc28);});})[_0xa8e6('0x1c')](function(){return new BPromise(function(_0x63fcc2,_0xf8b345){rimraf(_0x3d6f01,function(_0x4d1629){if(_0x4d1629)_0xf8b345(_0x4d1629);return _0x63fcc2();});});})[_0xa8e6('0x1c')](function(){return _0xccbd53[_0xa8e6('0x53')](_0x5bf199,_0x160734,function(_0x3796fc){if(_0x3796fc){console[_0xa8e6('0x76')](_0xa8e6('0x77'),_0x3796fc);}else{fs[_0xa8e6('0x78')](_0x5bf199);}});});});}else{return _0xccbd53[_0xa8e6('0x12')](0xc8);}})[_0xa8e6('0x2a')](handleError(_0xccbd53,null));};