c3d1681b66188b5c87b48985b4b7a762839681dd
[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 _0x7e47=['body','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','update','then','destroy','UserProfileResource','sendStatus','error','name','send','index','map','Disposition','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','params','keys','length','include','create'];(function(_0x1337ce,_0x38d292){var _0x767fa0=function(_0x2bf625){while(--_0x2bf625){_0x1337ce['push'](_0x1337ce['shift']());}};_0x767fa0(++_0x38d292);}(_0x7e47,0x19d));var _0x77e4=function(_0x1b9787,_0x2677f2){_0x1b9787=_0x1b9787-0x0;var _0x1fe64a=_0x7e47[_0x1b9787];return _0x1fe64a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x77e4('0x0'));var zipdir=require(_0x77e4('0x1'));var jsonpatch=require(_0x77e4('0x2'));var rp=require(_0x77e4('0x3'));var moment=require(_0x77e4('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x77e4('0x5'));var sox=require('sox');var csv=require(_0x77e4('0x6'));var ejs=require(_0x77e4('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x77e4('0x8'));var crypto=require(_0x77e4('0x9'));var jsforce=require(_0x77e4('0xa'));var deskjs=require(_0x77e4('0xb'));var toCsv=require('to-csv');var querystring=require(_0x77e4('0xc'));var Papa=require(_0x77e4('0xd'));var Redis=require('ioredis');var authService=require(_0x77e4('0xe'));var qs=require(_0x77e4('0xf'));var as=require(_0x77e4('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x77e4('0x11'));var utils=require('../../config/utils');var config=require(_0x77e4('0x12'));var licenseUtil=require(_0x77e4('0x13'));var db=require(_0x77e4('0x14'))['db'];function respondWithStatusCode(_0x8184a,_0x207d08){_0x207d08=_0x207d08||0xcc;return function(_0x7afcc5){if(_0x7afcc5){return _0x8184a['sendStatus'](_0x207d08);}return _0x8184a[_0x77e4('0x15')](_0x207d08)[_0x77e4('0x16')]();};}function respondWithResult(_0x593813,_0x2da3eb){_0x2da3eb=_0x2da3eb||0xc8;return function(_0x36b10a){if(_0x36b10a){return _0x593813[_0x77e4('0x15')](_0x2da3eb)[_0x77e4('0x17')](_0x36b10a);}};}function respondWithFilteredResult(_0x324d59,_0x4cf44a){return function(_0x6a3513){if(_0x6a3513){var _0x5b79cb=typeof _0x4cf44a['offset']===_0x77e4('0x18')&&typeof _0x4cf44a[_0x77e4('0x19')]===_0x77e4('0x18');var _0x4a5a32=_0x6a3513['count'];var _0x4332c0=_0x5b79cb?0x0:_0x4cf44a[_0x77e4('0x1a')];var _0x5cc727=_0x5b79cb?_0x6a3513['count']:_0x4cf44a[_0x77e4('0x1a')]+_0x4cf44a[_0x77e4('0x19')];var _0x2f8318;if(_0x5cc727>=_0x4a5a32){_0x5cc727=_0x4a5a32;_0x2f8318=0xc8;}else{_0x2f8318=0xce;}_0x324d59['status'](_0x2f8318);return _0x324d59[_0x77e4('0x1b')](_0x77e4('0x1c'),_0x4332c0+'-'+_0x5cc727+'/'+_0x4a5a32)[_0x77e4('0x17')](_0x6a3513);}return null;};}function patchUpdates(_0x1233bc){return function(_0xb2f859){try{jsonpatch[_0x77e4('0x1d')](_0xb2f859,_0x1233bc,!![]);}catch(_0x41c6ad){return BPromise[_0x77e4('0x1e')](_0x41c6ad);}return _0xb2f859['save']();};}function saveUpdates(_0x5507d8,_0x880f2f){return function(_0x3f4653){if(_0x3f4653){return _0x3f4653[_0x77e4('0x1f')](_0x5507d8)[_0x77e4('0x20')](function(_0x5dbb86){return _0x5dbb86;});}return null;};}function removeEntity(_0x50375f,_0x2357e0){return function(_0x220c81){if(_0x220c81){return _0x220c81[_0x77e4('0x21')]()[_0x77e4('0x20')](function(){var _0x1b4ea7=_0x220c81['get']({'plain':!![]});var _0x2a4fbf='Dispositions';return db[_0x77e4('0x22')][_0x77e4('0x21')]({'where':{'type':_0x2a4fbf,'resourceId':_0x1b4ea7['id']}})[_0x77e4('0x20')](function(){return _0x220c81;});})[_0x77e4('0x20')](function(){_0x50375f[_0x77e4('0x15')](0xcc)[_0x77e4('0x16')]();});}};}function handleEntityNotFound(_0x36f1de,_0xdc5f78){return function(_0x5d910c){if(!_0x5d910c){_0x36f1de[_0x77e4('0x23')](0x194);}return _0x5d910c;};}function handleError(_0x4184db,_0x5c5b0b){_0x5c5b0b=_0x5c5b0b||0x1f4;return function(_0x3b97c5){logger[_0x77e4('0x24')](_0x3b97c5['stack']);if(_0x3b97c5[_0x77e4('0x25')]){delete _0x3b97c5[_0x77e4('0x25')];}_0x4184db[_0x77e4('0x15')](_0x5c5b0b)[_0x77e4('0x26')](_0x3b97c5);};}exports[_0x77e4('0x27')]=function(_0x4b8c54,_0x2ca574){var _0xbf29ad={},_0x43dffc={},_0x1d241c={'count':0x0,'rows':[]};var _0xe1fa82=_[_0x77e4('0x28')](db[_0x77e4('0x29')][_0x77e4('0x2a')],function(_0x1e6eea){return{'name':_0x1e6eea[_0x77e4('0x2b')],'type':_0x1e6eea['type'][_0x77e4('0x2c')]};});_0x43dffc[_0x77e4('0x2d')]=_[_0x77e4('0x28')](_0xe1fa82,'name');_0x43dffc[_0x77e4('0x2e')]=_['keys'](_0x4b8c54['query']);_0x43dffc[_0x77e4('0x2f')]=_[_0x77e4('0x30')](_0x43dffc['model'],_0x43dffc[_0x77e4('0x2e')]);_0xbf29ad[_0x77e4('0x31')]=_[_0x77e4('0x30')](_0x43dffc['model'],qs[_0x77e4('0x32')](_0x4b8c54[_0x77e4('0x2e')][_0x77e4('0x32')]));_0xbf29ad[_0x77e4('0x31')]=_0xbf29ad[_0x77e4('0x31')]['length']?_0xbf29ad[_0x77e4('0x31')]:_0x43dffc['model'];if(!_0x4b8c54[_0x77e4('0x2e')][_0x77e4('0x33')](_0x77e4('0x34'))){_0xbf29ad['limit']=qs[_0x77e4('0x19')](_0x4b8c54['query'][_0x77e4('0x19')]);_0xbf29ad['offset']=qs[_0x77e4('0x1a')](_0x4b8c54['query'][_0x77e4('0x1a')]);}_0xbf29ad[_0x77e4('0x35')]=qs[_0x77e4('0x36')](_0x4b8c54['query'][_0x77e4('0x36')]);_0xbf29ad[_0x77e4('0x37')]=qs[_0x77e4('0x2f')](_[_0x77e4('0x38')](_0x4b8c54[_0x77e4('0x2e')],_0x43dffc['filters']),_0xe1fa82);if(_0x4b8c54[_0x77e4('0x2e')][_0x77e4('0x39')]){_0xbf29ad[_0x77e4('0x37')]=_[_0x77e4('0x3a')](_0xbf29ad[_0x77e4('0x37')],{'$or':_[_0x77e4('0x28')](_0xe1fa82,function(_0x10d9d7){if(_0x10d9d7[_0x77e4('0x3b')]!==_0x77e4('0x3c')){var _0x1a6dd4={};_0x1a6dd4[_0x10d9d7[_0x77e4('0x25')]]={'$like':'%'+_0x4b8c54[_0x77e4('0x2e')]['filter']+'%'};return _0x1a6dd4;}})});}_0xbf29ad=_[_0x77e4('0x3a')]({},_0xbf29ad,_0x4b8c54[_0x77e4('0x3d')]);var _0x3d29b0={'where':_0xbf29ad[_0x77e4('0x37')]};return db[_0x77e4('0x29')][_0x77e4('0x3e')](_0x3d29b0)[_0x77e4('0x20')](function(_0x20368e){_0x1d241c['count']=_0x20368e;if(_0x4b8c54['query'][_0x77e4('0x3f')]){_0xbf29ad['include']=[{'all':!![]}];}return db['Disposition'][_0x77e4('0x40')](_0xbf29ad);})[_0x77e4('0x20')](function(_0xc17d92){_0x1d241c[_0x77e4('0x41')]=_0xc17d92;return _0x1d241c;})[_0x77e4('0x20')](respondWithFilteredResult(_0x2ca574,_0xbf29ad))[_0x77e4('0x42')](handleError(_0x2ca574,null));};exports[_0x77e4('0x43')]=function(_0x38c85c,_0x25b18f){var _0x57be01={'raw':!![],'where':{'id':_0x38c85c[_0x77e4('0x44')]['id']}},_0x3989d1={};_0x3989d1[_0x77e4('0x2d')]=_[_0x77e4('0x45')](db['Disposition'][_0x77e4('0x2a')]);_0x3989d1['query']=_['keys'](_0x38c85c[_0x77e4('0x2e')]);_0x3989d1['filters']=_[_0x77e4('0x30')](_0x3989d1['model'],_0x3989d1[_0x77e4('0x2e')]);_0x57be01[_0x77e4('0x31')]=_[_0x77e4('0x30')](_0x3989d1['model'],qs['fields'](_0x38c85c['query'][_0x77e4('0x32')]));_0x57be01[_0x77e4('0x31')]=_0x57be01['attributes'][_0x77e4('0x46')]?_0x57be01[_0x77e4('0x31')]:_0x3989d1['model'];if(_0x38c85c[_0x77e4('0x2e')][_0x77e4('0x3f')]){_0x57be01[_0x77e4('0x47')]=[{'all':!![]}];}_0x57be01=_[_0x77e4('0x3a')]({},_0x57be01,_0x38c85c[_0x77e4('0x3d')]);return db['Disposition']['find'](_0x57be01)[_0x77e4('0x20')](handleEntityNotFound(_0x25b18f,null))['then'](respondWithResult(_0x25b18f,null))[_0x77e4('0x42')](handleError(_0x25b18f,null));};exports[_0x77e4('0x48')]=function(_0x3d3bbb,_0x43e94a){return db[_0x77e4('0x29')]['create'](_0x3d3bbb[_0x77e4('0x49')],{})['then'](function(_0x59f3a7){var _0x335b45=_0x3d3bbb[_0x77e4('0x4a')][_0x77e4('0x4b')]({'plain':!![]});if(!_0x335b45)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x335b45[_0x77e4('0x4c')]===_0x77e4('0x4a')){var _0x5a698e=_0x59f3a7[_0x77e4('0x4b')]({'plain':!![]});var _0x1b081b='Dispositions';return db[_0x77e4('0x4d')][_0x77e4('0x4e')]({'where':{'name':_0x1b081b,'userProfileId':_0x335b45[_0x77e4('0x4f')]},'raw':!![]})[_0x77e4('0x20')](function(_0x5f0a38){if(_0x5f0a38&&_0x5f0a38[_0x77e4('0x50')]===0x0){return db['UserProfileResource'][_0x77e4('0x48')]({'name':_0x5a698e[_0x77e4('0x25')],'resourceId':_0x5a698e['id'],'type':_0x5f0a38[_0x77e4('0x25')],'sectionId':_0x5f0a38['id']},{})[_0x77e4('0x20')](function(){return _0x59f3a7;});}else{return _0x59f3a7;}})[_0x77e4('0x42')](function(_0x1e3eb5){logger[_0x77e4('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e3eb5);throw _0x1e3eb5;});}return _0x59f3a7;})[_0x77e4('0x20')](respondWithResult(_0x43e94a,0xc9))['catch'](handleError(_0x43e94a,null));};exports[_0x77e4('0x1f')]=function(_0x5234fd,_0x359679){if(_0x5234fd[_0x77e4('0x49')]['id']){delete _0x5234fd[_0x77e4('0x49')]['id'];}return db[_0x77e4('0x29')]['find']({'where':{'id':_0x5234fd[_0x77e4('0x44')]['id']}})[_0x77e4('0x20')](handleEntityNotFound(_0x359679,null))[_0x77e4('0x20')](saveUpdates(_0x5234fd['body'],null))[_0x77e4('0x20')](respondWithResult(_0x359679,null))[_0x77e4('0x42')](handleError(_0x359679,null));};exports[_0x77e4('0x21')]=function(_0x137918,_0x47c8b5){return db[_0x77e4('0x29')][_0x77e4('0x4e')]({'where':{'id':_0x137918[_0x77e4('0x44')]['id']}})[_0x77e4('0x20')](handleEntityNotFound(_0x47c8b5,null))['then'](removeEntity(_0x47c8b5,null))[_0x77e4('0x42')](handleError(_0x47c8b5,null));};