Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / openchannelInteraction / openchannelInteraction.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 _0x4065=['path','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','then','destroy','stack','name','send','OpenchannelInteraction','rawAttributes','fieldName','getOptions','findAll','openchannel','user','catch','type','query','from','params','keys','filters','intersection','attributes','fields','length','model','includeAll','merge','options','create','update','body','find','describe','addMessage','OpenchannelMessage','ids','getMessages','order','sort','where','pick','OpenchannelInteractionId','filter','$gte','split','format','include','rows','addTags','setTags','omit','spread','Tag','emit','openchannelInteractionTags:save','removeTags','download','toString','root','server','files','attachments','join','transcript-%d-%s.zip','push','User','fullname','firstName','lastName','Attachment','Messages','createdAt','OpenchannelAccount','Owner','mkdirSync','Account','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','threadId','Public','Private','map','basename','createReadStream','createWriteStream','direction','out','System','Contact','secret','read','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','error','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util'];(function(_0x441563,_0x1d4a28){var _0x2369ec=function(_0x1f97ba){while(--_0x1f97ba){_0x441563['push'](_0x441563['shift']());}};_0x2369ec(++_0x1d4a28);}(_0x4065,0x174));var _0x5406=function(_0x1acaf0,_0xe06ccc){_0x1acaf0=_0x1acaf0-0x0;var _0x2e16c0=_0x4065[_0x1acaf0];return _0x2e16c0;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x5406('0x0'));var moment=require(_0x5406('0x1'));var util=require(_0x5406('0x2'));var path=require(_0x5406('0x3'));var ejs=require(_0x5406('0x4'));var fs=require('fs');var _=require(_0x5406('0x5'));var Redis=require(_0x5406('0x6'));var interaction=require(_0x5406('0x7'));var qs=require(_0x5406('0x8'));var pdf=require(_0x5406('0x9'));var logger=require('../../config/logger')('api');var config=require('../../config/environment');var db=require(_0x5406('0xa'))['db'];config[_0x5406('0xb')]=_[_0x5406('0xc')](config[_0x5406('0xb')],{'host':_0x5406('0xd'),'port':0x18eb});var socket=require(_0x5406('0xe'))(new Redis(config[_0x5406('0xb')]));require('./openchannelInteraction.socket')[_0x5406('0xf')](socket);function respondWithStatusCode(_0xa3cdd0,_0x43698f){_0x43698f=_0x43698f||0xcc;return function(_0x5d006b){if(_0x5d006b){return _0xa3cdd0[_0x5406('0x10')](_0x43698f);}return _0xa3cdd0[_0x5406('0x11')](_0x43698f)[_0x5406('0x12')]();};}function respondWithResult(_0x252e25,_0x445efb){_0x445efb=_0x445efb||0xc8;return function(_0x1ddd9d){if(_0x1ddd9d){return _0x252e25[_0x5406('0x11')](_0x445efb)[_0x5406('0x13')](_0x1ddd9d);}};}function respondWithFilteredResult(_0x4879e5,_0x39984f){return function(_0x5e8c1a){if(_0x5e8c1a){var _0x4db158=typeof _0x39984f[_0x5406('0x14')]===_0x5406('0x15')&&typeof _0x39984f[_0x5406('0x16')]===_0x5406('0x15');var _0xc28f5=_0x5e8c1a[_0x5406('0x17')];var _0x192d58=_0x4db158?0x0:_0x39984f[_0x5406('0x14')];var _0x7ee214=_0x4db158?_0x5e8c1a['count']:_0x39984f[_0x5406('0x14')]+_0x39984f[_0x5406('0x16')];var _0x2f05ca;if(_0x7ee214>=_0xc28f5){_0x7ee214=_0xc28f5;_0x2f05ca=0xc8;}else{_0x2f05ca=0xce;}_0x4879e5['status'](_0x2f05ca);return _0x4879e5['set'](_0x5406('0x18'),_0x192d58+'-'+_0x7ee214+'/'+_0xc28f5)['json'](_0x5e8c1a);}return null;};}function saveUpdates(_0x5b1eec){return function(_0x446ad5){if(_0x446ad5){return _0x446ad5['update'](_0x5b1eec)[_0x5406('0x19')](function(_0x7d2b6e){return _0x7d2b6e;});}return null;};}function removeEntity(_0x2390ed){return function(_0x5b8946){if(_0x5b8946){return _0x5b8946[_0x5406('0x1a')]()[_0x5406('0x19')](function(){_0x2390ed[_0x5406('0x11')](0xcc)[_0x5406('0x12')]();});}};}function handleEntityNotFound(_0x28bae0){return function(_0x274a27){if(!_0x274a27){_0x28bae0[_0x5406('0x10')](0x194);}return _0x274a27;};}function handleError(_0x2bf6d6,_0x3ecc37){_0x3ecc37=_0x3ecc37||0x1f4;return function(_0x206b35){logger['error'](_0x206b35[_0x5406('0x1b')]);if(_0x206b35[_0x5406('0x1c')]){delete _0x206b35[_0x5406('0x1c')];}_0x2bf6d6[_0x5406('0x11')](_0x3ecc37)[_0x5406('0x1d')](_0x206b35);};}exports['index']=function(_0x2bb89a,_0x3f1265){var _0x426f12={};var _0x56528e=_['map'](db[_0x5406('0x1e')][_0x5406('0x1f')],function(_0x3ca69a){return{'name':_0x3ca69a[_0x5406('0x20')],'type':_0x3ca69a['type']['key']};});_0x426f12=qs[_0x5406('0x21')](_0x56528e,_0x2bb89a);return interaction[_0x5406('0x22')](_0x5406('0x23'),_0x2bb89a['query'],_0x2bb89a[_0x5406('0x24')],_0x426f12,_0x56528e)['then'](respondWithFilteredResult(_0x3f1265,_0x426f12))[_0x5406('0x25')](handleError(_0x3f1265,null));};exports['show']=function(_0x204cbe,_0x232f2c){var _0x1386c4={};if(_0x204cbe['query'][_0x5406('0x26')]&&_0x204cbe[_0x5406('0x27')][_0x5406('0x26')]===_0x5406('0x28')){_0x1386c4[_0x5406('0x28')]=_0x204cbe['params']['id'];}else{_0x1386c4['id']=_0x204cbe[_0x5406('0x29')]['id'];}var _0x2889ee={'raw':![],'where':_0x1386c4},_0x135e33={};_0x135e33['model']=_[_0x5406('0x2a')](db[_0x5406('0x1e')][_0x5406('0x1f')]);_0x135e33[_0x5406('0x27')]=_[_0x5406('0x2a')](_0x204cbe[_0x5406('0x27')]);_0x135e33[_0x5406('0x2b')]=_[_0x5406('0x2c')](_0x135e33['model'],_0x135e33[_0x5406('0x27')]);_0x2889ee[_0x5406('0x2d')]=_['intersection'](_0x135e33['model'],qs[_0x5406('0x2e')](_0x204cbe[_0x5406('0x27')][_0x5406('0x2e')]));_0x2889ee[_0x5406('0x2d')]=_0x2889ee['attributes'][_0x5406('0x2f')]?_0x2889ee['attributes']:_0x135e33[_0x5406('0x30')];if(_0x204cbe[_0x5406('0x27')][_0x5406('0x31')]){_0x2889ee['include']=[{'all':!![]}];}_0x2889ee=_[_0x5406('0x32')]({},_0x2889ee,_0x204cbe[_0x5406('0x33')]);return db[_0x5406('0x1e')]['find'](_0x2889ee)['then'](handleEntityNotFound(_0x232f2c,null))[_0x5406('0x19')](respondWithResult(_0x232f2c,null))[_0x5406('0x25')](handleError(_0x232f2c,null));};exports[_0x5406('0x34')]=function(_0x152cce,_0x157d2e){return db[_0x5406('0x1e')][_0x5406('0x34')](_0x152cce['body'],{})['then'](respondWithResult(_0x157d2e,0xc9))[_0x5406('0x25')](handleError(_0x157d2e,null));};exports[_0x5406('0x35')]=function(_0x2f11b5,_0x35ce2b){if(_0x2f11b5[_0x5406('0x36')]['id']){delete _0x2f11b5['body']['id'];}return db[_0x5406('0x1e')]['find']({'where':{'id':_0x2f11b5[_0x5406('0x29')]['id']}})[_0x5406('0x19')](handleEntityNotFound(_0x35ce2b,null))[_0x5406('0x19')](saveUpdates(_0x2f11b5[_0x5406('0x36')],null))[_0x5406('0x19')](respondWithResult(_0x35ce2b,null))['catch'](handleError(_0x35ce2b,null));};exports['destroy']=function(_0x17e7aa,_0x326498){return db['OpenchannelInteraction'][_0x5406('0x37')]({'where':{'id':_0x17e7aa[_0x5406('0x29')]['id']}})[_0x5406('0x19')](handleEntityNotFound(_0x326498,null))[_0x5406('0x19')](removeEntity(_0x326498,null))[_0x5406('0x25')](handleError(_0x326498,null));};exports[_0x5406('0x38')]=function(_0x3e17fa,_0x230ce0){return db[_0x5406('0x1e')][_0x5406('0x38')]()[_0x5406('0x19')](respondWithResult(_0x230ce0,null))[_0x5406('0x25')](handleError(_0x230ce0,null));};exports[_0x5406('0x39')]=function(_0x48953e,_0x1f1a4d){return db[_0x5406('0x3a')][_0x5406('0x37')]({'where':{'id':_0x48953e[_0x5406('0x29')]['id']}})['then'](handleEntityNotFound(_0x1f1a4d,null))['then'](function(_0x30d777){if(_0x30d777){return _0x30d777[_0x5406('0x39')](_0x48953e[_0x5406('0x36')][_0x5406('0x3b')],_['omit'](_0x48953e[_0x5406('0x36')],[_0x5406('0x3b'),'id'])||{});}})[_0x5406('0x19')](respondWithResult(_0x1f1a4d,null))['catch'](handleError(_0x1f1a4d,null));};exports[_0x5406('0x3c')]=function(_0x35c8da,_0x23f42f){var _0x48abe0={'raw':![],'where':{}};var _0x52b8b6={};var _0xb5d772={'count':0x0,'rows':[]};return db[_0x5406('0x1e')]['findOne']({'where':{'id':_0x35c8da[_0x5406('0x29')]['id']}})[_0x5406('0x19')](handleEntityNotFound(_0x23f42f,null))[_0x5406('0x19')](function(_0x533abf){if(_0x533abf){_0x52b8b6[_0x5406('0x30')]=_['keys'](db[_0x5406('0x3a')][_0x5406('0x1f')]);_0x52b8b6[_0x5406('0x27')]=_[_0x5406('0x2a')](_0x35c8da[_0x5406('0x27')]);_0x52b8b6[_0x5406('0x2b')]=_['intersection'](_0x52b8b6[_0x5406('0x30')],_0x52b8b6[_0x5406('0x27')]);_0x48abe0[_0x5406('0x2d')]=_[_0x5406('0x2c')](_0x52b8b6[_0x5406('0x30')],qs[_0x5406('0x2e')](_0x35c8da['query'][_0x5406('0x2e')]));_0x48abe0[_0x5406('0x2d')]=_0x48abe0['attributes'][_0x5406('0x2f')]?_0x48abe0['attributes']:_0x52b8b6[_0x5406('0x30')];if(!_0x35c8da[_0x5406('0x27')]['hasOwnProperty']('nolimit')){_0x48abe0['limit']=qs['limit'](_0x35c8da[_0x5406('0x27')][_0x5406('0x16')]);_0x48abe0[_0x5406('0x14')]=qs[_0x5406('0x14')](_0x35c8da[_0x5406('0x27')][_0x5406('0x14')]);}_0x48abe0[_0x5406('0x3d')]=qs[_0x5406('0x3e')](_0x35c8da[_0x5406('0x27')][_0x5406('0x3e')]);_0x48abe0[_0x5406('0x3f')]=qs['filters'](_[_0x5406('0x40')](_0x35c8da[_0x5406('0x27')],_0x52b8b6['filters']));_0x48abe0[_0x5406('0x3f')][_0x5406('0x41')]=_0x533abf['id'];if(_0x35c8da[_0x5406('0x27')][_0x5406('0x42')]){_0x48abe0[_0x5406('0x3f')]=_['merge'](_0x48abe0[_0x5406('0x3f')],{'$or':_['map'](_0x48abe0[_0x5406('0x2d')],function(_0x30f151){var _0x596489={};_0x596489[_0x30f151]={'$like':'%'+_0x35c8da['query'][_0x5406('0x42')]+'%'};return _0x596489;})});}if(_0x35c8da[_0x5406('0x27')][_0x5406('0x43')]){var _0x3bc947=_0x35c8da[_0x5406('0x27')][_0x5406('0x43')][_0x5406('0x44')](',');var _0x4d9767={};_0x4d9767[_0x3bc947[0x0]]={'$gte':moment(_0x3bc947[0x1])[_0x5406('0x45')]('YYYY-MM-DD\x20HH:mm:ss')};_0x48abe0[_0x5406('0x3f')]=_['merge'](_0x48abe0['where'],_0x4d9767);}_0x48abe0=_['merge']({},_0x48abe0,_0x35c8da[_0x5406('0x33')]);return db[_0x5406('0x3a')][_0x5406('0x17')]({'where':_0x48abe0['where']})[_0x5406('0x19')](function(_0x512db7){_0xb5d772[_0x5406('0x17')]=_0x512db7;if(_0x35c8da[_0x5406('0x27')]['includeAll']){_0x48abe0[_0x5406('0x46')]=[{'all':!![]}];}return db[_0x5406('0x3a')][_0x5406('0x22')](_0x48abe0);})[_0x5406('0x19')](function(_0x3a7bcb){_0xb5d772[_0x5406('0x47')]=_0x3a7bcb;return _0xb5d772;});}})[_0x5406('0x19')](respondWithFilteredResult(_0x23f42f,_0x48abe0))[_0x5406('0x25')](handleError(_0x23f42f,null));};exports[_0x5406('0x48')]=function(_0x457c6e,_0x1eef54){return db[_0x5406('0x1e')][_0x5406('0x37')]({'where':{'id':_0x457c6e[_0x5406('0x29')]['id']}})['then'](handleEntityNotFound(_0x1eef54,null))[_0x5406('0x19')](function(_0x5f46f4){if(_0x5f46f4){return _0x5f46f4[_0x5406('0x49')](_0x457c6e[_0x5406('0x36')][_0x5406('0x3b')],_[_0x5406('0x4a')](_0x457c6e[_0x5406('0x36')],[_0x5406('0x3b'),'id'])||{})[_0x5406('0x4b')](function(){return db[_0x5406('0x4c')][_0x5406('0x22')]({'attributes':['id',_0x5406('0x1c'),'color'],'where':{'id':_0x457c6e[_0x5406('0x36')]['ids']}});})[_0x5406('0x19')](function(_0x46ae09){socket[_0x5406('0x4d')](_0x5406('0x4e'),{'id':Number(_0x457c6e[_0x5406('0x29')]['id']),'tags':_0x46ae09||[]});return{'id':Number(_0x457c6e[_0x5406('0x29')]['id']),'tags':_0x46ae09||[]};});}})['then'](respondWithResult(_0x1eef54,null))[_0x5406('0x25')](handleError(_0x1eef54,null));};exports['removeTags']=function(_0x43e0cd,_0x25bb80){return db[_0x5406('0x1e')]['find']({'where':{'id':_0x43e0cd[_0x5406('0x29')]['id']}})[_0x5406('0x19')](handleEntityNotFound(_0x25bb80,null))[_0x5406('0x19')](function(_0x1ee8ea){if(_0x1ee8ea){return _0x1ee8ea[_0x5406('0x4f')](_0x43e0cd[_0x5406('0x27')][_0x5406('0x3b')]);}})[_0x5406('0x19')](respondWithStatusCode(_0x25bb80,null))['catch'](handleError(_0x25bb80,null));};exports[_0x5406('0x50')]=function(_0x496a29,_0x2532f6){var _0x272da8=moment()['unix']()[_0x5406('0x51')]();var _0x4b6131=path['join'](config[_0x5406('0x52')],_0x5406('0x53'),'files','tmp');var _0xc77d64=path['join'](config[_0x5406('0x52')],'server',_0x5406('0x54'),_0x5406('0x55'));var _0x43f3a8=path[_0x5406('0x56')](_0x4b6131,_0x272da8);var _0x4dab4e=util['format'](_0x5406('0x57'),_0x496a29['params']['id'],_0x272da8);var _0xa25520=path['join'](_0x4b6131,_0x4dab4e);var _0x229210=[];_0x229210[_0x5406('0x58')]({'model':db[_0x5406('0x59')],'as':_0x5406('0x59'),'attributes':['id',_0x5406('0x5a')],'raw':!![]});_0x229210[_0x5406('0x58')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0x5406('0x5b'),_0x5406('0x5c')],'raw':!![]});if(_0x496a29['query'][_0x5406('0x55')]){_0x229210[_0x5406('0x58')]({'model':db[_0x5406('0x5d')],'as':'Attachment','raw':!![]});}var _0x806521=[{'model':db[_0x5406('0x3a')],'as':_0x5406('0x5e'),'attributes':['id',_0x5406('0x36'),_0x5406('0x5f'),'direction','secret','read'],'include':_0x229210}];_0x806521[_0x5406('0x58')]({'model':db[_0x5406('0x60')],'as':'Account','attributes':['id',_0x5406('0x1c')]});_0x806521[_0x5406('0x58')]({'model':db[_0x5406('0x59')],'as':_0x5406('0x61'),'attributes':['id','fullname']});return db['OpenchannelInteraction']['find']({'where':{'id':_0x496a29[_0x5406('0x29')]['id']},'include':_0x806521})['then'](handleEntityNotFound(_0x2532f6,null))[_0x5406('0x19')](function(_0xb2c0a7){if(_0xb2c0a7){var _0x233ab9=_0xb2c0a7['get']({'plain':!![]});fs[_0x5406('0x62')](_0x43f3a8);var _0xc45c6f={'channel':'Openchannel','account':_0x233ab9[_0x5406('0x63')][_0x5406('0x1c')],'agent':_0x233ab9[_0x5406('0x61')]?_0x233ab9['Owner'][_0x5406('0x5a')]:_0x5406('0x64'),'createdAt':moment(_0x233ab9[_0x5406('0x5f')])['format'](_0x5406('0x65'))[_0x5406('0x51')](),'closedAt':_0x233ab9[_0x5406('0x66')]?moment(_0x233ab9[_0x5406('0x67')])['format'](_0x5406('0x65'))[_0x5406('0x51')]():'','disposition':_0x233ab9[_0x5406('0x68')],'visibility':_0x233ab9[_0x5406('0x69')]?_0x5406('0x6a'):_0x5406('0x6b'),'messages':_(_0x233ab9[_0x5406('0x5e')])['filter']({'secret':![]})[_0x5406('0x6c')](function(_0x339163){if(_0x339163[_0x5406('0x5d')]){var _0xbd8d0f=path[_0x5406('0x56')](_0xc77d64,_0x339163['Attachment'][_0x5406('0x6d')]);if(fs['existsSync'](_0xbd8d0f)){fs[_0x5406('0x6e')](_0xbd8d0f)['pipe'](fs[_0x5406('0x6f')](path[_0x5406('0x56')](_0x43f3a8,_0x339163['Attachment'][_0x5406('0x6d')])));}}return{'date':moment(_0x339163[_0x5406('0x5f')])[_0x5406('0x45')](_0x5406('0x65'))[_0x5406('0x51')](),'sender':_0x339163[_0x5406('0x70')]===_0x5406('0x71')?_0x339163['User']?_0x339163['User'][_0x5406('0x5a')]:_0x5406('0x72'):_0x339163[_0x5406('0x73')][_0x5406('0x5b')]+(_0x339163[_0x5406('0x73')][_0x5406('0x5c')]?'\x20'+_0x339163[_0x5406('0x73')][_0x5406('0x5c')]:''),'body':_0x339163[_0x5406('0x5d')]?_0x339163[_0x5406('0x5d')]['basename']:_0x339163['body'],'direction':_0x339163[_0x5406('0x70')]===_0x5406('0x71')?'A':'C','secret':_0x339163[_0x5406('0x74')],'read':_0x339163[_0x5406('0x75')],'attachment':_0x339163['Attachment']};})['value']()};return ejs['renderFile'](path[_0x5406('0x56')](config[_0x5406('0x52')],_0x5406('0x53'),_0x5406('0x76'),_0x5406('0x77')),{'interaction':_0xc45c6f})[_0x5406('0x19')](function(_0x2a079c){var _0x5505b0=path[_0x5406('0x56')](_0x43f3a8,_0x5406('0x78')+_0x233ab9['id']+'-'+_0x272da8+'.pdf');var _0x2810ce={'path':_0x5505b0,'channel':'Openchannel','interactionId':_0x233ab9['id']};return pdf[_0x5406('0x79')](_0x2a079c,_0x2810ce);})['then'](function(){return new Promise(function(_0x1758a6,_0x339a22){zipdir(_0x43f3a8,{'saveTo':_0xa25520},function(_0x12a860,_0x28cd9d){if(_0x12a860)return _0x339a22(_0x12a860);return _0x1758a6(_0x28cd9d);});})[_0x5406('0x19')](function(){return new Promise(function(_0x22e18b,_0x580941){rimraf(_0x43f3a8,function(_0x4002ec){if(_0x4002ec)_0x580941(_0x4002ec);return _0x22e18b();});});})[_0x5406('0x19')](function(){return _0x2532f6['download'](_0xa25520,_0x4dab4e,function(_0x4f63b4){if(_0x4f63b4){logger[_0x5406('0x7a')](_0x5406('0x7b'),_0x4f63b4);}else{fs[_0x5406('0x7c')](_0xa25520);}});});});}else{return _0x2532f6[_0x5406('0x10')](0xc8);}})[_0x5406('0x25')](handleError(_0x2532f6,null));};