270f44640436d38d6e6f8e02b75b53698e80f1aa
[motion2.git] / server / api / analyticExtractedReport / analyticExtractedReport.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 _0xf0ec=['jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','end','status','json','undefined','limit','count','offset','Content-Range','apply','update','then','destroy','get','ExtractedReports','UserProfileResource','sendStatus','stack','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','pick','filters','filter','where','merge','VIRTUAL','options','rows','show','params','includeAll','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','root','ValidationError','exists','server/files/reports','%s.%s','toLowerCase','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2dce88,_0x3ba592){var _0x37ec56=function(_0x407a37){while(--_0x407a37){_0x2dce88['push'](_0x2dce88['shift']());}};_0x37ec56(++_0x3ba592);}(_0xf0ec,0xa8));var _0xcf0e=function(_0x2eb5bc,_0x4634c6){_0x2eb5bc=_0x2eb5bc-0x0;var _0x51c7b1=_0xf0ec[_0x2eb5bc];return _0x51c7b1;};'use strict';var emlformat=require(_0xcf0e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcf0e('0x1'));var jsonpatch=require(_0xcf0e('0x2'));var rp=require(_0xcf0e('0x3'));var moment=require(_0xcf0e('0x4'));var BPromise=require(_0xcf0e('0x5'));var Mustache=require(_0xcf0e('0x6'));var util=require(_0xcf0e('0x7'));var path=require(_0xcf0e('0x8'));var sox=require(_0xcf0e('0x9'));var csv=require(_0xcf0e('0xa'));var ejs=require(_0xcf0e('0xb'));var fs=require('fs');var fs_extra=require(_0xcf0e('0xc'));var _=require(_0xcf0e('0xd'));var squel=require(_0xcf0e('0xe'));var crypto=require(_0xcf0e('0xf'));var jsforce=require(_0xcf0e('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcf0e('0x11'));var Papa=require(_0xcf0e('0x12'));var Redis=require(_0xcf0e('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xcf0e('0x14'));var as=require(_0xcf0e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcf0e('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcf0e('0x17'));var db=require(_0xcf0e('0x18'))['db'];function respondWithStatusCode(_0x18dc63,_0x13f49d){_0x13f49d=_0x13f49d||0xcc;return function(_0x2e0b3f){if(_0x2e0b3f){return _0x18dc63['sendStatus'](_0x13f49d);}return _0x18dc63['status'](_0x13f49d)[_0xcf0e('0x19')]();};}function respondWithResult(_0x18338e,_0x457909){_0x457909=_0x457909||0xc8;return function(_0x801c71){if(_0x801c71){return _0x18338e[_0xcf0e('0x1a')](_0x457909)[_0xcf0e('0x1b')](_0x801c71);}};}function respondWithFilteredResult(_0x406cc6,_0x4f08d8){return function(_0x2b1d67){if(_0x2b1d67){var _0x3ed1d5=typeof _0x4f08d8['offset']===_0xcf0e('0x1c')&&typeof _0x4f08d8[_0xcf0e('0x1d')]===_0xcf0e('0x1c');var _0x2928f8=_0x2b1d67[_0xcf0e('0x1e')];var _0x1ba682=_0x3ed1d5?0x0:_0x4f08d8[_0xcf0e('0x1f')];var _0x3bcf79=_0x3ed1d5?_0x2b1d67[_0xcf0e('0x1e')]:_0x4f08d8[_0xcf0e('0x1f')]+_0x4f08d8[_0xcf0e('0x1d')];var _0x45a2ac;if(_0x3bcf79>=_0x2928f8){_0x3bcf79=_0x2928f8;_0x45a2ac=0xc8;}else{_0x45a2ac=0xce;}_0x406cc6[_0xcf0e('0x1a')](_0x45a2ac);return _0x406cc6['set'](_0xcf0e('0x20'),_0x1ba682+'-'+_0x3bcf79+'/'+_0x2928f8)[_0xcf0e('0x1b')](_0x2b1d67);}return null;};}function patchUpdates(_0x470885){return function(_0x303eef){try{jsonpatch[_0xcf0e('0x21')](_0x303eef,_0x470885,!![]);}catch(_0x4c6e2a){return BPromise['reject'](_0x4c6e2a);}return _0x303eef['save']();};}function saveUpdates(_0x339b0f,_0x41eabe){return function(_0x452e14){if(_0x452e14){return _0x452e14[_0xcf0e('0x22')](_0x339b0f)[_0xcf0e('0x23')](function(_0x9e7ac0){return _0x9e7ac0;});}return null;};}function removeEntity(_0x50b6d2,_0x5778ab){return function(_0x45127f){if(_0x45127f){return _0x45127f[_0xcf0e('0x24')]()[_0xcf0e('0x23')](function(){var _0x4fa458=_0x45127f[_0xcf0e('0x25')]({'plain':!![]});var _0x2263c9=_0xcf0e('0x26');return db[_0xcf0e('0x27')][_0xcf0e('0x24')]({'where':{'type':_0x2263c9,'resourceId':_0x4fa458['id']}})['then'](function(){return _0x45127f;});})[_0xcf0e('0x23')](function(){_0x50b6d2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cc9ae,_0x2fc3df){return function(_0x2dab0b){if(!_0x2dab0b){_0x1cc9ae[_0xcf0e('0x28')](0x194);}return _0x2dab0b;};}function handleError(_0x25ae0f,_0x5c04b8){_0x5c04b8=_0x5c04b8||0x1f4;return function(_0x526394){logger['error'](_0x526394[_0xcf0e('0x29')]);if(_0x526394[_0xcf0e('0x2a')]){delete _0x526394['name'];}_0x25ae0f[_0xcf0e('0x1a')](_0x5c04b8)[_0xcf0e('0x2b')](_0x526394);};}exports['index']=function(_0x54972c,_0x5a8a49){var _0x14de05={},_0x229d6d={},_0x40e736={'count':0x0,'rows':[]};var _0x1e4aa5=_[_0xcf0e('0x2c')](db[_0xcf0e('0x2d')][_0xcf0e('0x2e')],function(_0x167200){return{'name':_0x167200[_0xcf0e('0x2f')],'type':_0x167200[_0xcf0e('0x30')][_0xcf0e('0x31')]};});_0x229d6d[_0xcf0e('0x32')]=_[_0xcf0e('0x2c')](_0x1e4aa5,_0xcf0e('0x2a'));_0x229d6d[_0xcf0e('0x33')]=_[_0xcf0e('0x34')](_0x54972c['query']);_0x229d6d['filters']=_['intersection'](_0x229d6d[_0xcf0e('0x32')],_0x229d6d['query']);_0x14de05['attributes']=_[_0xcf0e('0x35')](_0x229d6d[_0xcf0e('0x32')],qs[_0xcf0e('0x36')](_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x36')]));_0x14de05[_0xcf0e('0x37')]=_0x14de05[_0xcf0e('0x37')][_0xcf0e('0x38')]?_0x14de05[_0xcf0e('0x37')]:_0x229d6d['model'];if(!_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x39')](_0xcf0e('0x3a'))){_0x14de05[_0xcf0e('0x1d')]=qs[_0xcf0e('0x1d')](_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x1d')]);_0x14de05[_0xcf0e('0x1f')]=qs[_0xcf0e('0x1f')](_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x1f')]);}_0x14de05['order']=qs['sort'](_0x54972c[_0xcf0e('0x33')]['sort']);_0x14de05['where']=qs['filters'](_[_0xcf0e('0x3b')](_0x54972c[_0xcf0e('0x33')],_0x229d6d[_0xcf0e('0x3c')]),_0x1e4aa5);if(_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x3d')]){_0x14de05[_0xcf0e('0x3e')]=_[_0xcf0e('0x3f')](_0x14de05[_0xcf0e('0x3e')],{'$or':_[_0xcf0e('0x2c')](_0x1e4aa5,function(_0x596b6d){if(_0x596b6d[_0xcf0e('0x30')]!==_0xcf0e('0x40')){var _0x4adb49={};_0x4adb49[_0x596b6d[_0xcf0e('0x2a')]]={'$like':'%'+_0x54972c[_0xcf0e('0x33')][_0xcf0e('0x3d')]+'%'};return _0x4adb49;}})});}_0x14de05=_[_0xcf0e('0x3f')]({},_0x14de05,_0x54972c[_0xcf0e('0x41')]);var _0x47409e={'where':_0x14de05['where']};return db[_0xcf0e('0x2d')][_0xcf0e('0x1e')](_0x47409e)[_0xcf0e('0x23')](function(_0x291741){_0x40e736[_0xcf0e('0x1e')]=_0x291741;if(_0x54972c['query']['includeAll']){_0x14de05['include']=[{'all':!![]}];}return db[_0xcf0e('0x2d')]['findAll'](_0x14de05);})[_0xcf0e('0x23')](function(_0x596f4c){_0x40e736[_0xcf0e('0x42')]=_0x596f4c;return _0x40e736;})['then'](respondWithFilteredResult(_0x5a8a49,_0x14de05))['catch'](handleError(_0x5a8a49,null));};exports[_0xcf0e('0x43')]=function(_0x4b432a,_0x948eb8){var _0xe781b1={'raw':!![],'where':{'id':_0x4b432a[_0xcf0e('0x44')]['id']}},_0x3e6fe9={};_0x3e6fe9['model']=_['keys'](db[_0xcf0e('0x2d')][_0xcf0e('0x2e')]);_0x3e6fe9[_0xcf0e('0x33')]=_[_0xcf0e('0x34')](_0x4b432a['query']);_0x3e6fe9['filters']=_[_0xcf0e('0x35')](_0x3e6fe9['model'],_0x3e6fe9[_0xcf0e('0x33')]);_0xe781b1[_0xcf0e('0x37')]=_['intersection'](_0x3e6fe9[_0xcf0e('0x32')],qs[_0xcf0e('0x36')](_0x4b432a[_0xcf0e('0x33')]['fields']));_0xe781b1[_0xcf0e('0x37')]=_0xe781b1[_0xcf0e('0x37')][_0xcf0e('0x38')]?_0xe781b1[_0xcf0e('0x37')]:_0x3e6fe9[_0xcf0e('0x32')];if(_0x4b432a[_0xcf0e('0x33')][_0xcf0e('0x45')]){_0xe781b1[_0xcf0e('0x46')]=[{'all':!![]}];}_0xe781b1=_[_0xcf0e('0x3f')]({},_0xe781b1,_0x4b432a['options']);return db['AnalyticExtractedReport'][_0xcf0e('0x47')](_0xe781b1)['then'](handleEntityNotFound(_0x948eb8,null))[_0xcf0e('0x23')](respondWithResult(_0x948eb8,null))[_0xcf0e('0x48')](handleError(_0x948eb8,null));};exports[_0xcf0e('0x49')]=function(_0x515144,_0x58ed99){return db[_0xcf0e('0x2d')][_0xcf0e('0x49')](_0x515144[_0xcf0e('0x4a')],{})[_0xcf0e('0x23')](function(_0x480f29){var _0x55113b=_0x515144[_0xcf0e('0x4b')]['get']({'plain':!![]});if(!_0x55113b)throw new Error(_0xcf0e('0x4c'));if(_0x55113b['role']===_0xcf0e('0x4b')){var _0x10ddcd=_0x480f29[_0xcf0e('0x25')]({'plain':!![]});var _0x32f4fe=_0xcf0e('0x26');return db[_0xcf0e('0x4d')][_0xcf0e('0x47')]({'where':{'name':_0x32f4fe,'userProfileId':_0x55113b[_0xcf0e('0x4e')]},'raw':!![]})[_0xcf0e('0x23')](function(_0x4c3773){if(_0x4c3773&&_0x4c3773[_0xcf0e('0x4f')]===0x0){return db['UserProfileResource'][_0xcf0e('0x49')]({'name':_0x10ddcd[_0xcf0e('0x2a')],'resourceId':_0x10ddcd['id'],'type':_0x4c3773['name'],'sectionId':_0x4c3773['id']},{})[_0xcf0e('0x23')](function(){return _0x480f29;});}else{return _0x480f29;}})[_0xcf0e('0x48')](function(_0x316001){logger[_0xcf0e('0x50')](_0xcf0e('0x51'),_0x316001);throw _0x316001;});}return _0x480f29;})['then'](respondWithResult(_0x58ed99,0xc9))['catch'](handleError(_0x58ed99,null));};exports[_0xcf0e('0x22')]=function(_0x3df118,_0x3347db){if(_0x3df118[_0xcf0e('0x4a')]['id']){delete _0x3df118[_0xcf0e('0x4a')]['id'];}return db[_0xcf0e('0x2d')][_0xcf0e('0x47')]({'where':{'id':_0x3df118['params']['id']}})['then'](handleEntityNotFound(_0x3347db,null))[_0xcf0e('0x23')](saveUpdates(_0x3df118[_0xcf0e('0x4a')],null))[_0xcf0e('0x23')](respondWithResult(_0x3347db,null))[_0xcf0e('0x48')](handleError(_0x3347db,null));};exports[_0xcf0e('0x24')]=function(_0x483ae9,_0x112ec2){return db['AnalyticExtractedReport'][_0xcf0e('0x47')]({'where':{'id':_0x483ae9[_0xcf0e('0x44')]['id']}})['then'](handleEntityNotFound(_0x112ec2,null))[_0xcf0e('0x23')](removeEntity(_0x112ec2,null))[_0xcf0e('0x48')](handleError(_0x112ec2,null));};exports[_0xcf0e('0x52')]=function(_0x580f0c,_0x244ba1,_0x20e893){return db[_0xcf0e('0x2d')]['find']({'where':{'id':_0x580f0c['params']['id']},'attributes':[_0xcf0e('0x2a'),_0xcf0e('0x53'),_0xcf0e('0x54'),_0xcf0e('0x55')],'raw':!![]})[_0xcf0e('0x23')](handleEntityNotFound(_0x244ba1,null))[_0xcf0e('0x23')](function(_0x346d48){if(_0x346d48){if(!fs['existsSync'](path['join'](config[_0xcf0e('0x56')],'server/files/reports',_0x346d48['savename']))){throw new db['Sequelize'][(_0xcf0e('0x57'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x580f0c[_0xcf0e('0x33')][_0xcf0e('0x58')]){return _0x244ba1[_0xcf0e('0x28')](0xc8);}return _0x244ba1['download'](path['join'](config['root'],_0xcf0e('0x59'),_0x346d48[_0xcf0e('0x54')]),util['format'](_0xcf0e('0x5a'),_0x346d48[_0xcf0e('0x53')]||_0x346d48[_0xcf0e('0x2a')],_0x346d48[_0xcf0e('0x55')][_0xcf0e('0x5b')]()));}})[_0xcf0e('0x48')](handleError(_0x244ba1,null));};