ce9b1b5712aa99ffef33273f0d1b668f9a17e3de
[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 _0xc2e7=['./faxInteraction.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','update','then','error','name','index','map','FaxInteraction','rawAttributes','type','key','getOptions','findAll','fax','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','find','create','body','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','order','sort','pick','where','FaxInteractionId','filter','$gte','format','merge','rows','addTags','spread','Tag','color','emit','faxInteractionTags:save','removeTags','unix','toString','join','root','tmp','server','files','attachments','push','Attachment','get','mkdirSync','Messages','existsSync','createReadStream','pipe','createWriteStream','basename','resolve','download','log','err','unlinkSync','rimraf','util','path','../../components/interaction/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter'];(function(_0x501b41,_0x7a3143){var _0x539c54=function(_0x53ba41){while(--_0x53ba41){_0x501b41['push'](_0x501b41['shift']());}};_0x539c54(++_0x7a3143);}(_0xc2e7,0x1e8));var _0x7c2e=function(_0x5b1d6d,_0x29c9f0){_0x5b1d6d=_0x5b1d6d-0x0;var _0xfcfcc4=_0xc2e7[_0x5b1d6d];return _0xfcfcc4;};'use strict';var rimraf=require(_0x7c2e('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x7c2e('0x1'));var path=require(_0x7c2e('0x2'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x7c2e('0x3'));var qs=require(_0x7c2e('0x4'));var logger=require(_0x7c2e('0x5'))('api');var config=require(_0x7c2e('0x6'));var db=require(_0x7c2e('0x7'))['db'];config[_0x7c2e('0x8')]=_[_0x7c2e('0x9')](config[_0x7c2e('0x8')],{'host':_0x7c2e('0xa'),'port':0x18eb});var socket=require(_0x7c2e('0xb'))(new Redis(config[_0x7c2e('0x8')]));require(_0x7c2e('0xc'))[_0x7c2e('0xd')](socket);function respondWithStatusCode(_0x475d9a,_0x8ea99f){_0x8ea99f=_0x8ea99f||0xcc;return function(_0xaa0592){if(_0xaa0592){return _0x475d9a[_0x7c2e('0xe')](_0x8ea99f);}return _0x475d9a['status'](_0x8ea99f)[_0x7c2e('0xf')]();};}function respondWithResult(_0x3ba7ef,_0x38a756){_0x38a756=_0x38a756||0xc8;return function(_0x1b2b46){if(_0x1b2b46){return _0x3ba7ef[_0x7c2e('0x10')](_0x38a756)[_0x7c2e('0x11')](_0x1b2b46);}};}function respondWithFilteredResult(_0x490e9f,_0x5c45d6){return function(_0x4a2366){if(_0x4a2366){var _0x53f348=typeof _0x5c45d6[_0x7c2e('0x12')]===_0x7c2e('0x13')&&typeof _0x5c45d6['limit']===_0x7c2e('0x13');var _0x4fa644=_0x4a2366[_0x7c2e('0x14')];var _0x30fbe3=_0x53f348?0x0:_0x5c45d6['offset'];var _0x44f0cc=_0x53f348?_0x4a2366['count']:_0x5c45d6['offset']+_0x5c45d6[_0x7c2e('0x15')];var _0x2b16cb;if(_0x44f0cc>=_0x4fa644){_0x44f0cc=_0x4fa644;_0x2b16cb=0xc8;}else{_0x2b16cb=0xce;}_0x490e9f['status'](_0x2b16cb);return _0x490e9f['set'](_0x7c2e('0x16'),_0x30fbe3+'-'+_0x44f0cc+'/'+_0x4fa644)[_0x7c2e('0x11')](_0x4a2366);}return null;};}function saveUpdates(_0x3d1e46){return function(_0x168156){if(_0x168156){return _0x168156[_0x7c2e('0x17')](_0x3d1e46)[_0x7c2e('0x18')](function(_0x3ed7b8){return _0x3ed7b8;});}return null;};}function removeEntity(_0x2f17f){return function(_0x392d96){if(_0x392d96){return _0x392d96['destroy']()[_0x7c2e('0x18')](function(){_0x2f17f[_0x7c2e('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dc82d){return function(_0x3d2fb2){if(!_0x3d2fb2){_0x4dc82d[_0x7c2e('0xe')](0x194);}return _0x3d2fb2;};}function handleError(_0x2f2f81,_0x4f8679){_0x4f8679=_0x4f8679||0x1f4;return function(_0x58866b){logger[_0x7c2e('0x19')](_0x58866b['stack']);if(_0x58866b[_0x7c2e('0x1a')]){delete _0x58866b[_0x7c2e('0x1a')];}_0x2f2f81[_0x7c2e('0x10')](_0x4f8679)['send'](_0x58866b);};}exports[_0x7c2e('0x1b')]=function(_0x3d424d,_0xf3834c){var _0x4f50d5={};var _0x3c8fda=_[_0x7c2e('0x1c')](db[_0x7c2e('0x1d')][_0x7c2e('0x1e')],function(_0x45c7bf){return{'name':_0x45c7bf['fieldName'],'type':_0x45c7bf[_0x7c2e('0x1f')][_0x7c2e('0x20')]};});_0x4f50d5=qs[_0x7c2e('0x21')](_0x3c8fda,_0x3d424d);return interaction[_0x7c2e('0x22')](_0x7c2e('0x23'),_0x3d424d[_0x7c2e('0x24')],_0x3d424d[_0x7c2e('0x25')],_0x4f50d5,_0x3c8fda)[_0x7c2e('0x18')](respondWithFilteredResult(_0xf3834c,_0x4f50d5))[_0x7c2e('0x26')](handleError(_0xf3834c,null));};exports[_0x7c2e('0x27')]=function(_0x279c4a,_0x3c4319){var _0x19e013={'raw':![],'where':{'id':_0x279c4a[_0x7c2e('0x28')]['id']}},_0x557af5={};_0x557af5[_0x7c2e('0x29')]=_[_0x7c2e('0x2a')](db[_0x7c2e('0x1d')]['rawAttributes']);_0x557af5[_0x7c2e('0x24')]=_['keys'](_0x279c4a[_0x7c2e('0x24')]);_0x557af5[_0x7c2e('0x2b')]=_[_0x7c2e('0x2c')](_0x557af5[_0x7c2e('0x29')],_0x557af5[_0x7c2e('0x24')]);_0x19e013[_0x7c2e('0x2d')]=_[_0x7c2e('0x2c')](_0x557af5[_0x7c2e('0x29')],qs[_0x7c2e('0x2e')](_0x279c4a[_0x7c2e('0x24')][_0x7c2e('0x2e')]));_0x19e013['attributes']=_0x19e013['attributes'][_0x7c2e('0x2f')]?_0x19e013[_0x7c2e('0x2d')]:_0x557af5[_0x7c2e('0x29')];if(_0x279c4a[_0x7c2e('0x24')][_0x7c2e('0x30')]){_0x19e013[_0x7c2e('0x31')]=[{'all':!![]}];}_0x19e013=_['merge']({},_0x19e013,_0x279c4a['options']);return db[_0x7c2e('0x1d')][_0x7c2e('0x32')](_0x19e013)[_0x7c2e('0x18')](handleEntityNotFound(_0x3c4319,null))['then'](respondWithResult(_0x3c4319,null))['catch'](handleError(_0x3c4319,null));};exports[_0x7c2e('0x33')]=function(_0x57aa89,_0x2e2345){return db[_0x7c2e('0x1d')]['create'](_0x57aa89['body'],{})[_0x7c2e('0x18')](respondWithResult(_0x2e2345,0xc9))['catch'](handleError(_0x2e2345,null));};exports[_0x7c2e('0x17')]=function(_0x5a1b13,_0x545bda){if(_0x5a1b13['body']['id']){delete _0x5a1b13[_0x7c2e('0x34')]['id'];}return db['FaxInteraction'][_0x7c2e('0x32')]({'where':{'id':_0x5a1b13['params']['id']}})['then'](handleEntityNotFound(_0x545bda,null))[_0x7c2e('0x18')](saveUpdates(_0x5a1b13[_0x7c2e('0x34')],null))[_0x7c2e('0x18')](respondWithResult(_0x545bda,null))['catch'](handleError(_0x545bda,null));};exports['destroy']=function(_0x242331,_0x457151){return db[_0x7c2e('0x1d')][_0x7c2e('0x32')]({'where':{'id':_0x242331['params']['id']}})[_0x7c2e('0x18')](handleEntityNotFound(_0x457151,null))[_0x7c2e('0x18')](removeEntity(_0x457151,null))[_0x7c2e('0x26')](handleError(_0x457151,null));};exports['describe']=function(_0x4ed378,_0x17c18a){return db[_0x7c2e('0x1d')][_0x7c2e('0x35')]()[_0x7c2e('0x18')](respondWithResult(_0x17c18a,null))['catch'](handleError(_0x17c18a,null));};exports[_0x7c2e('0x36')]=function(_0x198e8e,_0x459aa2){return db[_0x7c2e('0x37')]['find']({'where':{'id':_0x198e8e['params']['id']}})['then'](handleEntityNotFound(_0x459aa2,null))[_0x7c2e('0x18')](function(_0x446211){if(_0x446211){return _0x446211[_0x7c2e('0x36')](_0x198e8e[_0x7c2e('0x34')][_0x7c2e('0x38')],_[_0x7c2e('0x39')](_0x198e8e[_0x7c2e('0x34')],['ids','id'])||{});}})[_0x7c2e('0x18')](respondWithResult(_0x459aa2,null))['catch'](handleError(_0x459aa2,null));};exports[_0x7c2e('0x3a')]=function(_0x1f25e5,_0x22fb8f){var _0x88cd2e={'raw':![],'where':{}};var _0x2a6f58={};var _0x111e86={'count':0x0,'rows':[]};return db[_0x7c2e('0x1d')][_0x7c2e('0x3b')]({'where':{'id':_0x1f25e5['params']['id']}})['then'](handleEntityNotFound(_0x22fb8f,null))[_0x7c2e('0x18')](function(_0x5a5603){if(_0x5a5603){_0x2a6f58[_0x7c2e('0x29')]=_['keys'](db[_0x7c2e('0x37')][_0x7c2e('0x1e')]);_0x2a6f58[_0x7c2e('0x24')]=_[_0x7c2e('0x2a')](_0x1f25e5['query']);_0x2a6f58['filters']=_['intersection'](_0x2a6f58[_0x7c2e('0x29')],_0x2a6f58[_0x7c2e('0x24')]);_0x88cd2e[_0x7c2e('0x2d')]=_['intersection'](_0x2a6f58[_0x7c2e('0x29')],qs[_0x7c2e('0x2e')](_0x1f25e5[_0x7c2e('0x24')]['fields']));_0x88cd2e[_0x7c2e('0x2d')]=_0x88cd2e[_0x7c2e('0x2d')][_0x7c2e('0x2f')]?_0x88cd2e['attributes']:_0x2a6f58['model'];if(!_0x1f25e5[_0x7c2e('0x24')]['hasOwnProperty']('nolimit')){_0x88cd2e[_0x7c2e('0x15')]=qs[_0x7c2e('0x15')](_0x1f25e5['query']['limit']);_0x88cd2e['offset']=qs[_0x7c2e('0x12')](_0x1f25e5[_0x7c2e('0x24')]['offset']);}_0x88cd2e[_0x7c2e('0x3c')]=qs['sort'](_0x1f25e5['query'][_0x7c2e('0x3d')]);_0x88cd2e['where']=qs[_0x7c2e('0x2b')](_[_0x7c2e('0x3e')](_0x1f25e5[_0x7c2e('0x24')],_0x2a6f58['filters']));_0x88cd2e[_0x7c2e('0x3f')][_0x7c2e('0x40')]=_0x5a5603['id'];if(_0x1f25e5[_0x7c2e('0x24')][_0x7c2e('0x41')]){_0x88cd2e['where']=_['merge'](_0x88cd2e[_0x7c2e('0x3f')],{'$or':_['map'](_0x88cd2e[_0x7c2e('0x2d')],function(_0x505912){var _0xf1d14f={};_0xf1d14f[_0x505912]={'$like':'%'+_0x1f25e5[_0x7c2e('0x24')]['filter']+'%'};return _0xf1d14f;})});}if(_0x1f25e5[_0x7c2e('0x24')]['$gte']){var _0x549326=_0x1f25e5[_0x7c2e('0x24')][_0x7c2e('0x42')]['split'](',');var _0x1ba942={};_0x1ba942[_0x549326[0x0]]={'$gte':moment(_0x549326[0x1])[_0x7c2e('0x43')]('YYYY-MM-DD\x20HH:mm:ss')};_0x88cd2e['where']=_[_0x7c2e('0x44')](_0x88cd2e[_0x7c2e('0x3f')],_0x1ba942);}_0x88cd2e=_[_0x7c2e('0x44')]({},_0x88cd2e,_0x1f25e5['options']);return db[_0x7c2e('0x37')]['count']({'where':_0x88cd2e[_0x7c2e('0x3f')]})[_0x7c2e('0x18')](function(_0x394d75){_0x111e86[_0x7c2e('0x14')]=_0x394d75;if(_0x1f25e5[_0x7c2e('0x24')][_0x7c2e('0x30')]){_0x88cd2e[_0x7c2e('0x31')]=[{'all':!![]}];}return db[_0x7c2e('0x37')][_0x7c2e('0x22')](_0x88cd2e);})[_0x7c2e('0x18')](function(_0x478942){_0x111e86[_0x7c2e('0x45')]=_0x478942;return _0x111e86;});}})[_0x7c2e('0x18')](respondWithFilteredResult(_0x22fb8f,_0x88cd2e))['catch'](handleError(_0x22fb8f,null));};exports[_0x7c2e('0x46')]=function(_0x5c4411,_0x36e517){return db['FaxInteraction']['find']({'where':{'id':_0x5c4411['params']['id']}})['then'](handleEntityNotFound(_0x36e517,null))[_0x7c2e('0x18')](function(_0x21c93a){if(_0x21c93a){return _0x21c93a['setTags'](_0x5c4411[_0x7c2e('0x34')][_0x7c2e('0x38')],_[_0x7c2e('0x39')](_0x5c4411[_0x7c2e('0x34')],[_0x7c2e('0x38'),'id'])||{})[_0x7c2e('0x47')](function(){return db[_0x7c2e('0x48')]['findAll']({'attributes':['id',_0x7c2e('0x1a'),_0x7c2e('0x49')],'where':{'id':_0x5c4411[_0x7c2e('0x34')][_0x7c2e('0x38')]}});})[_0x7c2e('0x18')](function(_0x1f4b41){socket[_0x7c2e('0x4a')](_0x7c2e('0x4b'),{'id':Number(_0x5c4411[_0x7c2e('0x28')]['id']),'tags':_0x1f4b41||[]});return{'id':Number(_0x5c4411['params']['id']),'tags':_0x1f4b41||[]};});}})[_0x7c2e('0x18')](respondWithResult(_0x36e517,null))[_0x7c2e('0x26')](handleError(_0x36e517,null));};exports[_0x7c2e('0x4c')]=function(_0x53c789,_0x2c8736){return db[_0x7c2e('0x1d')][_0x7c2e('0x32')]({'where':{'id':_0x53c789[_0x7c2e('0x28')]['id']}})['then'](handleEntityNotFound(_0x2c8736,null))['then'](function(_0x2691e4){if(_0x2691e4){return _0x2691e4[_0x7c2e('0x4c')](_0x53c789[_0x7c2e('0x24')][_0x7c2e('0x38')]);}})[_0x7c2e('0x18')](respondWithStatusCode(_0x2c8736,null))['catch'](handleError(_0x2c8736,null));};exports['download']=function(_0x4fee47,_0x5f10ef){var _0x4e228e=moment()[_0x7c2e('0x4d')]()[_0x7c2e('0x4e')]();var _0x5ef3ba=path[_0x7c2e('0x4f')](config[_0x7c2e('0x50')],'server','files',_0x7c2e('0x51'));var _0x32775e=path[_0x7c2e('0x4f')](config[_0x7c2e('0x50')],_0x7c2e('0x52'),_0x7c2e('0x53'),_0x7c2e('0x54'));var _0xe7b8d7=path[_0x7c2e('0x4f')](_0x5ef3ba,_0x4e228e);var _0x50df42=util['format']('transcript-%d-%s.zip',_0x4fee47['params']['id'],_0x4e228e);var _0x4f946a=path[_0x7c2e('0x4f')](_0x5ef3ba,_0x50df42);var _0x535705=[];_0x535705[_0x7c2e('0x55')]({'model':db[_0x7c2e('0x56')],'as':_0x7c2e('0x56'),'raw':!![]});var _0x593062=[{'model':db[_0x7c2e('0x37')],'as':'Messages','attributes':['id',_0x7c2e('0x34'),'createdAt'],'include':_0x535705}];return db[_0x7c2e('0x1d')]['find']({'where':{'id':_0x4fee47[_0x7c2e('0x28')]['id']},'include':_0x593062})['then'](handleEntityNotFound(_0x5f10ef,null))[_0x7c2e('0x18')](function(_0xdff8e1){if(_0xdff8e1&&_0xdff8e1['Messages']){var _0x38ae26=_0xdff8e1[_0x7c2e('0x57')]({'plain':!![]});fs[_0x7c2e('0x58')](_0xe7b8d7);for(var _0x5a0130=0x0;_0x5a0130<_0x38ae26[_0x7c2e('0x59')]['length'];_0x5a0130++){var _0x3e0dc5=_0x38ae26[_0x7c2e('0x59')][_0x5a0130][_0x7c2e('0x56')];if(_0x3e0dc5){var _0x548647=path['join'](_0x32775e,_0x3e0dc5['basename']);if(fs[_0x7c2e('0x5a')](_0x548647)){fs[_0x7c2e('0x5b')](_0x548647)[_0x7c2e('0x5c')](fs[_0x7c2e('0x5d')](path[_0x7c2e('0x4f')](_0xe7b8d7,_0x3e0dc5[_0x7c2e('0x5e')])));}}}return BPromise[_0x7c2e('0x5f')]()[_0x7c2e('0x18')](function(){return new BPromise(function(_0x726aa7,_0x86717a){zipdir(_0xe7b8d7,{'saveTo':_0x4f946a},function(_0x3bf37d,_0x199240){if(_0x3bf37d)return _0x86717a(_0x3bf37d);return _0x726aa7(_0x199240);});})['then'](function(){return new BPromise(function(_0x156bce,_0x5e3687){rimraf(_0xe7b8d7,function(_0xe064e7){if(_0xe064e7)_0x5e3687(_0xe064e7);return _0x156bce();});});})['then'](function(){return _0x5f10ef[_0x7c2e('0x60')](_0x4f946a,_0x50df42,function(_0x1fca82){if(_0x1fca82){console[_0x7c2e('0x61')](_0x7c2e('0x62'),_0x1fca82);}else{fs[_0x7c2e('0x63')](_0x4f946a);}});});});}else{return _0x5f10ef['sendStatus'](0xc8);}})['catch'](handleError(_0x5f10ef,null));};