3cf566e0f24b81ebf536e6936001fb28a5e42278
[motion2.git] / server / api / schedule / schedule.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 _0xa04b=['update','then','destroy','Scheduler','UserProfileResource','sendStatus','stack','name','send','index','map','Schedule','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','error','run','../../config/schedule','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','save'];(function(_0x43da39,_0x35bb58){var _0x54959e=function(_0x23ba2e){while(--_0x23ba2e){_0x43da39['push'](_0x43da39['shift']());}};_0x54959e(++_0x35bb58);}(_0xa04b,0x12e));var _0xba04=function(_0x157f6f,_0x140aa5){_0x157f6f=_0x157f6f-0x0;var _0x3ddb2d=_0xa04b[_0x157f6f];return _0x3ddb2d;};'use strict';var emlformat=require(_0xba04('0x0'));var rimraf=require(_0xba04('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xba04('0x2'));var rp=require(_0xba04('0x3'));var moment=require(_0xba04('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xba04('0x5'));var path=require(_0xba04('0x6'));var sox=require(_0xba04('0x7'));var csv=require(_0xba04('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba04('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xba04('0xa'));var jsforce=require(_0xba04('0xb'));var deskjs=require(_0xba04('0xc'));var toCsv=require('to-csv');var querystring=require(_0xba04('0xd'));var Papa=require(_0xba04('0xe'));var Redis=require(_0xba04('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xba04('0x10'));var as=require(_0xba04('0x11'));var hardwareService=require(_0xba04('0x12'));var logger=require(_0xba04('0x13'))('api');var utils=require(_0xba04('0x14'));var config=require(_0xba04('0x15'));var licenseUtil=require(_0xba04('0x16'));var db=require(_0xba04('0x17'))['db'];function respondWithStatusCode(_0x417eec,_0x569e81){_0x569e81=_0x569e81||0xcc;return function(_0x3578cd){if(_0x3578cd){return _0x417eec['sendStatus'](_0x569e81);}return _0x417eec[_0xba04('0x18')](_0x569e81)[_0xba04('0x19')]();};}function respondWithResult(_0x5e6ece,_0x593058){_0x593058=_0x593058||0xc8;return function(_0x2ad405){if(_0x2ad405){return _0x5e6ece[_0xba04('0x18')](_0x593058)[_0xba04('0x1a')](_0x2ad405);}};}function respondWithFilteredResult(_0x1dc407,_0x14e501){return function(_0x18466e){if(_0x18466e){var _0xc8c54e=typeof _0x14e501[_0xba04('0x1b')]===_0xba04('0x1c')&&typeof _0x14e501['limit']===_0xba04('0x1c');var _0x23075b=_0x18466e[_0xba04('0x1d')];var _0x36453d=_0xc8c54e?0x0:_0x14e501['offset'];var _0x1cb82c=_0xc8c54e?_0x18466e[_0xba04('0x1d')]:_0x14e501['offset']+_0x14e501['limit'];var _0x1ef2fc;if(_0x1cb82c>=_0x23075b){_0x1cb82c=_0x23075b;_0x1ef2fc=0xc8;}else{_0x1ef2fc=0xce;}_0x1dc407[_0xba04('0x18')](_0x1ef2fc);return _0x1dc407[_0xba04('0x1e')](_0xba04('0x1f'),_0x36453d+'-'+_0x1cb82c+'/'+_0x23075b)[_0xba04('0x1a')](_0x18466e);}return null;};}function patchUpdates(_0x39eda8){return function(_0x3c5e0a){try{jsonpatch[_0xba04('0x20')](_0x3c5e0a,_0x39eda8,!![]);}catch(_0x12d76f){return BPromise['reject'](_0x12d76f);}return _0x3c5e0a[_0xba04('0x21')]();};}function saveUpdates(_0xfe7957,_0x12cb3f){return function(_0x229d80){if(_0x229d80){return _0x229d80[_0xba04('0x22')](_0xfe7957)[_0xba04('0x23')](function(_0x2f910c){return _0x2f910c;});}return null;};}function removeEntity(_0x3664fe,_0x322abb){return function(_0x51e46c){if(_0x51e46c){return _0x51e46c[_0xba04('0x24')]()['then'](function(){var _0x19e3e7=_0x51e46c['get']({'plain':!![]});var _0x3c4d31=_0xba04('0x25');return db[_0xba04('0x26')][_0xba04('0x24')]({'where':{'type':_0x3c4d31,'resourceId':_0x19e3e7['id']}})[_0xba04('0x23')](function(){return _0x51e46c;});})[_0xba04('0x23')](function(){_0x3664fe['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12da03,_0x5d9e48){return function(_0x49083c){if(!_0x49083c){_0x12da03[_0xba04('0x27')](0x194);}return _0x49083c;};}function handleError(_0x308c1a,_0x35fb3d){_0x35fb3d=_0x35fb3d||0x1f4;return function(_0x1ccfef){logger['error'](_0x1ccfef[_0xba04('0x28')]);if(_0x1ccfef[_0xba04('0x29')]){delete _0x1ccfef[_0xba04('0x29')];}_0x308c1a[_0xba04('0x18')](_0x35fb3d)[_0xba04('0x2a')](_0x1ccfef);};}exports[_0xba04('0x2b')]=function(_0x5e04ba,_0x3c5861){var _0x6958={},_0x306b23={},_0x42dcd2={'count':0x0,'rows':[]};var _0x2b4584=_[_0xba04('0x2c')](db[_0xba04('0x2d')][_0xba04('0x2e')],function(_0x52949c){return{'name':_0x52949c['fieldName'],'type':_0x52949c[_0xba04('0x2f')][_0xba04('0x30')]};});_0x306b23[_0xba04('0x31')]=_['map'](_0x2b4584,_0xba04('0x29'));_0x306b23[_0xba04('0x32')]=_[_0xba04('0x33')](_0x5e04ba[_0xba04('0x32')]);_0x306b23[_0xba04('0x34')]=_[_0xba04('0x35')](_0x306b23[_0xba04('0x31')],_0x306b23['query']);_0x6958[_0xba04('0x36')]=_[_0xba04('0x35')](_0x306b23[_0xba04('0x31')],qs[_0xba04('0x37')](_0x5e04ba[_0xba04('0x32')][_0xba04('0x37')]));_0x6958[_0xba04('0x36')]=_0x6958[_0xba04('0x36')]['length']?_0x6958['attributes']:_0x306b23[_0xba04('0x31')];if(!_0x5e04ba[_0xba04('0x32')][_0xba04('0x38')](_0xba04('0x39'))){_0x6958['limit']=qs[_0xba04('0x3a')](_0x5e04ba[_0xba04('0x32')]['limit']);_0x6958[_0xba04('0x1b')]=qs[_0xba04('0x1b')](_0x5e04ba[_0xba04('0x32')]['offset']);}_0x6958[_0xba04('0x3b')]=qs[_0xba04('0x3c')](_0x5e04ba[_0xba04('0x32')][_0xba04('0x3c')]);_0x6958[_0xba04('0x3d')]=qs[_0xba04('0x34')](_['pick'](_0x5e04ba[_0xba04('0x32')],_0x306b23['filters']),_0x2b4584);if(_0x5e04ba[_0xba04('0x32')][_0xba04('0x3e')]){_0x6958[_0xba04('0x3d')]=_[_0xba04('0x3f')](_0x6958[_0xba04('0x3d')],{'$or':_['map'](_0x2b4584,function(_0x2568ae){if(_0x2568ae[_0xba04('0x2f')]!==_0xba04('0x40')){var _0x2d63f9={};_0x2d63f9[_0x2568ae[_0xba04('0x29')]]={'$like':'%'+_0x5e04ba[_0xba04('0x32')][_0xba04('0x3e')]+'%'};return _0x2d63f9;}})});}_0x6958=_[_0xba04('0x3f')]({},_0x6958,_0x5e04ba[_0xba04('0x41')]);var _0x57d850={'where':_0x6958[_0xba04('0x3d')]};return db['Schedule']['count'](_0x57d850)[_0xba04('0x23')](function(_0x361960){_0x42dcd2[_0xba04('0x1d')]=_0x361960;if(_0x5e04ba[_0xba04('0x32')][_0xba04('0x42')]){_0x6958[_0xba04('0x43')]=[{'all':!![]}];}return db['Schedule'][_0xba04('0x44')](_0x6958);})[_0xba04('0x23')](function(_0x17d104){_0x42dcd2['rows']=_0x17d104;return _0x42dcd2;})[_0xba04('0x23')](respondWithFilteredResult(_0x3c5861,_0x6958))['catch'](handleError(_0x3c5861,null));};exports[_0xba04('0x45')]=function(_0x4c66cf,_0x43928a){var _0x4e1dab={'raw':![],'where':{'id':_0x4c66cf[_0xba04('0x46')]['id']}},_0xbca2c7={};_0xbca2c7['model']=_[_0xba04('0x33')](db['Schedule']['rawAttributes']);_0xbca2c7[_0xba04('0x32')]=_['keys'](_0x4c66cf['query']);_0xbca2c7[_0xba04('0x34')]=_['intersection'](_0xbca2c7[_0xba04('0x31')],_0xbca2c7[_0xba04('0x32')]);_0x4e1dab[_0xba04('0x36')]=_['intersection'](_0xbca2c7[_0xba04('0x31')],qs[_0xba04('0x37')](_0x4c66cf[_0xba04('0x32')][_0xba04('0x37')]));_0x4e1dab[_0xba04('0x36')]=_0x4e1dab[_0xba04('0x36')]['length']?_0x4e1dab[_0xba04('0x36')]:_0xbca2c7[_0xba04('0x31')];if(_0x4c66cf[_0xba04('0x32')]['includeAll']){_0x4e1dab['include']=[{'all':!![]}];}_0x4e1dab=_[_0xba04('0x3f')]({},_0x4e1dab,_0x4c66cf[_0xba04('0x41')]);return db['Schedule'][_0xba04('0x47')](_0x4e1dab)[_0xba04('0x23')](handleEntityNotFound(_0x43928a,null))['then'](respondWithResult(_0x43928a,null))[_0xba04('0x48')](handleError(_0x43928a,null));};exports[_0xba04('0x49')]=function(_0x4ee1b6,_0xad8f89){return db[_0xba04('0x2d')][_0xba04('0x49')](_0x4ee1b6[_0xba04('0x4a')],{})[_0xba04('0x23')](function(_0x197401){var _0xcaf351=_0x4ee1b6[_0xba04('0x4b')][_0xba04('0x4c')]({'plain':!![]});if(!_0xcaf351)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xcaf351[_0xba04('0x4d')]===_0xba04('0x4b')){var _0x467ed5=_0x197401[_0xba04('0x4c')]({'plain':!![]});var _0x4717d6=_0xba04('0x25');return db[_0xba04('0x4e')]['find']({'where':{'name':_0x4717d6,'userProfileId':_0xcaf351[_0xba04('0x4f')]},'raw':!![]})[_0xba04('0x23')](function(_0x191442){if(_0x191442&&_0x191442[_0xba04('0x50')]===0x0){return db['UserProfileResource'][_0xba04('0x49')]({'name':_0x467ed5[_0xba04('0x29')],'resourceId':_0x467ed5['id'],'type':_0x191442[_0xba04('0x29')],'sectionId':_0x191442['id']},{})['then'](function(){return _0x197401;});}else{return _0x197401;}})['catch'](function(_0x1a65ff){logger[_0xba04('0x51')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a65ff);throw _0x1a65ff;});}return _0x197401;})[_0xba04('0x23')](respondWithResult(_0xad8f89,0xc9))[_0xba04('0x48')](handleError(_0xad8f89,null));};exports[_0xba04('0x22')]=function(_0xe6399d,_0x3be390){if(_0xe6399d['body']['id']){delete _0xe6399d[_0xba04('0x4a')]['id'];}return db[_0xba04('0x2d')][_0xba04('0x47')]({'where':{'id':_0xe6399d[_0xba04('0x46')]['id']}})[_0xba04('0x23')](handleEntityNotFound(_0x3be390,null))['then'](saveUpdates(_0xe6399d[_0xba04('0x4a')],null))[_0xba04('0x23')](respondWithResult(_0x3be390,null))['catch'](handleError(_0x3be390,null));};exports[_0xba04('0x24')]=function(_0xd27b41,_0x2d7857){return db['Schedule']['find']({'where':{'id':_0xd27b41[_0xba04('0x46')]['id']}})['then'](handleEntityNotFound(_0x2d7857,null))['then'](removeEntity(_0x2d7857,null))['catch'](handleError(_0x2d7857,null));};exports[_0xba04('0x52')]=function(_0x27cd96,_0x12e5ca,_0x2dd540){var _0x4a3ebd=require(_0xba04('0x53'));return db[_0xba04('0x2d')][_0xba04('0x47')]({'where':{'id':_0x27cd96[_0xba04('0x46')]['id']},'raw':!![]})[_0xba04('0x23')](handleEntityNotFound(_0x12e5ca,null))[_0xba04('0x23')](function(){_0x4a3ebd['run'](_0x27cd96[_0xba04('0x46')]['id']);})[_0xba04('0x23')](respondWithStatusCode(_0x12e5ca,null))['catch'](handleError(_0x12e5ca,null));};