c401babed6a8f1fa80ec8540b4dbeaf21d3947ed
[motion2.git] / server / api / cdr / cdr.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 _0x0d54=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','render','merge','body','contact','agent','interaction','index','rawAttributes','type','model','map','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','Cdr','findAll','catch','show','params','intersection','find','create','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','../../components/auth/service'];(function(_0x55b86a,_0x9f9772){var _0x46f950=function(_0x3113b0){while(--_0x3113b0){_0x55b86a['push'](_0x55b86a['shift']());}};_0x46f950(++_0x9f9772);}(_0x0d54,0x125));var _0x40d5=function(_0x383356,_0x33d2f5){_0x383356=_0x383356-0x0;var _0x32ee5a=_0x0d54[_0x383356];return _0x32ee5a;};'use strict';var emlformat=require(_0x40d5('0x0'));var rimraf=require(_0x40d5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x40d5('0x2'));var rp=require(_0x40d5('0x3'));var moment=require('moment');var BPromise=require(_0x40d5('0x4'));var Mustache=require(_0x40d5('0x5'));var util=require('util');var path=require('path');var sox=require(_0x40d5('0x6'));var csv=require(_0x40d5('0x7'));var ejs=require(_0x40d5('0x8'));var fs=require('fs');var fs_extra=require(_0x40d5('0x9'));var _=require(_0x40d5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x40d5('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x40d5('0x7'));var querystring=require(_0x40d5('0xc'));var Papa=require(_0x40d5('0xd'));var Redis=require('ioredis');var authService=require(_0x40d5('0xe'));var qs=require(_0x40d5('0xf'));var as=require(_0x40d5('0x10'));var hardwareService=require(_0x40d5('0x11'));var logger=require(_0x40d5('0x12'))(_0x40d5('0x13'));var utils=require('../../config/utils');var config=require(_0x40d5('0x14'));var licenseUtil=require(_0x40d5('0x15'));var db=require(_0x40d5('0x16'))['db'];function respondWithStatusCode(_0x427822,_0x44e7d3){_0x44e7d3=_0x44e7d3||0xcc;return function(_0x18820e){if(_0x18820e){return _0x427822[_0x40d5('0x17')](_0x44e7d3);}return _0x427822['status'](_0x44e7d3)[_0x40d5('0x18')]();};}function respondWithResult(_0x306ff9,_0x36b212){_0x36b212=_0x36b212||0xc8;return function(_0x19ad08){if(_0x19ad08){return _0x306ff9[_0x40d5('0x19')](_0x36b212)['json'](_0x19ad08);}};}function respondWithFilteredResult(_0x256454,_0x1d8ba4){return function(_0x592ee2){if(_0x592ee2){var _0x59dae2=typeof _0x1d8ba4[_0x40d5('0x1a')]==='undefined'&&typeof _0x1d8ba4[_0x40d5('0x1b')]===_0x40d5('0x1c');var _0x1430bd=_0x592ee2[_0x40d5('0x1d')];var _0x17b9f9=_0x59dae2?0x0:_0x1d8ba4[_0x40d5('0x1a')];var _0x18a5c8=_0x59dae2?_0x592ee2[_0x40d5('0x1d')]:_0x1d8ba4[_0x40d5('0x1a')]+_0x1d8ba4['limit'];var _0x1252fb;if(_0x18a5c8>=_0x1430bd){_0x18a5c8=_0x1430bd;_0x1252fb=0xc8;}else{_0x1252fb=0xce;}_0x256454[_0x40d5('0x19')](_0x1252fb);return _0x256454[_0x40d5('0x1e')](_0x40d5('0x1f'),_0x17b9f9+'-'+_0x18a5c8+'/'+_0x1430bd)[_0x40d5('0x20')](_0x592ee2);}return null;};}function patchUpdates(_0x33cd7d){return function(_0x5edb83){try{jsonpatch[_0x40d5('0x21')](_0x5edb83,_0x33cd7d,!![]);}catch(_0x4ecfab){return BPromise[_0x40d5('0x22')](_0x4ecfab);}return _0x5edb83[_0x40d5('0x23')]();};}function saveUpdates(_0x2df11f,_0x3e2211){return function(_0x2c67ef){if(_0x2c67ef){return _0x2c67ef[_0x40d5('0x24')](_0x2df11f)[_0x40d5('0x25')](function(_0x5a5898){return _0x5a5898;});}return null;};}function removeEntity(_0x2de4e8,_0x4528f6){return function(_0x3ed884){if(_0x3ed884){return _0x3ed884[_0x40d5('0x26')]()['then'](function(){_0x2de4e8['status'](0xcc)[_0x40d5('0x18')]();});}};}function handleEntityNotFound(_0x2f2abf,_0x397c4e){return function(_0x5606d2){if(!_0x5606d2){_0x2f2abf[_0x40d5('0x17')](0x194);}return _0x5606d2;};}function handleError(_0x4a4d67,_0x3a4eca){_0x3a4eca=_0x3a4eca||0x1f4;return function(_0x596b34){logger[_0x40d5('0x27')](_0x596b34[_0x40d5('0x28')]);if(_0x596b34[_0x40d5('0x29')]){delete _0x596b34[_0x40d5('0x29')];}_0x4a4d67[_0x40d5('0x19')](_0x3a4eca)['send'](_0x596b34);};}function getMustacheRender(_0x304045,_0x23191f){return Mustache[_0x40d5('0x2a')](_0x304045,_[_0x40d5('0x2b')](_0x23191f[_0x40d5('0x2c')],{'contact':_0x23191f[_0x40d5('0x2d')],'message':_0x23191f['message'],'agent':_0x23191f[_0x40d5('0x2e')],'interaction':_0x23191f[_0x40d5('0x2f')],'account':_0x23191f['account']}))||'';}exports[_0x40d5('0x30')]=function(_0x5f0bcd,_0x1f966f){var _0x36f167={},_0x546b33={},_0x2ee8fa={'count':0x0,'rows':[]};var _0x5b5ba6=_['map'](db['Cdr'][_0x40d5('0x31')],function(_0xeb0d65){return{'name':_0xeb0d65['fieldName'],'type':_0xeb0d65[_0x40d5('0x32')]['key']};});_0x546b33[_0x40d5('0x33')]=_[_0x40d5('0x34')](_0x5b5ba6,_0x40d5('0x29'));_0x546b33[_0x40d5('0x35')]=_[_0x40d5('0x36')](_0x5f0bcd[_0x40d5('0x35')]);_0x546b33['filters']=_['intersection'](_0x546b33[_0x40d5('0x33')],_0x546b33[_0x40d5('0x35')]);_0x36f167[_0x40d5('0x37')]=_['intersection'](_0x546b33[_0x40d5('0x33')],qs['fields'](_0x5f0bcd[_0x40d5('0x35')][_0x40d5('0x38')]));_0x36f167[_0x40d5('0x37')]=_0x36f167[_0x40d5('0x37')][_0x40d5('0x39')]?_0x36f167[_0x40d5('0x37')]:_0x546b33[_0x40d5('0x33')];if(!_0x5f0bcd['query'][_0x40d5('0x3a')](_0x40d5('0x3b'))){_0x36f167['limit']=qs[_0x40d5('0x1b')](_0x5f0bcd['query'][_0x40d5('0x1b')]);_0x36f167[_0x40d5('0x1a')]=qs['offset'](_0x5f0bcd['query'][_0x40d5('0x1a')]);}_0x36f167[_0x40d5('0x3c')]=qs[_0x40d5('0x3d')](_0x5f0bcd[_0x40d5('0x35')]['sort']);_0x36f167[_0x40d5('0x3e')]=qs[_0x40d5('0x3f')](_[_0x40d5('0x40')](_0x5f0bcd[_0x40d5('0x35')],_0x546b33[_0x40d5('0x3f')]),_0x5b5ba6);if(_0x5f0bcd[_0x40d5('0x35')][_0x40d5('0x41')]){_0x36f167[_0x40d5('0x3e')]=_['merge'](_0x36f167['where'],{'$or':_['map'](_0x5b5ba6,function(_0x5541b7){if(_0x5541b7['type']!==_0x40d5('0x42')){var _0x2d11f8={};_0x2d11f8[_0x5541b7[_0x40d5('0x29')]]={'$like':'%'+_0x5f0bcd['query'][_0x40d5('0x41')]+'%'};return _0x2d11f8;}})});}_0x36f167=_[_0x40d5('0x2b')]({},_0x36f167,_0x5f0bcd[_0x40d5('0x43')]);var _0x5e6567={'where':_0x36f167[_0x40d5('0x3e')]};return db[_0x40d5('0x44')]['count'](_0x5e6567)['then'](function(_0x42f944){_0x2ee8fa[_0x40d5('0x1d')]=_0x42f944;if(_0x5f0bcd[_0x40d5('0x35')]['includeAll']){_0x36f167['include']=[{'all':!![]}];}return db[_0x40d5('0x44')][_0x40d5('0x45')](_0x36f167);})[_0x40d5('0x25')](function(_0x44913e){_0x2ee8fa['rows']=_0x44913e;return _0x2ee8fa;})[_0x40d5('0x25')](respondWithFilteredResult(_0x1f966f,_0x36f167))[_0x40d5('0x46')](handleError(_0x1f966f,null));};exports[_0x40d5('0x47')]=function(_0x533a5d,_0x28f497){var _0x5a5d61={'raw':!![],'where':{'id':_0x533a5d[_0x40d5('0x48')]['id']}},_0x184ee2={};_0x184ee2[_0x40d5('0x33')]=_[_0x40d5('0x36')](db[_0x40d5('0x44')][_0x40d5('0x31')]);_0x184ee2[_0x40d5('0x35')]=_[_0x40d5('0x36')](_0x533a5d[_0x40d5('0x35')]);_0x184ee2['filters']=_[_0x40d5('0x49')](_0x184ee2[_0x40d5('0x33')],_0x184ee2['query']);_0x5a5d61[_0x40d5('0x37')]=_[_0x40d5('0x49')](_0x184ee2[_0x40d5('0x33')],qs[_0x40d5('0x38')](_0x533a5d[_0x40d5('0x35')][_0x40d5('0x38')]));_0x5a5d61[_0x40d5('0x37')]=_0x5a5d61[_0x40d5('0x37')]['length']?_0x5a5d61['attributes']:_0x184ee2[_0x40d5('0x33')];if(_0x533a5d[_0x40d5('0x35')]['includeAll']){_0x5a5d61['include']=[{'all':!![]}];}_0x5a5d61=_['merge']({},_0x5a5d61,_0x533a5d[_0x40d5('0x43')]);return db[_0x40d5('0x44')][_0x40d5('0x4a')](_0x5a5d61)[_0x40d5('0x25')](handleEntityNotFound(_0x28f497,null))['then'](respondWithResult(_0x28f497,null))[_0x40d5('0x46')](handleError(_0x28f497,null));};exports[_0x40d5('0x4b')]=function(_0x1d4bf3,_0x12b43d){return db['Cdr']['create'](_0x1d4bf3[_0x40d5('0x2c')],{})[_0x40d5('0x25')](respondWithResult(_0x12b43d,0xc9))[_0x40d5('0x46')](handleError(_0x12b43d,null));};exports[_0x40d5('0x24')]=function(_0x20e69d,_0x38f424){if(_0x20e69d[_0x40d5('0x2c')]['id']){delete _0x20e69d['body']['id'];}return db[_0x40d5('0x44')][_0x40d5('0x4a')]({'where':{'id':_0x20e69d[_0x40d5('0x48')]['id']}})[_0x40d5('0x25')](handleEntityNotFound(_0x38f424,null))[_0x40d5('0x25')](saveUpdates(_0x20e69d['body'],null))[_0x40d5('0x25')](respondWithResult(_0x38f424,null))[_0x40d5('0x46')](handleError(_0x38f424,null));};exports['destroy']=function(_0x5e4d5c,_0x387406){return db['Cdr']['find']({'where':{'id':_0x5e4d5c[_0x40d5('0x48')]['id']}})[_0x40d5('0x25')](handleEntityNotFound(_0x387406,null))[_0x40d5('0x25')](removeEntity(_0x387406,null))[_0x40d5('0x46')](handleError(_0x387406,null));};exports[_0x40d5('0x4c')]=function(_0x4b4999,_0x20afcc){return db[_0x40d5('0x44')][_0x40d5('0x4c')]()[_0x40d5('0x25')](respondWithResult(_0x20afcc,null))[_0x40d5('0x46')](handleError(_0x20afcc,null));};