Built motion from commit 9d0783e6.|2.6.13
[motion2.git] / server / api / faxInteraction / faxInteraction.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 _0x219c=['bluebird','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','index','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','fax','user','params','keys','query','filters','intersection','model','attributes','length','includeAll','include','merge','options','find','catch','create','body','describe','addMessage','ids','omit','getMessages','findOne','FaxMessage','fields','hasOwnProperty','nolimit','sort','where','filter','map','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','push','Attachment','Messages','get','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','err','unlinkSync','zip-dir','moment'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0x219c,0x1ed));var _0xc219=function(_0xe33e3f,_0xce7d6f){_0xe33e3f=_0xe33e3f-0x0;var _0x3f556d=_0x219c[_0xe33e3f];return _0x3f556d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xc219('0x0'));var moment=require(_0xc219('0x1'));var BPromise=require(_0xc219('0x2'));var util=require('util');var path=require(_0xc219('0x3'));var fs=require('fs');var _=require(_0xc219('0x4'));var Redis=require(_0xc219('0x5'));var interaction=require(_0xc219('0x6'));var qs=require(_0xc219('0x7'));var logger=require(_0xc219('0x8'))(_0xc219('0x9'));var config=require('../../config/environment');var db=require(_0xc219('0xa'))['db'];config[_0xc219('0xb')]=_['defaults'](config[_0xc219('0xb')],{'host':_0xc219('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc219('0xd'))[_0xc219('0xe')](socket);function respondWithStatusCode(_0x12ef43,_0x5a7225){_0x5a7225=_0x5a7225||0xcc;return function(_0x10b57d){if(_0x10b57d){return _0x12ef43[_0xc219('0xf')](_0x5a7225);}return _0x12ef43[_0xc219('0x10')](_0x5a7225)[_0xc219('0x11')]();};}function respondWithResult(_0x17ed65,_0x98c014){_0x98c014=_0x98c014||0xc8;return function(_0x3b8ba3){if(_0x3b8ba3){return _0x17ed65['status'](_0x98c014)[_0xc219('0x12')](_0x3b8ba3);}};}function respondWithFilteredResult(_0x19c7b9,_0x2fd322){return function(_0x1bd8d7){if(_0x1bd8d7){var _0x5254dd=typeof _0x2fd322[_0xc219('0x13')]===_0xc219('0x14')&&typeof _0x2fd322[_0xc219('0x15')]===_0xc219('0x14');var _0x4e4a94=_0x1bd8d7[_0xc219('0x16')];var _0x395a01=_0x5254dd?0x0:_0x2fd322[_0xc219('0x13')];var _0x237a61=_0x5254dd?_0x1bd8d7[_0xc219('0x16')]:_0x2fd322[_0xc219('0x13')]+_0x2fd322[_0xc219('0x15')];var _0x123e11;if(_0x237a61>=_0x4e4a94){_0x237a61=_0x4e4a94;_0x123e11=0xc8;}else{_0x123e11=0xce;}_0x19c7b9[_0xc219('0x10')](_0x123e11);return _0x19c7b9['set'](_0xc219('0x17'),_0x395a01+'-'+_0x237a61+'/'+_0x4e4a94)['json'](_0x1bd8d7);}return null;};}function saveUpdates(_0x3ebc1f){return function(_0x14b11c){if(_0x14b11c){return _0x14b11c[_0xc219('0x18')](_0x3ebc1f)[_0xc219('0x19')](function(_0x12e813){return _0x12e813;});}return null;};}function removeEntity(_0xd069d7){return function(_0x1f0c6a){if(_0x1f0c6a){return _0x1f0c6a[_0xc219('0x1a')]()['then'](function(){_0xd069d7[_0xc219('0x10')](0xcc)[_0xc219('0x11')]();});}};}function handleEntityNotFound(_0x3f1b5b){return function(_0x52f7f6){if(!_0x52f7f6){_0x3f1b5b[_0xc219('0xf')](0x194);}return _0x52f7f6;};}function handleError(_0x2b8089,_0x52f0d4){_0x52f0d4=_0x52f0d4||0x1f4;return function(_0x25e901){logger[_0xc219('0x1b')](_0x25e901[_0xc219('0x1c')]);if(_0x25e901[_0xc219('0x1d')]){delete _0x25e901[_0xc219('0x1d')];}_0x2b8089[_0xc219('0x10')](_0x52f0d4)[_0xc219('0x1e')](_0x25e901);};}exports[_0xc219('0x1f')]=function(_0x83da85,_0x4ab2af){var _0x2e9d34={};var _0x27bf04=_['map'](db[_0xc219('0x20')][_0xc219('0x21')],function(_0x3829f9){return{'name':_0x3829f9[_0xc219('0x22')],'type':_0x3829f9[_0xc219('0x23')]['key']};});_0x2e9d34=qs[_0xc219('0x24')](_0x27bf04,_0x83da85);return interaction[_0xc219('0x25')](_0xc219('0x26'),_0x83da85['query'],_0x83da85[_0xc219('0x27')],_0x2e9d34,_0x27bf04)[_0xc219('0x19')](respondWithFilteredResult(_0x4ab2af,_0x2e9d34))['catch'](handleError(_0x4ab2af,null));};exports['show']=function(_0x1efa85,_0x4d9205){var _0x273af5={'raw':![],'where':{'id':_0x1efa85[_0xc219('0x28')]['id']}},_0x58cf0d={};_0x58cf0d['model']=_[_0xc219('0x29')](db[_0xc219('0x20')][_0xc219('0x21')]);_0x58cf0d[_0xc219('0x2a')]=_[_0xc219('0x29')](_0x1efa85[_0xc219('0x2a')]);_0x58cf0d[_0xc219('0x2b')]=_[_0xc219('0x2c')](_0x58cf0d[_0xc219('0x2d')],_0x58cf0d[_0xc219('0x2a')]);_0x273af5[_0xc219('0x2e')]=_[_0xc219('0x2c')](_0x58cf0d[_0xc219('0x2d')],qs['fields'](_0x1efa85['query']['fields']));_0x273af5[_0xc219('0x2e')]=_0x273af5[_0xc219('0x2e')][_0xc219('0x2f')]?_0x273af5['attributes']:_0x58cf0d['model'];if(_0x1efa85[_0xc219('0x2a')][_0xc219('0x30')]){_0x273af5[_0xc219('0x31')]=[{'all':!![]}];}_0x273af5=_[_0xc219('0x32')]({},_0x273af5,_0x1efa85[_0xc219('0x33')]);return db[_0xc219('0x20')][_0xc219('0x34')](_0x273af5)[_0xc219('0x19')](handleEntityNotFound(_0x4d9205,null))['then'](respondWithResult(_0x4d9205,null))[_0xc219('0x35')](handleError(_0x4d9205,null));};exports['create']=function(_0x6f8176,_0x3b9e2d){return db[_0xc219('0x20')][_0xc219('0x36')](_0x6f8176[_0xc219('0x37')],{})[_0xc219('0x19')](respondWithResult(_0x3b9e2d,0xc9))[_0xc219('0x35')](handleError(_0x3b9e2d,null));};exports['update']=function(_0xa287b8,_0x3d12d3){if(_0xa287b8[_0xc219('0x37')]['id']){delete _0xa287b8[_0xc219('0x37')]['id'];}return db['FaxInteraction']['find']({'where':{'id':_0xa287b8[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x3d12d3,null))['then'](saveUpdates(_0xa287b8[_0xc219('0x37')],null))['then'](respondWithResult(_0x3d12d3,null))[_0xc219('0x35')](handleError(_0x3d12d3,null));};exports[_0xc219('0x1a')]=function(_0x84064,_0x51642f){return db[_0xc219('0x20')][_0xc219('0x34')]({'where':{'id':_0x84064[_0xc219('0x28')]['id']}})['then'](handleEntityNotFound(_0x51642f,null))[_0xc219('0x19')](removeEntity(_0x51642f,null))[_0xc219('0x35')](handleError(_0x51642f,null));};exports[_0xc219('0x38')]=function(_0x4f84ce,_0x1aa6a0){return db[_0xc219('0x20')][_0xc219('0x38')]()[_0xc219('0x19')](respondWithResult(_0x1aa6a0,null))[_0xc219('0x35')](handleError(_0x1aa6a0,null));};exports[_0xc219('0x39')]=function(_0x37142f,_0x550061){return db['FaxMessage']['find']({'where':{'id':_0x37142f[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x550061,null))['then'](function(_0xd10c52){if(_0xd10c52){return _0xd10c52['addMessage'](_0x37142f[_0xc219('0x37')][_0xc219('0x3a')],_[_0xc219('0x3b')](_0x37142f[_0xc219('0x37')],[_0xc219('0x3a'),'id'])||{});}})[_0xc219('0x19')](respondWithResult(_0x550061,null))['catch'](handleError(_0x550061,null));};exports[_0xc219('0x3c')]=function(_0x3a5925,_0x5b886b){var _0x1c3c4f={'raw':![],'where':{}};var _0x16e9e5={};var _0x28b80f={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xc219('0x3d')]({'where':{'id':_0x3a5925['params']['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x5b886b,null))['then'](function(_0x56113e){if(_0x56113e){_0x16e9e5[_0xc219('0x2d')]=_[_0xc219('0x29')](db[_0xc219('0x3e')][_0xc219('0x21')]);_0x16e9e5['query']=_['keys'](_0x3a5925[_0xc219('0x2a')]);_0x16e9e5[_0xc219('0x2b')]=_[_0xc219('0x2c')](_0x16e9e5[_0xc219('0x2d')],_0x16e9e5[_0xc219('0x2a')]);_0x1c3c4f[_0xc219('0x2e')]=_[_0xc219('0x2c')](_0x16e9e5[_0xc219('0x2d')],qs[_0xc219('0x3f')](_0x3a5925[_0xc219('0x2a')][_0xc219('0x3f')]));_0x1c3c4f['attributes']=_0x1c3c4f['attributes'][_0xc219('0x2f')]?_0x1c3c4f[_0xc219('0x2e')]:_0x16e9e5[_0xc219('0x2d')];if(!_0x3a5925[_0xc219('0x2a')][_0xc219('0x40')](_0xc219('0x41'))){_0x1c3c4f['limit']=qs['limit'](_0x3a5925[_0xc219('0x2a')][_0xc219('0x15')]);_0x1c3c4f['offset']=qs[_0xc219('0x13')](_0x3a5925[_0xc219('0x2a')][_0xc219('0x13')]);}_0x1c3c4f['order']=qs['sort'](_0x3a5925[_0xc219('0x2a')][_0xc219('0x42')]);_0x1c3c4f[_0xc219('0x43')]=qs[_0xc219('0x2b')](_['pick'](_0x3a5925['query'],_0x16e9e5[_0xc219('0x2b')]));_0x1c3c4f['where']['FaxInteractionId']=_0x56113e['id'];if(_0x3a5925[_0xc219('0x2a')][_0xc219('0x44')]){_0x1c3c4f[_0xc219('0x43')]=_['merge'](_0x1c3c4f[_0xc219('0x43')],{'$or':_[_0xc219('0x45')](_0x1c3c4f[_0xc219('0x2e')],function(_0x4d8b5b){var _0x4f2f2b={};_0x4f2f2b[_0x4d8b5b]={'$like':'%'+_0x3a5925['query'][_0xc219('0x44')]+'%'};return _0x4f2f2b;})});}if(_0x3a5925[_0xc219('0x2a')]['$gte']){var _0x360d15=_0x3a5925[_0xc219('0x2a')]['$gte'][_0xc219('0x46')](',');var _0x305c47={};_0x305c47[_0x360d15[0x0]]={'$gte':moment(_0x360d15[0x1])[_0xc219('0x47')](_0xc219('0x48'))};_0x1c3c4f[_0xc219('0x43')]=_[_0xc219('0x32')](_0x1c3c4f[_0xc219('0x43')],_0x305c47);}_0x1c3c4f=_['merge']({},_0x1c3c4f,_0x3a5925['options']);return db[_0xc219('0x3e')]['count']({'where':_0x1c3c4f['where']})[_0xc219('0x19')](function(_0x56f970){_0x28b80f['count']=_0x56f970;if(_0x3a5925[_0xc219('0x2a')]['includeAll']){_0x1c3c4f['include']=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x1c3c4f);})[_0xc219('0x19')](function(_0x493a0b){_0x28b80f[_0xc219('0x49')]=_0x493a0b;return _0x28b80f;});}})[_0xc219('0x19')](respondWithFilteredResult(_0x5b886b,_0x1c3c4f))[_0xc219('0x35')](handleError(_0x5b886b,null));};exports['addTags']=function(_0x5db205,_0x361d9d){return db['FaxInteraction']['find']({'where':{'id':_0x5db205[_0xc219('0x28')]['id']}})[_0xc219('0x19')](handleEntityNotFound(_0x361d9d,null))[_0xc219('0x19')](function(_0x463438){if(_0x463438){return _0x463438[_0xc219('0x4a')](_0x5db205[_0xc219('0x37')][_0xc219('0x3a')],_[_0xc219('0x3b')](_0x5db205[_0xc219('0x37')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0xc219('0x25')]({'attributes':['id','name',_0xc219('0x4b')],'where':{'id':_0x5db205[_0xc219('0x37')][_0xc219('0x3a')]}});})[_0xc219('0x19')](function(_0x522998){socket[_0xc219('0x4c')](_0xc219('0x4d'),{'id':Number(_0x5db205[_0xc219('0x28')]['id']),'tags':_0x522998||[]});return{'id':Number(_0x5db205[_0xc219('0x28')]['id']),'tags':_0x522998||[]};});}})[_0xc219('0x19')](respondWithResult(_0x361d9d,null))['catch'](handleError(_0x361d9d,null));};exports['removeTags']=function(_0x50a970,_0xd4e816){return db['FaxInteraction'][_0xc219('0x34')]({'where':{'id':_0x50a970['params']['id']}})['then'](handleEntityNotFound(_0xd4e816,null))['then'](function(_0x9c69f5){if(_0x9c69f5){return _0x9c69f5[_0xc219('0x4e')](_0x50a970[_0xc219('0x2a')][_0xc219('0x3a')]);}})['then'](respondWithStatusCode(_0xd4e816,null))[_0xc219('0x35')](handleError(_0xd4e816,null));};exports['download']=function(_0xa034fe,_0x4b2024){var _0x21a21c=moment()[_0xc219('0x4f')]()[_0xc219('0x50')]();var _0x4532e4=path[_0xc219('0x51')](config[_0xc219('0x52')],_0xc219('0x53'),_0xc219('0x54'),_0xc219('0x55'));var _0xebd726=path['join'](config[_0xc219('0x52')],_0xc219('0x53'),_0xc219('0x54'),'attachments');var _0x421463=path['join'](_0x4532e4,_0x21a21c);var _0x3cc306=util['format']('transcript-%d-%s.zip',_0xa034fe['params']['id'],_0x21a21c);var _0x142967=path['join'](_0x4532e4,_0x3cc306);var _0x216e99=[];_0x216e99[_0xc219('0x56')]({'model':db[_0xc219('0x57')],'as':_0xc219('0x57'),'raw':!![]});var _0x3d0ffc=[{'model':db[_0xc219('0x3e')],'as':'Messages','attributes':['id',_0xc219('0x37'),'createdAt'],'include':_0x216e99}];return db[_0xc219('0x20')]['find']({'where':{'id':_0xa034fe[_0xc219('0x28')]['id']},'include':_0x3d0ffc})[_0xc219('0x19')](handleEntityNotFound(_0x4b2024,null))[_0xc219('0x19')](function(_0x492714){if(_0x492714&&_0x492714[_0xc219('0x58')]){var _0xb0ee56=_0x492714[_0xc219('0x59')]({'plain':!![]});fs['mkdirSync'](_0x421463);for(var _0xc4394c=0x0;_0xc4394c<_0xb0ee56[_0xc219('0x58')][_0xc219('0x2f')];_0xc4394c++){var _0x5ac1c2=_0xb0ee56['Messages'][_0xc4394c][_0xc219('0x57')];if(_0x5ac1c2){var _0x3640f4=path['join'](_0xebd726,_0x5ac1c2[_0xc219('0x5a')]);if(fs[_0xc219('0x5b')](_0x3640f4)){fs[_0xc219('0x5c')](_0x3640f4)[_0xc219('0x5d')](fs[_0xc219('0x5e')](path[_0xc219('0x51')](_0x421463,_0x5ac1c2[_0xc219('0x5a')])));}}}return BPromise[_0xc219('0x5f')]()[_0xc219('0x19')](function(){return new BPromise(function(_0x30dc13,_0x4eddd8){zipdir(_0x421463,{'saveTo':_0x142967},function(_0x3e0d2c,_0x196314){if(_0x3e0d2c)return _0x4eddd8(_0x3e0d2c);return _0x30dc13(_0x196314);});})[_0xc219('0x19')](function(){return new BPromise(function(_0x36c1e9,_0x48038b){rimraf(_0x421463,function(_0x460d40){if(_0x460d40)_0x48038b(_0x460d40);return _0x36c1e9();});});})[_0xc219('0x19')](function(){return _0x4b2024['download'](_0x142967,_0x3cc306,function(_0x8acdf){if(_0x8acdf){console[_0xc219('0x60')](_0xc219('0x61'),_0x8acdf);}else{fs[_0xc219('0x62')](_0x142967);}});});});}else{return _0x4b2024[_0xc219('0xf')](0xc8);}})[_0xc219('0x35')](handleError(_0x4b2024,null));};