Built motion from commit 3a7e82ea.|2.6.29
[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 _0x8450=['../../mysqldb','redis','defaults','localhost','./smsInteraction.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','error','stack','name','send','index','map','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms','query','user','catch','show','params','model','keys','filters','fields','length','attributes','includeAll','include','options','find','create','body','describe','addMessage','SmsMessage','omit','intersection','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','merge','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','ids','spread','Tag','emit','smsInteractionTags:save','removeTags','download','toString','join','server','files','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','lastName','Messages','createdAt','direction','secret','read','SmsAccount','Account','Owner','mkdirSync','Sms','closed','closedAt','format','disposition','out','System','value','renderFile','root','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','../../components/interaction/service','../../components/export/pdf','../../config/logger','../../config/environment'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x8450,0x1da));var _0x0845=function(_0x341ced,_0x5774ad){_0x341ced=_0x341ced-0x0;var _0x5726b5=_0x8450[_0x341ced];return _0x5726b5;};'use strict';var rimraf=require(_0x0845('0x0'));var zipdir=require(_0x0845('0x1'));var moment=require(_0x0845('0x2'));var BPromise=require('bluebird');var util=require(_0x0845('0x3'));var path=require(_0x0845('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0845('0x5'));var Redis=require('ioredis');var interaction=require(_0x0845('0x6'));var qs=require('../../components/parsers/qs');var pdf=require(_0x0845('0x7'));var logger=require(_0x0845('0x8'))('api');var config=require(_0x0845('0x9'));var db=require(_0x0845('0xa'))['db'];config[_0x0845('0xb')]=_[_0x0845('0xc')](config[_0x0845('0xb')],{'host':_0x0845('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0845('0xe'))['register'](socket);function respondWithStatusCode(_0x4a61c8,_0x405cef){_0x405cef=_0x405cef||0xcc;return function(_0x4d18b6){if(_0x4d18b6){return _0x4a61c8[_0x0845('0xf')](_0x405cef);}return _0x4a61c8[_0x0845('0x10')](_0x405cef)['end']();};}function respondWithResult(_0x2f988b,_0x32f4a8){_0x32f4a8=_0x32f4a8||0xc8;return function(_0x1ffe1f){if(_0x1ffe1f){return _0x2f988b[_0x0845('0x10')](_0x32f4a8)[_0x0845('0x11')](_0x1ffe1f);}};}function respondWithFilteredResult(_0xd67708,_0x316e4f){return function(_0x14c76c){if(_0x14c76c){var _0xd5806a=typeof _0x316e4f[_0x0845('0x12')]===_0x0845('0x13')&&typeof _0x316e4f[_0x0845('0x14')]==='undefined';var _0x2ee98b=_0x14c76c[_0x0845('0x15')];var _0x1d1076=_0xd5806a?0x0:_0x316e4f[_0x0845('0x12')];var _0x233f23=_0xd5806a?_0x14c76c[_0x0845('0x15')]:_0x316e4f[_0x0845('0x12')]+_0x316e4f[_0x0845('0x14')];var _0x2922e7;if(_0x233f23>=_0x2ee98b){_0x233f23=_0x2ee98b;_0x2922e7=0xc8;}else{_0x2922e7=0xce;}_0xd67708[_0x0845('0x10')](_0x2922e7);return _0xd67708[_0x0845('0x16')](_0x0845('0x17'),_0x1d1076+'-'+_0x233f23+'/'+_0x2ee98b)[_0x0845('0x11')](_0x14c76c);}return null;};}function saveUpdates(_0x414f6f){return function(_0x50e3d3){if(_0x50e3d3){return _0x50e3d3[_0x0845('0x18')](_0x414f6f)[_0x0845('0x19')](function(_0x5e5ce7){return _0x5e5ce7;});}return null;};}function removeEntity(_0x476078){return function(_0x5c8282){if(_0x5c8282){return _0x5c8282[_0x0845('0x1a')]()[_0x0845('0x19')](function(){_0x476078[_0x0845('0x10')](0xcc)[_0x0845('0x1b')]();});}};}function handleEntityNotFound(_0x41603a){return function(_0x263bcb){if(!_0x263bcb){_0x41603a[_0x0845('0xf')](0x194);}return _0x263bcb;};}function handleError(_0x3aa3b0,_0x2b978a){_0x2b978a=_0x2b978a||0x1f4;return function(_0x5d014e){logger[_0x0845('0x1c')](_0x5d014e[_0x0845('0x1d')]);if(_0x5d014e[_0x0845('0x1e')]){delete _0x5d014e[_0x0845('0x1e')];}_0x3aa3b0['status'](_0x2b978a)[_0x0845('0x1f')](_0x5d014e);};}exports[_0x0845('0x20')]=function(_0x3ed62a,_0x39d129){var _0x59f2e0={};var _0x3d43dd=_[_0x0845('0x21')](db[_0x0845('0x22')][_0x0845('0x23')],function(_0x1b98b7){return{'name':_0x1b98b7[_0x0845('0x24')],'type':_0x1b98b7[_0x0845('0x25')][_0x0845('0x26')]};});_0x59f2e0=qs[_0x0845('0x27')](_0x3d43dd,_0x3ed62a);return interaction[_0x0845('0x28')](_0x0845('0x29'),_0x3ed62a[_0x0845('0x2a')],_0x3ed62a[_0x0845('0x2b')],_0x59f2e0,_0x3d43dd)[_0x0845('0x19')](respondWithFilteredResult(_0x39d129,_0x59f2e0))[_0x0845('0x2c')](handleError(_0x39d129,null));};exports[_0x0845('0x2d')]=function(_0x104646,_0x4aaa3b){var _0x2ce554={'raw':![],'where':{'id':_0x104646[_0x0845('0x2e')]['id']}},_0x365faf={};_0x365faf[_0x0845('0x2f')]=_[_0x0845('0x30')](db[_0x0845('0x22')][_0x0845('0x23')]);_0x365faf[_0x0845('0x2a')]=_[_0x0845('0x30')](_0x104646['query']);_0x365faf[_0x0845('0x31')]=_['intersection'](_0x365faf[_0x0845('0x2f')],_0x365faf[_0x0845('0x2a')]);_0x2ce554['attributes']=_['intersection'](_0x365faf[_0x0845('0x2f')],qs[_0x0845('0x32')](_0x104646['query'][_0x0845('0x32')]));_0x2ce554['attributes']=_0x2ce554['attributes'][_0x0845('0x33')]?_0x2ce554[_0x0845('0x34')]:_0x365faf[_0x0845('0x2f')];if(_0x104646[_0x0845('0x2a')][_0x0845('0x35')]){_0x2ce554[_0x0845('0x36')]=[{'all':!![]}];}_0x2ce554=_['merge']({},_0x2ce554,_0x104646[_0x0845('0x37')]);return db[_0x0845('0x22')][_0x0845('0x38')](_0x2ce554)[_0x0845('0x19')](handleEntityNotFound(_0x4aaa3b,null))[_0x0845('0x19')](respondWithResult(_0x4aaa3b,null))[_0x0845('0x2c')](handleError(_0x4aaa3b,null));};exports[_0x0845('0x39')]=function(_0x4a51f9,_0x414e84){return db['SmsInteraction'][_0x0845('0x39')](_0x4a51f9[_0x0845('0x3a')],{})[_0x0845('0x19')](respondWithResult(_0x414e84,0xc9))[_0x0845('0x2c')](handleError(_0x414e84,null));};exports[_0x0845('0x18')]=function(_0x53f4d2,_0x21ca0a){if(_0x53f4d2['body']['id']){delete _0x53f4d2['body']['id'];}return db[_0x0845('0x22')]['find']({'where':{'id':_0x53f4d2['params']['id']}})[_0x0845('0x19')](handleEntityNotFound(_0x21ca0a,null))[_0x0845('0x19')](saveUpdates(_0x53f4d2[_0x0845('0x3a')],null))['then'](respondWithResult(_0x21ca0a,null))['catch'](handleError(_0x21ca0a,null));};exports[_0x0845('0x1a')]=function(_0x46b01b,_0xa56145){return db['SmsInteraction'][_0x0845('0x38')]({'where':{'id':_0x46b01b[_0x0845('0x2e')]['id']}})[_0x0845('0x19')](handleEntityNotFound(_0xa56145,null))[_0x0845('0x19')](removeEntity(_0xa56145,null))[_0x0845('0x2c')](handleError(_0xa56145,null));};exports['describe']=function(_0x526bfd,_0x2aa467){return db['SmsInteraction'][_0x0845('0x3b')]()['then'](respondWithResult(_0x2aa467,null))['catch'](handleError(_0x2aa467,null));};exports[_0x0845('0x3c')]=function(_0x160410,_0x55639d){return db[_0x0845('0x3d')]['find']({'where':{'id':_0x160410[_0x0845('0x2e')]['id']}})[_0x0845('0x19')](handleEntityNotFound(_0x55639d,null))[_0x0845('0x19')](function(_0x1c7ee5){if(_0x1c7ee5){return _0x1c7ee5[_0x0845('0x3c')](_0x160410[_0x0845('0x3a')]['ids'],_[_0x0845('0x3e')](_0x160410['body'],['ids','id'])||{});}})[_0x0845('0x19')](respondWithResult(_0x55639d,null))[_0x0845('0x2c')](handleError(_0x55639d,null));};exports['getMessages']=function(_0x6d966c,_0x21b669){var _0x4ca372={'raw':![],'where':{}};var _0x509c6a={};var _0x5b04e={'count':0x0,'rows':[]};return db[_0x0845('0x22')]['findOne']({'where':{'id':_0x6d966c[_0x0845('0x2e')]['id']}})['then'](handleEntityNotFound(_0x21b669,null))['then'](function(_0x5a131f){if(_0x5a131f){_0x509c6a[_0x0845('0x2f')]=_[_0x0845('0x30')](db['SmsMessage']['rawAttributes']);_0x509c6a[_0x0845('0x2a')]=_['keys'](_0x6d966c[_0x0845('0x2a')]);_0x509c6a[_0x0845('0x31')]=_[_0x0845('0x3f')](_0x509c6a[_0x0845('0x2f')],_0x509c6a['query']);_0x4ca372[_0x0845('0x34')]=_[_0x0845('0x3f')](_0x509c6a['model'],qs[_0x0845('0x32')](_0x6d966c['query'][_0x0845('0x32')]));_0x4ca372['attributes']=_0x4ca372[_0x0845('0x34')]['length']?_0x4ca372[_0x0845('0x34')]:_0x509c6a['model'];if(!_0x6d966c['query'][_0x0845('0x40')](_0x0845('0x41'))){_0x4ca372[_0x0845('0x14')]=qs[_0x0845('0x14')](_0x6d966c['query'][_0x0845('0x14')]);_0x4ca372[_0x0845('0x12')]=qs[_0x0845('0x12')](_0x6d966c[_0x0845('0x2a')]['offset']);}_0x4ca372[_0x0845('0x42')]=qs[_0x0845('0x43')](_0x6d966c[_0x0845('0x2a')][_0x0845('0x43')]);_0x4ca372[_0x0845('0x44')]=qs['filters'](_[_0x0845('0x45')](_0x6d966c[_0x0845('0x2a')],_0x509c6a[_0x0845('0x31')]));_0x4ca372[_0x0845('0x44')][_0x0845('0x46')]=_0x5a131f['id'];if(_0x6d966c[_0x0845('0x2a')][_0x0845('0x47')]){_0x4ca372[_0x0845('0x44')]=_[_0x0845('0x48')](_0x4ca372[_0x0845('0x44')],{'$or':_[_0x0845('0x21')](_0x4ca372['attributes'],function(_0x2cef9){var _0x43f0e4={};_0x43f0e4[_0x2cef9]={'$like':'%'+_0x6d966c['query']['filter']+'%'};return _0x43f0e4;})});}if(_0x6d966c[_0x0845('0x2a')][_0x0845('0x49')]){var _0x33bc22=_0x6d966c['query']['$gte'][_0x0845('0x4a')](',');var _0x400935={};_0x400935[_0x33bc22[0x0]]={'$gte':moment(_0x33bc22[0x1])['format'](_0x0845('0x4b'))};_0x4ca372[_0x0845('0x44')]=_[_0x0845('0x48')](_0x4ca372[_0x0845('0x44')],_0x400935);}_0x4ca372=_['merge']({},_0x4ca372,_0x6d966c[_0x0845('0x37')]);return db['SmsMessage'][_0x0845('0x15')]({'where':_0x4ca372[_0x0845('0x44')]})['then'](function(_0xe59b9f){_0x5b04e[_0x0845('0x15')]=_0xe59b9f;if(_0x6d966c[_0x0845('0x2a')]['includeAll']){_0x4ca372[_0x0845('0x36')]=[{'all':!![]}];}return db['SmsMessage'][_0x0845('0x28')](_0x4ca372);})[_0x0845('0x19')](function(_0x3beeb4){_0x5b04e[_0x0845('0x4c')]=_0x3beeb4;return _0x5b04e;});}})[_0x0845('0x19')](respondWithFilteredResult(_0x21b669,_0x4ca372))[_0x0845('0x2c')](handleError(_0x21b669,null));};exports[_0x0845('0x4d')]=function(_0x3bd450,_0x499f68){return db['SmsInteraction'][_0x0845('0x38')]({'where':{'id':_0x3bd450[_0x0845('0x2e')]['id']}})[_0x0845('0x19')](handleEntityNotFound(_0x499f68,null))['then'](function(_0x2ad6fd){if(_0x2ad6fd){return _0x2ad6fd['setTags'](_0x3bd450[_0x0845('0x3a')][_0x0845('0x4e')],_[_0x0845('0x3e')](_0x3bd450[_0x0845('0x3a')],[_0x0845('0x4e'),'id'])||{})[_0x0845('0x4f')](function(){return db[_0x0845('0x50')][_0x0845('0x28')]({'attributes':['id',_0x0845('0x1e'),'color'],'where':{'id':_0x3bd450[_0x0845('0x3a')][_0x0845('0x4e')]}});})[_0x0845('0x19')](function(_0xaece85){socket[_0x0845('0x51')](_0x0845('0x52'),{'id':Number(_0x3bd450[_0x0845('0x2e')]['id']),'tags':_0xaece85||[]});return{'id':Number(_0x3bd450[_0x0845('0x2e')]['id']),'tags':_0xaece85||[]};});}})[_0x0845('0x19')](respondWithResult(_0x499f68,null))[_0x0845('0x2c')](handleError(_0x499f68,null));};exports[_0x0845('0x53')]=function(_0x3f7bac,_0x4edff7){return db[_0x0845('0x22')]['find']({'where':{'id':_0x3f7bac[_0x0845('0x2e')]['id']}})['then'](handleEntityNotFound(_0x4edff7,null))[_0x0845('0x19')](function(_0xbfd9e7){if(_0xbfd9e7){return _0xbfd9e7['removeTags'](_0x3f7bac[_0x0845('0x2a')]['ids']);}})[_0x0845('0x19')](respondWithStatusCode(_0x4edff7,null))[_0x0845('0x2c')](handleError(_0x4edff7,null));};exports[_0x0845('0x54')]=function(_0xb265be,_0xd8141e){var _0x4acb58=moment()['unix']()[_0x0845('0x55')]();var _0x9aaafd=path[_0x0845('0x56')](config['root'],_0x0845('0x57'),_0x0845('0x58'),'tmp');var _0xa969ac=path[_0x0845('0x56')](_0x9aaafd,_0x4acb58);var _0x325ea3=util['format'](_0x0845('0x59'),_0xb265be[_0x0845('0x2e')]['id'],_0x4acb58);var _0x504622=path[_0x0845('0x56')](_0x9aaafd,_0x325ea3);var _0x253724=[];_0x253724[_0x0845('0x5a')]({'model':db[_0x0845('0x5b')],'as':_0x0845('0x5b'),'attributes':['id',_0x0845('0x5c')],'raw':!![]});_0x253724['push']({'model':db[_0x0845('0x5d')],'as':_0x0845('0x5e'),'attributes':['id','firstName',_0x0845('0x5f')],'raw':!![]});var _0x2ddf54=[{'model':db[_0x0845('0x3d')],'as':_0x0845('0x60'),'attributes':['id',_0x0845('0x3a'),_0x0845('0x61'),_0x0845('0x62'),_0x0845('0x63'),_0x0845('0x64')],'include':_0x253724}];_0x2ddf54[_0x0845('0x5a')]({'model':db[_0x0845('0x65')],'as':_0x0845('0x66'),'attributes':['id','name']});_0x2ddf54[_0x0845('0x5a')]({'model':db[_0x0845('0x5b')],'as':_0x0845('0x67'),'attributes':['id','fullname']});return db[_0x0845('0x22')]['find']({'where':{'id':_0xb265be['params']['id']},'include':_0x2ddf54})['then'](handleEntityNotFound(_0xd8141e,null))['then'](function(_0x3b065c){if(_0x3b065c){var _0x1d8987=_0x3b065c['get']({'plain':!![]});fs[_0x0845('0x68')](_0xa969ac);var _0x149b9a={'channel':_0x0845('0x69'),'account':_0x1d8987['Account'][_0x0845('0x1e')],'agent':_0x1d8987[_0x0845('0x67')]?_0x1d8987[_0x0845('0x67')][_0x0845('0x5c')]:'N.A.','createdAt':moment(_0x1d8987[_0x0845('0x61')])['format'](_0x0845('0x4b'))['toString'](),'closedAt':_0x1d8987[_0x0845('0x6a')]?moment(_0x1d8987[_0x0845('0x6b')])[_0x0845('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')[_0x0845('0x55')]():'','disposition':_0x1d8987[_0x0845('0x6d')],'messages':_(_0x1d8987['Messages'])['filter']({'secret':![]})['map'](function(_0x275169){return{'date':moment(_0x275169[_0x0845('0x61')])['format'](_0x0845('0x4b'))[_0x0845('0x55')](),'sender':_0x275169[_0x0845('0x62')]===_0x0845('0x6e')?_0x275169[_0x0845('0x5b')]?_0x275169[_0x0845('0x5b')][_0x0845('0x5c')]:_0x0845('0x6f'):_0x275169[_0x0845('0x5e')]['firstName']+(_0x275169['Contact']['lastName']?'\x20'+_0x275169['Contact'][_0x0845('0x5f')]:''),'body':_0x275169[_0x0845('0x3a')],'direction':_0x275169['direction']===_0x0845('0x6e')?'A':'C','secret':_0x275169['secret'],'read':_0x275169[_0x0845('0x64')]};})[_0x0845('0x70')]()};return ejs[_0x0845('0x71')](path[_0x0845('0x56')](config[_0x0845('0x72')],_0x0845('0x57'),_0x0845('0x73'),_0x0845('0x74')),{'interaction':_0x149b9a})['then'](function(_0x1c04e4){var _0x11f8d5=path[_0x0845('0x56')](_0xa969ac,'transcript-'+_0x1d8987['id']+'-'+_0x4acb58+_0x0845('0x75'));var _0x83715f={'path':_0x11f8d5,'channel':'Sms','interactionId':_0x1d8987['id']};return pdf[_0x0845('0x76')](_0x1c04e4,_0x83715f);})['then'](function(){return new BPromise(function(_0x1fbacd,_0xafc00f){zipdir(_0xa969ac,{'saveTo':_0x504622},function(_0x5b3c94,_0x30ec91){if(_0x5b3c94)return _0xafc00f(_0x5b3c94);return _0x1fbacd(_0x30ec91);});})[_0x0845('0x19')](function(){return new BPromise(function(_0x36fa58,_0x3c9bca){rimraf(_0xa969ac,function(_0x5732a8){if(_0x5732a8)_0x3c9bca(_0x5732a8);return _0x36fa58();});});})[_0x0845('0x19')](function(){return _0xd8141e[_0x0845('0x54')](_0x504622,_0x325ea3,function(_0x5245b0){if(_0x5245b0){console[_0x0845('0x77')]('err',_0x5245b0);}else{fs[_0x0845('0x78')](_0x504622);}});});});}else{return _0xd8141e[_0x0845('0xf')](0xc8);}})['catch'](handleError(_0xd8141e,null));};