0af441748cd1dcccb48cd2d82109c35856e01d10
[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 _0x31db=['SmsAccount','Account','Owner','get','mkdirSync','N.A.','createdAt','closed','closedAt','direction','out','System','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','log','err','unlinkSync','zip-dir','moment','bluebird','path','ejs','lodash','ioredis','../../components/interaction/service','../../config/logger','api','../../mysqldb','redis','defaults','localhost','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','update','then','end','name','send','index','map','SmsInteraction','fieldName','type','getOptions','findAll','sms','query','user','catch','params','model','keys','rawAttributes','filters','intersection','fields','attributes','length','includeAll','merge','find','create','body','destroy','describe','addMessage','ids','omit','findOne','SmsMessage','hasOwnProperty','nolimit','order','sort','where','SmsInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','options','include','addTags','spread','Tag','smsInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','format','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','firstName','lastName','Messages','secret','read'];(function(_0x5b2461,_0x4797cf){var _0x4319d3=function(_0x516cd4){while(--_0x516cd4){_0x5b2461['push'](_0x5b2461['shift']());}};_0x4319d3(++_0x4797cf);}(_0x31db,0x1ee));var _0xb31d=function(_0x513545,_0x158f2e){_0x513545=_0x513545-0x0;var _0x18b7c5=_0x31db[_0x513545];return _0x18b7c5;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xb31d('0x0'));var moment=require(_0xb31d('0x1'));var BPromise=require(_0xb31d('0x2'));var util=require('util');var path=require(_0xb31d('0x3'));var ejs=require(_0xb31d('0x4'));var fs=require('fs');var _=require(_0xb31d('0x5'));var Redis=require(_0xb31d('0x6'));var interaction=require(_0xb31d('0x7'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require(_0xb31d('0x8'))(_0xb31d('0x9'));var config=require('../../config/environment');var db=require(_0xb31d('0xa'))['db'];config[_0xb31d('0xb')]=_[_0xb31d('0xc')](config['redis'],{'host':_0xb31d('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb31d('0xb')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x15e416,_0x1ccf94){_0x1ccf94=_0x1ccf94||0xcc;return function(_0x94ac58){if(_0x94ac58){return _0x15e416[_0xb31d('0xe')](_0x1ccf94);}return _0x15e416[_0xb31d('0xf')](_0x1ccf94)['end']();};}function respondWithResult(_0x1b41c8,_0x587484){_0x587484=_0x587484||0xc8;return function(_0x2fdba1){if(_0x2fdba1){return _0x1b41c8[_0xb31d('0xf')](_0x587484)['json'](_0x2fdba1);}};}function respondWithFilteredResult(_0x1145c9,_0x4e3821){return function(_0x2812f3){if(_0x2812f3){var _0x3acf4a=typeof _0x4e3821[_0xb31d('0x10')]===_0xb31d('0x11')&&typeof _0x4e3821[_0xb31d('0x12')]==='undefined';var _0x104229=_0x2812f3[_0xb31d('0x13')];var _0x1554b3=_0x3acf4a?0x0:_0x4e3821[_0xb31d('0x10')];var _0x1d56c0=_0x3acf4a?_0x2812f3[_0xb31d('0x13')]:_0x4e3821[_0xb31d('0x10')]+_0x4e3821[_0xb31d('0x12')];var _0x465b71;if(_0x1d56c0>=_0x104229){_0x1d56c0=_0x104229;_0x465b71=0xc8;}else{_0x465b71=0xce;}_0x1145c9[_0xb31d('0xf')](_0x465b71);return _0x1145c9[_0xb31d('0x14')](_0xb31d('0x15'),_0x1554b3+'-'+_0x1d56c0+'/'+_0x104229)[_0xb31d('0x16')](_0x2812f3);}return null;};}function saveUpdates(_0x891a91){return function(_0x4d911a){if(_0x4d911a){return _0x4d911a[_0xb31d('0x17')](_0x891a91)['then'](function(_0x5b941a){return _0x5b941a;});}return null;};}function removeEntity(_0x122474){return function(_0x487072){if(_0x487072){return _0x487072['destroy']()[_0xb31d('0x18')](function(){_0x122474[_0xb31d('0xf')](0xcc)[_0xb31d('0x19')]();});}};}function handleEntityNotFound(_0x14ba34){return function(_0x25538e){if(!_0x25538e){_0x14ba34[_0xb31d('0xe')](0x194);}return _0x25538e;};}function handleError(_0x3d8726,_0x383d04){_0x383d04=_0x383d04||0x1f4;return function(_0x1f3101){logger['error'](_0x1f3101['stack']);if(_0x1f3101['name']){delete _0x1f3101[_0xb31d('0x1a')];}_0x3d8726['status'](_0x383d04)[_0xb31d('0x1b')](_0x1f3101);};}exports[_0xb31d('0x1c')]=function(_0x4f6dd6,_0x37aae9){var _0x1dc804={};var _0x56de13=_[_0xb31d('0x1d')](db[_0xb31d('0x1e')]['rawAttributes'],function(_0x30efd8){return{'name':_0x30efd8[_0xb31d('0x1f')],'type':_0x30efd8[_0xb31d('0x20')]['key']};});_0x1dc804=qs[_0xb31d('0x21')](_0x56de13,_0x4f6dd6);return interaction[_0xb31d('0x22')](_0xb31d('0x23'),_0x4f6dd6[_0xb31d('0x24')],_0x4f6dd6[_0xb31d('0x25')],_0x1dc804,_0x56de13)[_0xb31d('0x18')](respondWithFilteredResult(_0x37aae9,_0x1dc804))[_0xb31d('0x26')](handleError(_0x37aae9,null));};exports['show']=function(_0x44bb52,_0x322248){var _0x1f3474={'raw':![],'where':{'id':_0x44bb52[_0xb31d('0x27')]['id']}},_0x368b02={};_0x368b02[_0xb31d('0x28')]=_[_0xb31d('0x29')](db[_0xb31d('0x1e')][_0xb31d('0x2a')]);_0x368b02['query']=_['keys'](_0x44bb52[_0xb31d('0x24')]);_0x368b02[_0xb31d('0x2b')]=_[_0xb31d('0x2c')](_0x368b02[_0xb31d('0x28')],_0x368b02[_0xb31d('0x24')]);_0x1f3474['attributes']=_['intersection'](_0x368b02['model'],qs[_0xb31d('0x2d')](_0x44bb52[_0xb31d('0x24')][_0xb31d('0x2d')]));_0x1f3474[_0xb31d('0x2e')]=_0x1f3474[_0xb31d('0x2e')][_0xb31d('0x2f')]?_0x1f3474[_0xb31d('0x2e')]:_0x368b02[_0xb31d('0x28')];if(_0x44bb52['query'][_0xb31d('0x30')]){_0x1f3474['include']=[{'all':!![]}];}_0x1f3474=_[_0xb31d('0x31')]({},_0x1f3474,_0x44bb52['options']);return db[_0xb31d('0x1e')][_0xb31d('0x32')](_0x1f3474)[_0xb31d('0x18')](handleEntityNotFound(_0x322248,null))[_0xb31d('0x18')](respondWithResult(_0x322248,null))['catch'](handleError(_0x322248,null));};exports['create']=function(_0x40d414,_0x13d56a){return db['SmsInteraction'][_0xb31d('0x33')](_0x40d414[_0xb31d('0x34')],{})['then'](respondWithResult(_0x13d56a,0xc9))['catch'](handleError(_0x13d56a,null));};exports['update']=function(_0x2e1ec9,_0x15b5d3){if(_0x2e1ec9[_0xb31d('0x34')]['id']){delete _0x2e1ec9[_0xb31d('0x34')]['id'];}return db[_0xb31d('0x1e')]['find']({'where':{'id':_0x2e1ec9[_0xb31d('0x27')]['id']}})['then'](handleEntityNotFound(_0x15b5d3,null))[_0xb31d('0x18')](saveUpdates(_0x2e1ec9[_0xb31d('0x34')],null))[_0xb31d('0x18')](respondWithResult(_0x15b5d3,null))['catch'](handleError(_0x15b5d3,null));};exports[_0xb31d('0x35')]=function(_0x418bc8,_0x24b521){return db[_0xb31d('0x1e')][_0xb31d('0x32')]({'where':{'id':_0x418bc8[_0xb31d('0x27')]['id']}})[_0xb31d('0x18')](handleEntityNotFound(_0x24b521,null))[_0xb31d('0x18')](removeEntity(_0x24b521,null))[_0xb31d('0x26')](handleError(_0x24b521,null));};exports[_0xb31d('0x36')]=function(_0xd07337,_0x2a3f98){return db[_0xb31d('0x1e')][_0xb31d('0x36')]()['then'](respondWithResult(_0x2a3f98,null))[_0xb31d('0x26')](handleError(_0x2a3f98,null));};exports[_0xb31d('0x37')]=function(_0x159567,_0x43b182){return db['SmsMessage'][_0xb31d('0x32')]({'where':{'id':_0x159567[_0xb31d('0x27')]['id']}})[_0xb31d('0x18')](handleEntityNotFound(_0x43b182,null))['then'](function(_0x5c5c71){if(_0x5c5c71){return _0x5c5c71['addMessage'](_0x159567[_0xb31d('0x34')][_0xb31d('0x38')],_[_0xb31d('0x39')](_0x159567[_0xb31d('0x34')],[_0xb31d('0x38'),'id'])||{});}})[_0xb31d('0x18')](respondWithResult(_0x43b182,null))[_0xb31d('0x26')](handleError(_0x43b182,null));};exports['getMessages']=function(_0xfdcae9,_0xe8db15){var _0x2031d9={'raw':![],'where':{}};var _0x29d3d6={};var _0x27df11={'count':0x0,'rows':[]};return db['SmsInteraction'][_0xb31d('0x3a')]({'where':{'id':_0xfdcae9[_0xb31d('0x27')]['id']}})[_0xb31d('0x18')](handleEntityNotFound(_0xe8db15,null))[_0xb31d('0x18')](function(_0x253d43){if(_0x253d43){_0x29d3d6[_0xb31d('0x28')]=_['keys'](db[_0xb31d('0x3b')]['rawAttributes']);_0x29d3d6[_0xb31d('0x24')]=_[_0xb31d('0x29')](_0xfdcae9['query']);_0x29d3d6[_0xb31d('0x2b')]=_[_0xb31d('0x2c')](_0x29d3d6['model'],_0x29d3d6['query']);_0x2031d9[_0xb31d('0x2e')]=_[_0xb31d('0x2c')](_0x29d3d6[_0xb31d('0x28')],qs[_0xb31d('0x2d')](_0xfdcae9[_0xb31d('0x24')]['fields']));_0x2031d9[_0xb31d('0x2e')]=_0x2031d9['attributes'][_0xb31d('0x2f')]?_0x2031d9[_0xb31d('0x2e')]:_0x29d3d6['model'];if(!_0xfdcae9[_0xb31d('0x24')][_0xb31d('0x3c')](_0xb31d('0x3d'))){_0x2031d9[_0xb31d('0x12')]=qs[_0xb31d('0x12')](_0xfdcae9[_0xb31d('0x24')][_0xb31d('0x12')]);_0x2031d9[_0xb31d('0x10')]=qs[_0xb31d('0x10')](_0xfdcae9[_0xb31d('0x24')]['offset']);}_0x2031d9[_0xb31d('0x3e')]=qs['sort'](_0xfdcae9['query'][_0xb31d('0x3f')]);_0x2031d9['where']=qs[_0xb31d('0x2b')](_['pick'](_0xfdcae9[_0xb31d('0x24')],_0x29d3d6[_0xb31d('0x2b')]));_0x2031d9[_0xb31d('0x40')][_0xb31d('0x41')]=_0x253d43['id'];if(_0xfdcae9['query'][_0xb31d('0x42')]){_0x2031d9[_0xb31d('0x40')]=_['merge'](_0x2031d9[_0xb31d('0x40')],{'$or':_['map'](_0x2031d9[_0xb31d('0x2e')],function(_0x36c97c){var _0x5c164d={};_0x5c164d[_0x36c97c]={'$like':'%'+_0xfdcae9[_0xb31d('0x24')]['filter']+'%'};return _0x5c164d;})});}if(_0xfdcae9['query'][_0xb31d('0x43')]){var _0x37155b=_0xfdcae9['query'][_0xb31d('0x43')]['split'](',');var _0x35e4d3={};_0x35e4d3[_0x37155b[0x0]]={'$gte':moment(_0x37155b[0x1])['format'](_0xb31d('0x44'))};_0x2031d9[_0xb31d('0x40')]=_[_0xb31d('0x31')](_0x2031d9[_0xb31d('0x40')],_0x35e4d3);}_0x2031d9=_['merge']({},_0x2031d9,_0xfdcae9[_0xb31d('0x45')]);return db['SmsMessage'][_0xb31d('0x13')]({'where':_0x2031d9['where']})[_0xb31d('0x18')](function(_0x290ee4){_0x27df11[_0xb31d('0x13')]=_0x290ee4;if(_0xfdcae9[_0xb31d('0x24')][_0xb31d('0x30')]){_0x2031d9[_0xb31d('0x46')]=[{'all':!![]}];}return db[_0xb31d('0x3b')][_0xb31d('0x22')](_0x2031d9);})[_0xb31d('0x18')](function(_0x6f7a40){_0x27df11['rows']=_0x6f7a40;return _0x27df11;});}})[_0xb31d('0x18')](respondWithFilteredResult(_0xe8db15,_0x2031d9))[_0xb31d('0x26')](handleError(_0xe8db15,null));};exports[_0xb31d('0x47')]=function(_0x343e72,_0x59b239){return db[_0xb31d('0x1e')]['find']({'where':{'id':_0x343e72[_0xb31d('0x27')]['id']}})[_0xb31d('0x18')](handleEntityNotFound(_0x59b239,null))[_0xb31d('0x18')](function(_0x42304a){if(_0x42304a){return _0x42304a['setTags'](_0x343e72['body'][_0xb31d('0x38')],_[_0xb31d('0x39')](_0x343e72['body'],[_0xb31d('0x38'),'id'])||{})[_0xb31d('0x48')](function(){return db[_0xb31d('0x49')][_0xb31d('0x22')]({'attributes':['id',_0xb31d('0x1a'),'color'],'where':{'id':_0x343e72[_0xb31d('0x34')][_0xb31d('0x38')]}});})['then'](function(_0x9f159e){socket['emit'](_0xb31d('0x4a'),{'id':Number(_0x343e72[_0xb31d('0x27')]['id']),'tags':_0x9f159e||[]});return{'id':Number(_0x343e72[_0xb31d('0x27')]['id']),'tags':_0x9f159e||[]};});}})['then'](respondWithResult(_0x59b239,null))[_0xb31d('0x26')](handleError(_0x59b239,null));};exports[_0xb31d('0x4b')]=function(_0x5e38cf,_0x597618){return db['SmsInteraction'][_0xb31d('0x32')]({'where':{'id':_0x5e38cf['params']['id']}})['then'](handleEntityNotFound(_0x597618,null))[_0xb31d('0x18')](function(_0x287055){if(_0x287055){return _0x287055[_0xb31d('0x4b')](_0x5e38cf[_0xb31d('0x24')][_0xb31d('0x38')]);}})[_0xb31d('0x18')](respondWithStatusCode(_0x597618,null))[_0xb31d('0x26')](handleError(_0x597618,null));};exports[_0xb31d('0x4c')]=function(_0x5aa831,_0x1fb898){var _0x394753=moment()[_0xb31d('0x4d')]()[_0xb31d('0x4e')]();var _0x1d78ea=path[_0xb31d('0x4f')](config[_0xb31d('0x50')],_0xb31d('0x51'),_0xb31d('0x52'),_0xb31d('0x53'));var _0x2e7ece=path[_0xb31d('0x4f')](_0x1d78ea,_0x394753);var _0x5798fe=util[_0xb31d('0x54')](_0xb31d('0x55'),_0x5aa831[_0xb31d('0x27')]['id'],_0x394753);var _0x3a628b=path[_0xb31d('0x4f')](_0x1d78ea,_0x5798fe);var _0x59f562=[];_0x59f562['push']({'model':db['User'],'as':_0xb31d('0x56'),'attributes':['id',_0xb31d('0x57')],'raw':!![]});_0x59f562[_0xb31d('0x58')]({'model':db[_0xb31d('0x59')],'as':_0xb31d('0x5a'),'attributes':['id',_0xb31d('0x5b'),_0xb31d('0x5c')],'raw':!![]});var _0x5dfbdc=[{'model':db[_0xb31d('0x3b')],'as':_0xb31d('0x5d'),'attributes':['id','body','createdAt','direction',_0xb31d('0x5e'),_0xb31d('0x5f')],'include':_0x59f562}];_0x5dfbdc[_0xb31d('0x58')]({'model':db[_0xb31d('0x60')],'as':_0xb31d('0x61'),'attributes':['id',_0xb31d('0x1a')]});_0x5dfbdc[_0xb31d('0x58')]({'model':db[_0xb31d('0x56')],'as':_0xb31d('0x62'),'attributes':['id',_0xb31d('0x57')]});return db[_0xb31d('0x1e')][_0xb31d('0x32')]({'where':{'id':_0x5aa831['params']['id']},'include':_0x5dfbdc})[_0xb31d('0x18')](handleEntityNotFound(_0x1fb898,null))[_0xb31d('0x18')](function(_0x5dcdbc){if(_0x5dcdbc){var _0x35c60d=_0x5dcdbc[_0xb31d('0x63')]({'plain':!![]});fs[_0xb31d('0x64')](_0x2e7ece);var _0x4a5f47={'channel':'Sms','account':_0x35c60d[_0xb31d('0x61')]['name'],'agent':_0x35c60d[_0xb31d('0x62')]?_0x35c60d['Owner'][_0xb31d('0x57')]:_0xb31d('0x65'),'createdAt':moment(_0x35c60d[_0xb31d('0x66')])[_0xb31d('0x54')]('YYYY-MM-DD\x20HH:mm:ss')[_0xb31d('0x4e')](),'closedAt':_0x35c60d[_0xb31d('0x67')]?moment(_0x35c60d[_0xb31d('0x68')])[_0xb31d('0x54')](_0xb31d('0x44'))[_0xb31d('0x4e')]():'','disposition':_0x35c60d['disposition'],'messages':_(_0x35c60d['Messages'])[_0xb31d('0x42')]({'secret':![]})[_0xb31d('0x1d')](function(_0x307d47){return{'date':moment(_0x307d47[_0xb31d('0x66')])['format'](_0xb31d('0x44'))[_0xb31d('0x4e')](),'sender':_0x307d47[_0xb31d('0x69')]===_0xb31d('0x6a')?_0x307d47[_0xb31d('0x56')]?_0x307d47['User'][_0xb31d('0x57')]:_0xb31d('0x6b'):_0x307d47[_0xb31d('0x5a')][_0xb31d('0x5b')]+(_0x307d47[_0xb31d('0x5a')][_0xb31d('0x5c')]?'\x20'+_0x307d47[_0xb31d('0x5a')][_0xb31d('0x5c')]:''),'body':_0x307d47[_0xb31d('0x34')],'direction':_0x307d47['direction']==='out'?'A':'C','secret':_0x307d47[_0xb31d('0x5e')],'read':_0x307d47[_0xb31d('0x5f')]};})[_0xb31d('0x6c')]()};return ejs[_0xb31d('0x6d')](path['join'](config[_0xb31d('0x50')],_0xb31d('0x51'),'views',_0xb31d('0x6e')),{'interaction':_0x4a5f47})[_0xb31d('0x18')](function(_0x9d559e){var _0x54b71a=path[_0xb31d('0x4f')](_0x2e7ece,_0xb31d('0x6f')+_0x35c60d['id']+'-'+_0x394753+_0xb31d('0x70'));var _0x392bd3={'path':_0x54b71a,'channel':_0xb31d('0x71'),'interactionId':_0x35c60d['id']};return pdf[_0xb31d('0x72')](_0x9d559e,_0x392bd3);})['then'](function(){return new BPromise(function(_0x1d0a93,_0x57a78d){zipdir(_0x2e7ece,{'saveTo':_0x3a628b},function(_0x2a9643,_0x531abd){if(_0x2a9643)return _0x57a78d(_0x2a9643);return _0x1d0a93(_0x531abd);});})['then'](function(){return new BPromise(function(_0xb2b0ce,_0x1b41f0){rimraf(_0x2e7ece,function(_0x18dafd){if(_0x18dafd)_0x1b41f0(_0x18dafd);return _0xb2b0ce();});});})[_0xb31d('0x18')](function(){return _0x1fb898['download'](_0x3a628b,_0x5798fe,function(_0xb93c26){if(_0xb93c26){console[_0xb31d('0x73')](_0xb31d('0x74'),_0xb93c26);}else{fs[_0xb31d('0x75')](_0x3a628b);}});});});}else{return _0x1fb898[_0xb31d('0xe')](0xc8);}})[_0xb31d('0x26')](handleError(_0x1fb898,null));};