Built motion from commit fe909640.|2.6.8
[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 _0x0515=['FaxInteraction','filters','intersection','attributes','length','model','includeAll','include','merge','options','find','create','body','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','keys','fields','hasOwnProperty','nolimit','order','sort','pick','where','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','Tag','color','emit','removeTags','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','existsSync','createReadStream','pipe','createWriteStream','download','log','err','unlinkSync','rimraf','zip-dir','moment','bluebird','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','getOptions','fax','query','user','catch','show'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x0515,0xa8));var _0x5051=function(_0x43e918,_0x363513){_0x43e918=_0x43e918-0x0;var _0x1694fd=_0x0515[_0x43e918];return _0x1694fd;};'use strict';var rimraf=require(_0x5051('0x0'));var zipdir=require(_0x5051('0x1'));var moment=require(_0x5051('0x2'));var BPromise=require(_0x5051('0x3'));var util=require(_0x5051('0x4'));var path=require(_0x5051('0x5'));var fs=require('fs');var _=require(_0x5051('0x6'));var Redis=require('ioredis');var interaction=require(_0x5051('0x7'));var qs=require(_0x5051('0x8'));var logger=require('../../config/logger')(_0x5051('0x9'));var config=require(_0x5051('0xa'));var db=require(_0x5051('0xb'))['db'];config[_0x5051('0xc')]=_[_0x5051('0xd')](config[_0x5051('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5051('0xe'))(new Redis(config[_0x5051('0xc')]));require('./faxInteraction.socket')[_0x5051('0xf')](socket);function respondWithStatusCode(_0x141b9f,_0x4a3401){_0x4a3401=_0x4a3401||0xcc;return function(_0x429e23){if(_0x429e23){return _0x141b9f[_0x5051('0x10')](_0x4a3401);}return _0x141b9f[_0x5051('0x11')](_0x4a3401)[_0x5051('0x12')]();};}function respondWithResult(_0x5eff99,_0x112ce1){_0x112ce1=_0x112ce1||0xc8;return function(_0x5454ec){if(_0x5454ec){return _0x5eff99[_0x5051('0x11')](_0x112ce1)[_0x5051('0x13')](_0x5454ec);}};}function respondWithFilteredResult(_0x1fca2e,_0x59005d){return function(_0x30d421){if(_0x30d421){var _0x5b157d=typeof _0x59005d[_0x5051('0x14')]==='undefined'&&typeof _0x59005d[_0x5051('0x15')]==='undefined';var _0x3435d9=_0x30d421[_0x5051('0x16')];var _0x954531=_0x5b157d?0x0:_0x59005d[_0x5051('0x14')];var _0x204897=_0x5b157d?_0x30d421[_0x5051('0x16')]:_0x59005d['offset']+_0x59005d['limit'];var _0x3e44cd;if(_0x204897>=_0x3435d9){_0x204897=_0x3435d9;_0x3e44cd=0xc8;}else{_0x3e44cd=0xce;}_0x1fca2e['status'](_0x3e44cd);return _0x1fca2e[_0x5051('0x17')](_0x5051('0x18'),_0x954531+'-'+_0x204897+'/'+_0x3435d9)['json'](_0x30d421);}return null;};}function saveUpdates(_0xf4c50f){return function(_0x340506){if(_0x340506){return _0x340506['update'](_0xf4c50f)[_0x5051('0x19')](function(_0xbd4f15){return _0xbd4f15;});}return null;};}function removeEntity(_0x6c95c8){return function(_0x148867){if(_0x148867){return _0x148867[_0x5051('0x1a')]()[_0x5051('0x19')](function(){_0x6c95c8['status'](0xcc)[_0x5051('0x12')]();});}};}function handleEntityNotFound(_0x234e09){return function(_0x133e0e){if(!_0x133e0e){_0x234e09[_0x5051('0x10')](0x194);}return _0x133e0e;};}function handleError(_0x4086d8,_0x2936fb){_0x2936fb=_0x2936fb||0x1f4;return function(_0x3d9072){logger[_0x5051('0x1b')](_0x3d9072[_0x5051('0x1c')]);if(_0x3d9072[_0x5051('0x1d')]){delete _0x3d9072[_0x5051('0x1d')];}_0x4086d8[_0x5051('0x11')](_0x2936fb)['send'](_0x3d9072);};}exports[_0x5051('0x1e')]=function(_0x2ccb95,_0x1f03e3){var _0x3e56fa={};var _0xef845c=_[_0x5051('0x1f')](db['FaxInteraction'][_0x5051('0x20')],function(_0x52616f){return{'name':_0x52616f[_0x5051('0x21')],'type':_0x52616f[_0x5051('0x22')][_0x5051('0x23')]};});_0x3e56fa=qs[_0x5051('0x24')](_0xef845c,_0x2ccb95);return interaction['findAll'](_0x5051('0x25'),_0x2ccb95[_0x5051('0x26')],_0x2ccb95[_0x5051('0x27')],_0x3e56fa,_0xef845c)['then'](respondWithFilteredResult(_0x1f03e3,_0x3e56fa))[_0x5051('0x28')](handleError(_0x1f03e3,null));};exports[_0x5051('0x29')]=function(_0x49fa01,_0x500aee){var _0x1b1e91={'raw':![],'where':{'id':_0x49fa01['params']['id']}},_0x3c0fee={};_0x3c0fee['model']=_['keys'](db[_0x5051('0x2a')]['rawAttributes']);_0x3c0fee['query']=_['keys'](_0x49fa01['query']);_0x3c0fee[_0x5051('0x2b')]=_[_0x5051('0x2c')](_0x3c0fee['model'],_0x3c0fee[_0x5051('0x26')]);_0x1b1e91[_0x5051('0x2d')]=_[_0x5051('0x2c')](_0x3c0fee['model'],qs['fields'](_0x49fa01['query']['fields']));_0x1b1e91['attributes']=_0x1b1e91[_0x5051('0x2d')][_0x5051('0x2e')]?_0x1b1e91[_0x5051('0x2d')]:_0x3c0fee[_0x5051('0x2f')];if(_0x49fa01[_0x5051('0x26')][_0x5051('0x30')]){_0x1b1e91[_0x5051('0x31')]=[{'all':!![]}];}_0x1b1e91=_[_0x5051('0x32')]({},_0x1b1e91,_0x49fa01[_0x5051('0x33')]);return db[_0x5051('0x2a')][_0x5051('0x34')](_0x1b1e91)[_0x5051('0x19')](handleEntityNotFound(_0x500aee,null))['then'](respondWithResult(_0x500aee,null))[_0x5051('0x28')](handleError(_0x500aee,null));};exports[_0x5051('0x35')]=function(_0x594262,_0x4caf75){return db['FaxInteraction']['create'](_0x594262[_0x5051('0x36')],{})[_0x5051('0x19')](respondWithResult(_0x4caf75,0xc9))[_0x5051('0x28')](handleError(_0x4caf75,null));};exports['update']=function(_0x3f149c,_0x202e8e){if(_0x3f149c[_0x5051('0x36')]['id']){delete _0x3f149c[_0x5051('0x36')]['id'];}return db[_0x5051('0x2a')]['find']({'where':{'id':_0x3f149c[_0x5051('0x37')]['id']}})['then'](handleEntityNotFound(_0x202e8e,null))[_0x5051('0x19')](saveUpdates(_0x3f149c['body'],null))[_0x5051('0x19')](respondWithResult(_0x202e8e,null))['catch'](handleError(_0x202e8e,null));};exports['destroy']=function(_0x3ff7c6,_0x44a855){return db[_0x5051('0x2a')]['find']({'where':{'id':_0x3ff7c6['params']['id']}})['then'](handleEntityNotFound(_0x44a855,null))['then'](removeEntity(_0x44a855,null))[_0x5051('0x28')](handleError(_0x44a855,null));};exports[_0x5051('0x38')]=function(_0xbbe90a,_0x5365a5){return db[_0x5051('0x2a')][_0x5051('0x38')]()[_0x5051('0x19')](respondWithResult(_0x5365a5,null))['catch'](handleError(_0x5365a5,null));};exports[_0x5051('0x39')]=function(_0x5bbd33,_0x1d4a73){return db[_0x5051('0x3a')][_0x5051('0x34')]({'where':{'id':_0x5bbd33['params']['id']}})[_0x5051('0x19')](handleEntityNotFound(_0x1d4a73,null))[_0x5051('0x19')](function(_0x1b713c){if(_0x1b713c){return _0x1b713c['addMessage'](_0x5bbd33[_0x5051('0x36')][_0x5051('0x3b')],_[_0x5051('0x3c')](_0x5bbd33[_0x5051('0x36')],[_0x5051('0x3b'),'id'])||{});}})[_0x5051('0x19')](respondWithResult(_0x1d4a73,null))[_0x5051('0x28')](handleError(_0x1d4a73,null));};exports[_0x5051('0x3d')]=function(_0x3ae003,_0x1122e0){var _0x2383cb={'raw':![],'where':{}};var _0x169da3={};var _0x564981={'count':0x0,'rows':[]};return db[_0x5051('0x2a')][_0x5051('0x3e')]({'where':{'id':_0x3ae003[_0x5051('0x37')]['id']}})[_0x5051('0x19')](handleEntityNotFound(_0x1122e0,null))['then'](function(_0x117172){if(_0x117172){_0x169da3[_0x5051('0x2f')]=_[_0x5051('0x3f')](db[_0x5051('0x3a')][_0x5051('0x20')]);_0x169da3[_0x5051('0x26')]=_['keys'](_0x3ae003[_0x5051('0x26')]);_0x169da3['filters']=_[_0x5051('0x2c')](_0x169da3[_0x5051('0x2f')],_0x169da3[_0x5051('0x26')]);_0x2383cb[_0x5051('0x2d')]=_[_0x5051('0x2c')](_0x169da3[_0x5051('0x2f')],qs[_0x5051('0x40')](_0x3ae003['query'][_0x5051('0x40')]));_0x2383cb[_0x5051('0x2d')]=_0x2383cb[_0x5051('0x2d')][_0x5051('0x2e')]?_0x2383cb['attributes']:_0x169da3[_0x5051('0x2f')];if(!_0x3ae003['query'][_0x5051('0x41')](_0x5051('0x42'))){_0x2383cb[_0x5051('0x15')]=qs['limit'](_0x3ae003[_0x5051('0x26')][_0x5051('0x15')]);_0x2383cb[_0x5051('0x14')]=qs['offset'](_0x3ae003['query']['offset']);}_0x2383cb[_0x5051('0x43')]=qs['sort'](_0x3ae003[_0x5051('0x26')][_0x5051('0x44')]);_0x2383cb['where']=qs['filters'](_[_0x5051('0x45')](_0x3ae003[_0x5051('0x26')],_0x169da3[_0x5051('0x2b')]));_0x2383cb[_0x5051('0x46')][_0x5051('0x47')]=_0x117172['id'];if(_0x3ae003['query'][_0x5051('0x48')]){_0x2383cb[_0x5051('0x46')]=_[_0x5051('0x32')](_0x2383cb[_0x5051('0x46')],{'$or':_[_0x5051('0x1f')](_0x2383cb[_0x5051('0x2d')],function(_0x17e3da){var _0x1a2b81={};_0x1a2b81[_0x17e3da]={'$like':'%'+_0x3ae003[_0x5051('0x26')][_0x5051('0x48')]+'%'};return _0x1a2b81;})});}if(_0x3ae003['query']['$gte']){var _0x418d2e=_0x3ae003[_0x5051('0x26')][_0x5051('0x49')][_0x5051('0x4a')](',');var _0x4afd62={};_0x4afd62[_0x418d2e[0x0]]={'$gte':moment(_0x418d2e[0x1])[_0x5051('0x4b')](_0x5051('0x4c'))};_0x2383cb['where']=_[_0x5051('0x32')](_0x2383cb[_0x5051('0x46')],_0x4afd62);}_0x2383cb=_[_0x5051('0x32')]({},_0x2383cb,_0x3ae003[_0x5051('0x33')]);return db[_0x5051('0x3a')][_0x5051('0x16')]({'where':_0x2383cb[_0x5051('0x46')]})[_0x5051('0x19')](function(_0x580cd9){_0x564981['count']=_0x580cd9;if(_0x3ae003['query'][_0x5051('0x30')]){_0x2383cb[_0x5051('0x31')]=[{'all':!![]}];}return db[_0x5051('0x3a')][_0x5051('0x4d')](_0x2383cb);})[_0x5051('0x19')](function(_0x5ddd09){_0x564981['rows']=_0x5ddd09;return _0x564981;});}})['then'](respondWithFilteredResult(_0x1122e0,_0x2383cb))['catch'](handleError(_0x1122e0,null));};exports[_0x5051('0x4e')]=function(_0x2164ee,_0x1e9a98){return db[_0x5051('0x2a')][_0x5051('0x34')]({'where':{'id':_0x2164ee[_0x5051('0x37')]['id']}})[_0x5051('0x19')](handleEntityNotFound(_0x1e9a98,null))[_0x5051('0x19')](function(_0x472467){if(_0x472467){return _0x472467['setTags'](_0x2164ee[_0x5051('0x36')][_0x5051('0x3b')],_[_0x5051('0x3c')](_0x2164ee[_0x5051('0x36')],[_0x5051('0x3b'),'id'])||{})['spread'](function(){return db[_0x5051('0x4f')][_0x5051('0x4d')]({'attributes':['id','name',_0x5051('0x50')],'where':{'id':_0x2164ee[_0x5051('0x36')]['ids']}});})['then'](function(_0x272d5f){socket[_0x5051('0x51')]('faxInteractionTags:save',{'id':Number(_0x2164ee[_0x5051('0x37')]['id']),'tags':_0x272d5f||[]});return{'id':Number(_0x2164ee[_0x5051('0x37')]['id']),'tags':_0x272d5f||[]};});}})[_0x5051('0x19')](respondWithResult(_0x1e9a98,null))[_0x5051('0x28')](handleError(_0x1e9a98,null));};exports[_0x5051('0x52')]=function(_0x393d6f,_0x2694b3){return db[_0x5051('0x2a')][_0x5051('0x34')]({'where':{'id':_0x393d6f[_0x5051('0x37')]['id']}})[_0x5051('0x19')](handleEntityNotFound(_0x2694b3,null))[_0x5051('0x19')](function(_0x337286){if(_0x337286){return _0x337286[_0x5051('0x52')](_0x393d6f[_0x5051('0x26')][_0x5051('0x3b')]);}})[_0x5051('0x19')](respondWithStatusCode(_0x2694b3,null))[_0x5051('0x28')](handleError(_0x2694b3,null));};exports['download']=function(_0x3089c9,_0x38cfe5){var _0x1e72cc=moment()[_0x5051('0x53')]()[_0x5051('0x54')]();var _0x56ec13=path[_0x5051('0x55')](config[_0x5051('0x56')],_0x5051('0x57'),_0x5051('0x58'),'tmp');var _0x4e87a6=path[_0x5051('0x55')](config[_0x5051('0x56')],'server',_0x5051('0x58'),_0x5051('0x59'));var _0x1056ff=path[_0x5051('0x55')](_0x56ec13,_0x1e72cc);var _0x45a22a=util['format'](_0x5051('0x5a'),_0x3089c9[_0x5051('0x37')]['id'],_0x1e72cc);var _0x11af22=path['join'](_0x56ec13,_0x45a22a);var _0x200350=[];_0x200350[_0x5051('0x5b')]({'model':db[_0x5051('0x5c')],'as':_0x5051('0x5c'),'raw':!![]});var _0x14314c=[{'model':db[_0x5051('0x3a')],'as':_0x5051('0x5d'),'attributes':['id','body',_0x5051('0x5e')],'include':_0x200350}];return db[_0x5051('0x2a')]['find']({'where':{'id':_0x3089c9[_0x5051('0x37')]['id']},'include':_0x14314c})[_0x5051('0x19')](handleEntityNotFound(_0x38cfe5,null))[_0x5051('0x19')](function(_0x32a7f5){if(_0x32a7f5&&_0x32a7f5[_0x5051('0x5d')]){var _0x3dc747=_0x32a7f5[_0x5051('0x5f')]({'plain':!![]});fs['mkdirSync'](_0x1056ff);for(var _0x3fce77=0x0;_0x3fce77<_0x3dc747[_0x5051('0x5d')][_0x5051('0x2e')];_0x3fce77++){var _0x4ebd6a=_0x3dc747['Messages'][_0x3fce77]['Attachment'];if(_0x4ebd6a){var _0x1ac524=path[_0x5051('0x55')](_0x4e87a6,_0x4ebd6a[_0x5051('0x60')]);if(fs[_0x5051('0x61')](_0x1ac524)){fs[_0x5051('0x62')](_0x1ac524)[_0x5051('0x63')](fs[_0x5051('0x64')](path[_0x5051('0x55')](_0x1056ff,_0x4ebd6a[_0x5051('0x60')])));}}}return BPromise['resolve']()[_0x5051('0x19')](function(){return new BPromise(function(_0x296bb1,_0xc1fe49){zipdir(_0x1056ff,{'saveTo':_0x11af22},function(_0x1b03a2,_0x2dc6f5){if(_0x1b03a2)return _0xc1fe49(_0x1b03a2);return _0x296bb1(_0x2dc6f5);});})['then'](function(){return new BPromise(function(_0x23970e,_0x45987a){rimraf(_0x1056ff,function(_0x1f17be){if(_0x1f17be)_0x45987a(_0x1f17be);return _0x23970e();});});})[_0x5051('0x19')](function(){return _0x38cfe5[_0x5051('0x65')](_0x11af22,_0x45a22a,function(_0x30f155){if(_0x30f155){console[_0x5051('0x66')](_0x5051('0x67'),_0x30f155);}else{fs[_0x5051('0x68')](_0x11af22);}});});});}else{return _0x38cfe5[_0x5051('0x10')](0xc8);}})[_0x5051('0x28')](handleError(_0x38cfe5,null));};