8fec57092054604e88b5e7f8d84649bbd4f47dc0
[motion2.git] / server / api / disposition / disposition.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 _0x96e0=['destroy','then','get','Dispositions','UserProfileResource','sendStatus','error','stack','name','send','index','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','include','rows','catch','show','intersection','fields','includeAll','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','params','eml-format','zip-dir','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x96e0,0x7e));var _0x096e=function(_0x34bd34,_0x33bb6b){_0x34bd34=_0x34bd34-0x0;var _0x2344ec=_0x96e0[_0x34bd34];return _0x2344ec;};'use strict';var emlformat=require(_0x096e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x096e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x096e('0x2'));var BPromise=require(_0x096e('0x3'));var Mustache=require(_0x096e('0x4'));var util=require(_0x096e('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x096e('0x6'));var fs=require('fs');var fs_extra=require(_0x096e('0x7'));var _=require(_0x096e('0x8'));var squel=require(_0x096e('0x9'));var crypto=require(_0x096e('0xa'));var jsforce=require(_0x096e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x096e('0xc'));var querystring=require('querystring');var Papa=require(_0x096e('0xd'));var Redis=require(_0x096e('0xe'));var authService=require(_0x096e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x096e('0x10'));var hardwareService=require(_0x096e('0x11'));var logger=require(_0x096e('0x12'))('api');var utils=require(_0x096e('0x13'));var config=require(_0x096e('0x14'));var licenseUtil=require(_0x096e('0x15'));var db=require(_0x096e('0x16'))['db'];function respondWithStatusCode(_0x1b5058,_0xdf4398){_0xdf4398=_0xdf4398||0xcc;return function(_0xaf8fce){if(_0xaf8fce){return _0x1b5058['sendStatus'](_0xdf4398);}return _0x1b5058[_0x096e('0x17')](_0xdf4398)[_0x096e('0x18')]();};}function respondWithResult(_0x597d9c,_0x73ac62){_0x73ac62=_0x73ac62||0xc8;return function(_0x18fe8f){if(_0x18fe8f){return _0x597d9c[_0x096e('0x17')](_0x73ac62)[_0x096e('0x19')](_0x18fe8f);}};}function respondWithFilteredResult(_0x5df693,_0x1da677){return function(_0xbf0294){if(_0xbf0294){var _0x53e483=typeof _0x1da677[_0x096e('0x1a')]==='undefined'&&typeof _0x1da677[_0x096e('0x1b')]===_0x096e('0x1c');var _0x1bf7c5=_0xbf0294[_0x096e('0x1d')];var _0x396f57=_0x53e483?0x0:_0x1da677[_0x096e('0x1a')];var _0x32da71=_0x53e483?_0xbf0294['count']:_0x1da677['offset']+_0x1da677['limit'];var _0x29a380;if(_0x32da71>=_0x1bf7c5){_0x32da71=_0x1bf7c5;_0x29a380=0xc8;}else{_0x29a380=0xce;}_0x5df693[_0x096e('0x17')](_0x29a380);return _0x5df693['set'](_0x096e('0x1e'),_0x396f57+'-'+_0x32da71+'/'+_0x1bf7c5)[_0x096e('0x19')](_0xbf0294);}return null;};}function patchUpdates(_0x4fdbcd){return function(_0x3a99fb){try{jsonpatch['apply'](_0x3a99fb,_0x4fdbcd,!![]);}catch(_0x4c92ab){return BPromise[_0x096e('0x1f')](_0x4c92ab);}return _0x3a99fb[_0x096e('0x20')]();};}function saveUpdates(_0x508663,_0x22e788){return function(_0x63bce1){if(_0x63bce1){return _0x63bce1[_0x096e('0x21')](_0x508663)['then'](function(_0x508232){return _0x508232;});}return null;};}function removeEntity(_0x310556,_0x4124b8){return function(_0x2affa2){if(_0x2affa2){return _0x2affa2[_0x096e('0x22')]()[_0x096e('0x23')](function(){var _0x4f8505=_0x2affa2[_0x096e('0x24')]({'plain':!![]});var _0x5f5189=_0x096e('0x25');return db[_0x096e('0x26')][_0x096e('0x22')]({'where':{'type':_0x5f5189,'resourceId':_0x4f8505['id']}})['then'](function(){return _0x2affa2;});})[_0x096e('0x23')](function(){_0x310556['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x455b5c,_0x38809a){return function(_0x38027f){if(!_0x38027f){_0x455b5c[_0x096e('0x27')](0x194);}return _0x38027f;};}function handleError(_0x3e5a11,_0x485e79){_0x485e79=_0x485e79||0x1f4;return function(_0x3cbcac){logger[_0x096e('0x28')](_0x3cbcac[_0x096e('0x29')]);if(_0x3cbcac[_0x096e('0x2a')]){delete _0x3cbcac['name'];}_0x3e5a11['status'](_0x485e79)[_0x096e('0x2b')](_0x3cbcac);};}exports[_0x096e('0x2c')]=function(_0x3728bf,_0x686649){var _0x424c33={},_0x11c585={},_0x15f359={'count':0x0,'rows':[]};var _0x2de062=_['map'](db[_0x096e('0x2d')][_0x096e('0x2e')],function(_0x53e9db){return{'name':_0x53e9db[_0x096e('0x2f')],'type':_0x53e9db[_0x096e('0x30')][_0x096e('0x31')]};});_0x11c585[_0x096e('0x32')]=_['map'](_0x2de062,_0x096e('0x2a'));_0x11c585[_0x096e('0x33')]=_[_0x096e('0x34')](_0x3728bf[_0x096e('0x33')]);_0x11c585[_0x096e('0x35')]=_['intersection'](_0x11c585[_0x096e('0x32')],_0x11c585[_0x096e('0x33')]);_0x424c33[_0x096e('0x36')]=_['intersection'](_0x11c585[_0x096e('0x32')],qs['fields'](_0x3728bf['query']['fields']));_0x424c33[_0x096e('0x36')]=_0x424c33[_0x096e('0x36')][_0x096e('0x37')]?_0x424c33[_0x096e('0x36')]:_0x11c585[_0x096e('0x32')];if(!_0x3728bf[_0x096e('0x33')]['hasOwnProperty'](_0x096e('0x38'))){_0x424c33[_0x096e('0x1b')]=qs['limit'](_0x3728bf[_0x096e('0x33')][_0x096e('0x1b')]);_0x424c33[_0x096e('0x1a')]=qs['offset'](_0x3728bf[_0x096e('0x33')]['offset']);}_0x424c33[_0x096e('0x39')]=qs[_0x096e('0x3a')](_0x3728bf[_0x096e('0x33')][_0x096e('0x3a')]);_0x424c33[_0x096e('0x3b')]=qs[_0x096e('0x35')](_[_0x096e('0x3c')](_0x3728bf[_0x096e('0x33')],_0x11c585[_0x096e('0x35')]),_0x2de062);if(_0x3728bf[_0x096e('0x33')]['filter']){_0x424c33[_0x096e('0x3b')]=_['merge'](_0x424c33[_0x096e('0x3b')],{'$or':_['map'](_0x2de062,function(_0x51ff85){if(_0x51ff85[_0x096e('0x30')]!=='VIRTUAL'){var _0x270d79={};_0x270d79[_0x51ff85[_0x096e('0x2a')]]={'$like':'%'+_0x3728bf['query'][_0x096e('0x3d')]+'%'};return _0x270d79;}})});}_0x424c33=_[_0x096e('0x3e')]({},_0x424c33,_0x3728bf[_0x096e('0x3f')]);var _0x457077={'where':_0x424c33['where']};return db[_0x096e('0x2d')]['count'](_0x457077)[_0x096e('0x23')](function(_0x3dc295){_0x15f359['count']=_0x3dc295;if(_0x3728bf[_0x096e('0x33')]['includeAll']){_0x424c33[_0x096e('0x40')]=[{'all':!![]}];}return db[_0x096e('0x2d')]['findAll'](_0x424c33);})[_0x096e('0x23')](function(_0x5bd8d3){_0x15f359[_0x096e('0x41')]=_0x5bd8d3;return _0x15f359;})[_0x096e('0x23')](respondWithFilteredResult(_0x686649,_0x424c33))[_0x096e('0x42')](handleError(_0x686649,null));};exports[_0x096e('0x43')]=function(_0x321fe5,_0x32a764){var _0xf14099={'raw':!![],'where':{'id':_0x321fe5['params']['id']}},_0x3a87fc={};_0x3a87fc[_0x096e('0x32')]=_[_0x096e('0x34')](db[_0x096e('0x2d')][_0x096e('0x2e')]);_0x3a87fc[_0x096e('0x33')]=_[_0x096e('0x34')](_0x321fe5[_0x096e('0x33')]);_0x3a87fc['filters']=_[_0x096e('0x44')](_0x3a87fc[_0x096e('0x32')],_0x3a87fc[_0x096e('0x33')]);_0xf14099['attributes']=_[_0x096e('0x44')](_0x3a87fc[_0x096e('0x32')],qs[_0x096e('0x45')](_0x321fe5['query'][_0x096e('0x45')]));_0xf14099['attributes']=_0xf14099[_0x096e('0x36')][_0x096e('0x37')]?_0xf14099['attributes']:_0x3a87fc[_0x096e('0x32')];if(_0x321fe5['query'][_0x096e('0x46')]){_0xf14099[_0x096e('0x40')]=[{'all':!![]}];}_0xf14099=_[_0x096e('0x3e')]({},_0xf14099,_0x321fe5[_0x096e('0x3f')]);return db['Disposition'][_0x096e('0x47')](_0xf14099)[_0x096e('0x23')](handleEntityNotFound(_0x32a764,null))[_0x096e('0x23')](respondWithResult(_0x32a764,null))[_0x096e('0x42')](handleError(_0x32a764,null));};exports[_0x096e('0x48')]=function(_0x2a849b,_0x1becda){return db[_0x096e('0x2d')][_0x096e('0x48')](_0x2a849b[_0x096e('0x49')],{})['then'](function(_0x1ce355){var _0x6fe966=_0x2a849b['user'][_0x096e('0x24')]({'plain':!![]});if(!_0x6fe966)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x6fe966[_0x096e('0x4a')]===_0x096e('0x4b')){var _0x43cebc=_0x1ce355[_0x096e('0x24')]({'plain':!![]});var _0x2e89ba='Dispositions';return db[_0x096e('0x4c')][_0x096e('0x47')]({'where':{'name':_0x2e89ba,'userProfileId':_0x6fe966[_0x096e('0x4d')]},'raw':!![]})[_0x096e('0x23')](function(_0x4dd74b){if(_0x4dd74b&&_0x4dd74b[_0x096e('0x4e')]===0x0){return db[_0x096e('0x26')]['create']({'name':_0x43cebc[_0x096e('0x2a')],'resourceId':_0x43cebc['id'],'type':_0x4dd74b[_0x096e('0x2a')],'sectionId':_0x4dd74b['id']},{})['then'](function(){return _0x1ce355;});}else{return _0x1ce355;}})[_0x096e('0x42')](function(_0x57bce6){logger[_0x096e('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x57bce6);throw _0x57bce6;});}return _0x1ce355;})[_0x096e('0x23')](respondWithResult(_0x1becda,0xc9))[_0x096e('0x42')](handleError(_0x1becda,null));};exports[_0x096e('0x21')]=function(_0x4c22ab,_0x4dfecf){if(_0x4c22ab[_0x096e('0x49')]['id']){delete _0x4c22ab[_0x096e('0x49')]['id'];}return db[_0x096e('0x2d')][_0x096e('0x47')]({'where':{'id':_0x4c22ab[_0x096e('0x4f')]['id']}})[_0x096e('0x23')](handleEntityNotFound(_0x4dfecf,null))['then'](saveUpdates(_0x4c22ab['body'],null))['then'](respondWithResult(_0x4dfecf,null))[_0x096e('0x42')](handleError(_0x4dfecf,null));};exports[_0x096e('0x22')]=function(_0x27554e,_0x4133b7){return db[_0x096e('0x2d')][_0x096e('0x47')]({'where':{'id':_0x27554e['params']['id']}})[_0x096e('0x23')](handleEntityNotFound(_0x4133b7,null))[_0x096e('0x23')](removeEntity(_0x4133b7,null))[_0x096e('0x42')](handleError(_0x4133b7,null));};