Built motion from commit da617fac.|2.6.6
[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 _0x1998=['YYYY-MM-DD\x20HH:mm:ss','merge','findAll','addTags','setTags','spread','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','createdAt','Messages','mkdirSync','basename','existsSync','createReadStream','createWriteStream','resolve','download','log','unlinkSync','rimraf','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../config/environment','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','fax','query','user','show','params','model','keys','filters','intersection','attributes','length','includeAll','include','options','find','catch','create','body','FaxInteraction','addMessage','ids','omit','getMessages','findOne','FaxMessage','fields','hasOwnProperty','nolimit','sort','where','pick','FaxInteractionId','filter','$gte','split','format'];(function(_0x477e54,_0x37cd04){var _0x17f02a=function(_0x2057bb){while(--_0x2057bb){_0x477e54['push'](_0x477e54['shift']());}};_0x17f02a(++_0x37cd04);}(_0x1998,0x1bb));var _0x8199=function(_0x31144c,_0x1d9f6c){_0x31144c=_0x31144c-0x0;var _0x3e1aa6=_0x1998[_0x31144c];return _0x3e1aa6;};'use strict';var rimraf=require(_0x8199('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x8199('0x1'));var util=require(_0x8199('0x2'));var path=require(_0x8199('0x3'));var fs=require('fs');var _=require(_0x8199('0x4'));var Redis=require('ioredis');var interaction=require(_0x8199('0x5'));var qs=require(_0x8199('0x6'));var logger=require('../../config/logger')('api');var config=require(_0x8199('0x7'));var db=require('../../mysqldb')['db'];config[_0x8199('0x8')]=_['defaults'](config['redis'],{'host':_0x8199('0x9'),'port':0x18eb});var socket=require(_0x8199('0xa'))(new Redis(config['redis']));require(_0x8199('0xb'))[_0x8199('0xc')](socket);function respondWithStatusCode(_0x42c9d5,_0x112ef0){_0x112ef0=_0x112ef0||0xcc;return function(_0x3b55ec){if(_0x3b55ec){return _0x42c9d5[_0x8199('0xd')](_0x112ef0);}return _0x42c9d5[_0x8199('0xe')](_0x112ef0)[_0x8199('0xf')]();};}function respondWithResult(_0x1e3fb2,_0x113b9b){_0x113b9b=_0x113b9b||0xc8;return function(_0x2bdb33){if(_0x2bdb33){return _0x1e3fb2['status'](_0x113b9b)[_0x8199('0x10')](_0x2bdb33);}};}function respondWithFilteredResult(_0x5ec227,_0x339edf){return function(_0x7db9f1){if(_0x7db9f1){var _0x1aa939=typeof _0x339edf['offset']===_0x8199('0x11')&&typeof _0x339edf[_0x8199('0x12')]===_0x8199('0x11');var _0x2a61e8=_0x7db9f1[_0x8199('0x13')];var _0x359b1b=_0x1aa939?0x0:_0x339edf[_0x8199('0x14')];var _0x527550=_0x1aa939?_0x7db9f1['count']:_0x339edf[_0x8199('0x14')]+_0x339edf[_0x8199('0x12')];var _0x4c9198;if(_0x527550>=_0x2a61e8){_0x527550=_0x2a61e8;_0x4c9198=0xc8;}else{_0x4c9198=0xce;}_0x5ec227[_0x8199('0xe')](_0x4c9198);return _0x5ec227[_0x8199('0x15')]('Content-Range',_0x359b1b+'-'+_0x527550+'/'+_0x2a61e8)['json'](_0x7db9f1);}return null;};}function saveUpdates(_0x3b4430){return function(_0x569881){if(_0x569881){return _0x569881[_0x8199('0x16')](_0x3b4430)[_0x8199('0x17')](function(_0x2c6b66){return _0x2c6b66;});}return null;};}function removeEntity(_0x5ac6ec){return function(_0x488dab){if(_0x488dab){return _0x488dab[_0x8199('0x18')]()[_0x8199('0x17')](function(){_0x5ac6ec[_0x8199('0xe')](0xcc)[_0x8199('0xf')]();});}};}function handleEntityNotFound(_0x1a7734){return function(_0x3212a3){if(!_0x3212a3){_0x1a7734['sendStatus'](0x194);}return _0x3212a3;};}function handleError(_0x595bae,_0x4e4833){_0x4e4833=_0x4e4833||0x1f4;return function(_0x1ee3da){logger[_0x8199('0x19')](_0x1ee3da[_0x8199('0x1a')]);if(_0x1ee3da[_0x8199('0x1b')]){delete _0x1ee3da[_0x8199('0x1b')];}_0x595bae[_0x8199('0xe')](_0x4e4833)[_0x8199('0x1c')](_0x1ee3da);};}exports[_0x8199('0x1d')]=function(_0x25408e,_0x4e20e3){var _0x17a503={};var _0x4b362f=_[_0x8199('0x1e')](db['FaxInteraction'][_0x8199('0x1f')],function(_0x2ca867){return{'name':_0x2ca867[_0x8199('0x20')],'type':_0x2ca867[_0x8199('0x21')][_0x8199('0x22')]};});_0x17a503=qs[_0x8199('0x23')](_0x4b362f,_0x25408e);return interaction['findAll'](_0x8199('0x24'),_0x25408e[_0x8199('0x25')],_0x25408e[_0x8199('0x26')],_0x17a503,_0x4b362f)['then'](respondWithFilteredResult(_0x4e20e3,_0x17a503))['catch'](handleError(_0x4e20e3,null));};exports[_0x8199('0x27')]=function(_0x26bf6b,_0x270e82){var _0x190952={'raw':![],'where':{'id':_0x26bf6b[_0x8199('0x28')]['id']}},_0x2b89a2={};_0x2b89a2[_0x8199('0x29')]=_[_0x8199('0x2a')](db['FaxInteraction'][_0x8199('0x1f')]);_0x2b89a2[_0x8199('0x25')]=_[_0x8199('0x2a')](_0x26bf6b['query']);_0x2b89a2[_0x8199('0x2b')]=_[_0x8199('0x2c')](_0x2b89a2[_0x8199('0x29')],_0x2b89a2['query']);_0x190952[_0x8199('0x2d')]=_['intersection'](_0x2b89a2[_0x8199('0x29')],qs['fields'](_0x26bf6b[_0x8199('0x25')]['fields']));_0x190952['attributes']=_0x190952['attributes'][_0x8199('0x2e')]?_0x190952['attributes']:_0x2b89a2['model'];if(_0x26bf6b['query'][_0x8199('0x2f')]){_0x190952[_0x8199('0x30')]=[{'all':!![]}];}_0x190952=_['merge']({},_0x190952,_0x26bf6b[_0x8199('0x31')]);return db['FaxInteraction'][_0x8199('0x32')](_0x190952)[_0x8199('0x17')](handleEntityNotFound(_0x270e82,null))[_0x8199('0x17')](respondWithResult(_0x270e82,null))[_0x8199('0x33')](handleError(_0x270e82,null));};exports[_0x8199('0x34')]=function(_0x1bc7d2,_0x50e08c){return db['FaxInteraction'][_0x8199('0x34')](_0x1bc7d2[_0x8199('0x35')],{})[_0x8199('0x17')](respondWithResult(_0x50e08c,0xc9))[_0x8199('0x33')](handleError(_0x50e08c,null));};exports['update']=function(_0x4444ae,_0x727942){if(_0x4444ae[_0x8199('0x35')]['id']){delete _0x4444ae['body']['id'];}return db['FaxInteraction'][_0x8199('0x32')]({'where':{'id':_0x4444ae[_0x8199('0x28')]['id']}})[_0x8199('0x17')](handleEntityNotFound(_0x727942,null))[_0x8199('0x17')](saveUpdates(_0x4444ae[_0x8199('0x35')],null))[_0x8199('0x17')](respondWithResult(_0x727942,null))['catch'](handleError(_0x727942,null));};exports[_0x8199('0x18')]=function(_0xa1471,_0x564d38){return db[_0x8199('0x36')][_0x8199('0x32')]({'where':{'id':_0xa1471[_0x8199('0x28')]['id']}})['then'](handleEntityNotFound(_0x564d38,null))[_0x8199('0x17')](removeEntity(_0x564d38,null))[_0x8199('0x33')](handleError(_0x564d38,null));};exports['describe']=function(_0x538d84,_0x1bde7e){return db[_0x8199('0x36')]['describe']()['then'](respondWithResult(_0x1bde7e,null))['catch'](handleError(_0x1bde7e,null));};exports[_0x8199('0x37')]=function(_0x325f5f,_0xb931f9){return db['FaxMessage'][_0x8199('0x32')]({'where':{'id':_0x325f5f[_0x8199('0x28')]['id']}})['then'](handleEntityNotFound(_0xb931f9,null))['then'](function(_0x19d237){if(_0x19d237){return _0x19d237[_0x8199('0x37')](_0x325f5f['body'][_0x8199('0x38')],_[_0x8199('0x39')](_0x325f5f[_0x8199('0x35')],['ids','id'])||{});}})['then'](respondWithResult(_0xb931f9,null))[_0x8199('0x33')](handleError(_0xb931f9,null));};exports[_0x8199('0x3a')]=function(_0x4dd01a,_0x31d8a1){var _0x5ee886={'raw':![],'where':{}};var _0x3369e5={};var _0x591892={'count':0x0,'rows':[]};return db[_0x8199('0x36')][_0x8199('0x3b')]({'where':{'id':_0x4dd01a['params']['id']}})[_0x8199('0x17')](handleEntityNotFound(_0x31d8a1,null))[_0x8199('0x17')](function(_0x178af2){if(_0x178af2){_0x3369e5[_0x8199('0x29')]=_[_0x8199('0x2a')](db[_0x8199('0x3c')][_0x8199('0x1f')]);_0x3369e5[_0x8199('0x25')]=_[_0x8199('0x2a')](_0x4dd01a['query']);_0x3369e5[_0x8199('0x2b')]=_['intersection'](_0x3369e5[_0x8199('0x29')],_0x3369e5[_0x8199('0x25')]);_0x5ee886[_0x8199('0x2d')]=_[_0x8199('0x2c')](_0x3369e5[_0x8199('0x29')],qs[_0x8199('0x3d')](_0x4dd01a[_0x8199('0x25')][_0x8199('0x3d')]));_0x5ee886[_0x8199('0x2d')]=_0x5ee886['attributes'][_0x8199('0x2e')]?_0x5ee886[_0x8199('0x2d')]:_0x3369e5[_0x8199('0x29')];if(!_0x4dd01a[_0x8199('0x25')][_0x8199('0x3e')](_0x8199('0x3f'))){_0x5ee886[_0x8199('0x12')]=qs[_0x8199('0x12')](_0x4dd01a['query'][_0x8199('0x12')]);_0x5ee886[_0x8199('0x14')]=qs[_0x8199('0x14')](_0x4dd01a[_0x8199('0x25')]['offset']);}_0x5ee886['order']=qs[_0x8199('0x40')](_0x4dd01a['query']['sort']);_0x5ee886[_0x8199('0x41')]=qs['filters'](_[_0x8199('0x42')](_0x4dd01a[_0x8199('0x25')],_0x3369e5[_0x8199('0x2b')]));_0x5ee886['where'][_0x8199('0x43')]=_0x178af2['id'];if(_0x4dd01a[_0x8199('0x25')][_0x8199('0x44')]){_0x5ee886[_0x8199('0x41')]=_['merge'](_0x5ee886[_0x8199('0x41')],{'$or':_[_0x8199('0x1e')](_0x5ee886[_0x8199('0x2d')],function(_0x2af702){var _0x4f53f0={};_0x4f53f0[_0x2af702]={'$like':'%'+_0x4dd01a[_0x8199('0x25')][_0x8199('0x44')]+'%'};return _0x4f53f0;})});}if(_0x4dd01a[_0x8199('0x25')][_0x8199('0x45')]){var _0x563b6c=_0x4dd01a[_0x8199('0x25')]['$gte'][_0x8199('0x46')](',');var _0x52208c={};_0x52208c[_0x563b6c[0x0]]={'$gte':moment(_0x563b6c[0x1])[_0x8199('0x47')](_0x8199('0x48'))};_0x5ee886[_0x8199('0x41')]=_[_0x8199('0x49')](_0x5ee886[_0x8199('0x41')],_0x52208c);}_0x5ee886=_[_0x8199('0x49')]({},_0x5ee886,_0x4dd01a[_0x8199('0x31')]);return db['FaxMessage'][_0x8199('0x13')]({'where':_0x5ee886[_0x8199('0x41')]})[_0x8199('0x17')](function(_0x32756e){_0x591892[_0x8199('0x13')]=_0x32756e;if(_0x4dd01a[_0x8199('0x25')][_0x8199('0x2f')]){_0x5ee886['include']=[{'all':!![]}];}return db[_0x8199('0x3c')][_0x8199('0x4a')](_0x5ee886);})['then'](function(_0x558e7a){_0x591892['rows']=_0x558e7a;return _0x591892;});}})['then'](respondWithFilteredResult(_0x31d8a1,_0x5ee886))[_0x8199('0x33')](handleError(_0x31d8a1,null));};exports[_0x8199('0x4b')]=function(_0x526ab9,_0x58fad2){return db[_0x8199('0x36')][_0x8199('0x32')]({'where':{'id':_0x526ab9[_0x8199('0x28')]['id']}})['then'](handleEntityNotFound(_0x58fad2,null))[_0x8199('0x17')](function(_0x51579f){if(_0x51579f){return _0x51579f[_0x8199('0x4c')](_0x526ab9[_0x8199('0x35')]['ids'],_[_0x8199('0x39')](_0x526ab9[_0x8199('0x35')],[_0x8199('0x38'),'id'])||{})[_0x8199('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id','name',_0x8199('0x4e')],'where':{'id':_0x526ab9['body'][_0x8199('0x38')]}});})[_0x8199('0x17')](function(_0x5f4760){socket[_0x8199('0x4f')](_0x8199('0x50'),{'id':Number(_0x526ab9[_0x8199('0x28')]['id']),'tags':_0x5f4760||[]});return{'id':Number(_0x526ab9[_0x8199('0x28')]['id']),'tags':_0x5f4760||[]};});}})[_0x8199('0x17')](respondWithResult(_0x58fad2,null))[_0x8199('0x33')](handleError(_0x58fad2,null));};exports[_0x8199('0x51')]=function(_0x2161fd,_0x209fc1){return db[_0x8199('0x36')]['find']({'where':{'id':_0x2161fd[_0x8199('0x28')]['id']}})[_0x8199('0x17')](handleEntityNotFound(_0x209fc1,null))[_0x8199('0x17')](function(_0x3034df){if(_0x3034df){return _0x3034df[_0x8199('0x51')](_0x2161fd[_0x8199('0x25')]['ids']);}})[_0x8199('0x17')](respondWithStatusCode(_0x209fc1,null))[_0x8199('0x33')](handleError(_0x209fc1,null));};exports['download']=function(_0x4099be,_0x173831){var _0x506696=moment()[_0x8199('0x52')]()[_0x8199('0x53')]();var _0x802802=path[_0x8199('0x54')](config[_0x8199('0x55')],_0x8199('0x56'),_0x8199('0x57'),_0x8199('0x58'));var _0x38060b=path['join'](config[_0x8199('0x55')],_0x8199('0x56'),_0x8199('0x57'),_0x8199('0x59'));var _0x4b24dc=path[_0x8199('0x54')](_0x802802,_0x506696);var _0x53c601=util[_0x8199('0x47')](_0x8199('0x5a'),_0x4099be[_0x8199('0x28')]['id'],_0x506696);var _0x3134bb=path[_0x8199('0x54')](_0x802802,_0x53c601);var _0x544d58=[];_0x544d58['push']({'model':db[_0x8199('0x5b')],'as':_0x8199('0x5b'),'raw':!![]});var _0x4d1589=[{'model':db[_0x8199('0x3c')],'as':'Messages','attributes':['id',_0x8199('0x35'),_0x8199('0x5c')],'include':_0x544d58}];return db[_0x8199('0x36')][_0x8199('0x32')]({'where':{'id':_0x4099be[_0x8199('0x28')]['id']},'include':_0x4d1589})[_0x8199('0x17')](handleEntityNotFound(_0x173831,null))[_0x8199('0x17')](function(_0x332f31){if(_0x332f31&&_0x332f31[_0x8199('0x5d')]){var _0x49f950=_0x332f31['get']({'plain':!![]});fs[_0x8199('0x5e')](_0x4b24dc);for(var _0x2022c4=0x0;_0x2022c4<_0x49f950[_0x8199('0x5d')][_0x8199('0x2e')];_0x2022c4++){var _0x3b2241=_0x49f950['Messages'][_0x2022c4][_0x8199('0x5b')];if(_0x3b2241){var _0x499327=path[_0x8199('0x54')](_0x38060b,_0x3b2241[_0x8199('0x5f')]);if(fs[_0x8199('0x60')](_0x499327)){fs[_0x8199('0x61')](_0x499327)['pipe'](fs[_0x8199('0x62')](path[_0x8199('0x54')](_0x4b24dc,_0x3b2241['basename'])));}}}return BPromise[_0x8199('0x63')]()[_0x8199('0x17')](function(){return new BPromise(function(_0x32b761,_0x7d31d9){zipdir(_0x4b24dc,{'saveTo':_0x3134bb},function(_0x507f79,_0x1161c1){if(_0x507f79)return _0x7d31d9(_0x507f79);return _0x32b761(_0x1161c1);});})[_0x8199('0x17')](function(){return new BPromise(function(_0x4acc8b,_0x55ad87){rimraf(_0x4b24dc,function(_0x54c8b5){if(_0x54c8b5)_0x55ad87(_0x54c8b5);return _0x4acc8b();});});})[_0x8199('0x17')](function(){return _0x173831[_0x8199('0x64')](_0x3134bb,_0x53c601,function(_0x44f9c0){if(_0x44f9c0){console[_0x8199('0x65')]('err',_0x44f9c0);}else{fs[_0x8199('0x66')](_0x3134bb);}});});});}else{return _0x173831[_0x8199('0xd')](0xc8);}})['catch'](handleError(_0x173831,null));};