d0bdc84d1ac3c8b43770db8a2997d34c8054d4c6
[motion2.git] / server / api / intSugarcrmAccount / intSugarcrmAccount.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 _0xb606=['api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','fields','create','body','find','getConfigurations','findOne','SugarcrmConfiguration','length','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','assigned_user_id','created_by','description','duration_minutes','parent_id','parent_type','direction','username','password','remoteUri','lastIndexOf','format','/service/v4_1/rest.php','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','POST','Calls','values','module_fields','remove','includes','label','value','test','getFields,\x20%s,\x20%s,\x20%s','getFields','statusCode','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1c1961,_0x142cf0){var _0x51cfce=function(_0x4e6099){while(--_0x4e6099){_0x1c1961['push'](_0x1c1961['shift']());}};_0x51cfce(++_0x142cf0);}(_0xb606,0x14c));var _0x6b60=function(_0x5df61d,_0x158640){_0x5df61d=_0x5df61d-0x0;var _0x24cc4c=_0xb606[_0x5df61d];return _0x24cc4c;};'use strict';var emlformat=require(_0x6b60('0x0'));var rimraf=require(_0x6b60('0x1'));var zipdir=require(_0x6b60('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b60('0x3'));var moment=require('moment');var BPromise=require(_0x6b60('0x4'));var Mustache=require(_0x6b60('0x5'));var util=require(_0x6b60('0x6'));var path=require(_0x6b60('0x7'));var sox=require(_0x6b60('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6b60('0x9'));var _=require('lodash');var squel=require(_0x6b60('0xa'));var crypto=require(_0x6b60('0xb'));var jsforce=require(_0x6b60('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6b60('0xd'));var querystring=require('querystring');var Papa=require(_0x6b60('0xe'));var Redis=require(_0x6b60('0xf'));var authService=require(_0x6b60('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6b60('0x11'));var hardwareService=require(_0x6b60('0x12'));var logger=require('../../config/logger')(_0x6b60('0x13'));var utils=require(_0x6b60('0x14'));var config=require(_0x6b60('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b60('0x16'))['db'];var integrations=require(_0x6b60('0x17'));function respondWithStatusCode(_0x2ec095,_0x282733){_0x282733=_0x282733||0xcc;return function(_0x4bbe1d){if(_0x4bbe1d){return _0x2ec095['sendStatus'](_0x282733);}return _0x2ec095[_0x6b60('0x18')](_0x282733)[_0x6b60('0x19')]();};}function respondWithResult(_0x53fb19,_0x1e9128){_0x1e9128=_0x1e9128||0xc8;return function(_0x19ee56){if(_0x19ee56){return _0x53fb19['status'](_0x1e9128)[_0x6b60('0x1a')](_0x19ee56);}};}function respondWithFilteredResult(_0x348f03,_0x24699f){return function(_0x5da6d7){if(_0x5da6d7){var _0x2a2a62=typeof _0x24699f[_0x6b60('0x1b')]===_0x6b60('0x1c')&&typeof _0x24699f['limit']==='undefined';var _0xac13cc=_0x5da6d7[_0x6b60('0x1d')];var _0x5767c4=_0x2a2a62?0x0:_0x24699f['offset'];var _0x7aaf16=_0x2a2a62?_0x5da6d7[_0x6b60('0x1d')]:_0x24699f[_0x6b60('0x1b')]+_0x24699f[_0x6b60('0x1e')];var _0x4bb498;if(_0x7aaf16>=_0xac13cc){_0x7aaf16=_0xac13cc;_0x4bb498=0xc8;}else{_0x4bb498=0xce;}_0x348f03[_0x6b60('0x18')](_0x4bb498);return _0x348f03[_0x6b60('0x1f')](_0x6b60('0x20'),_0x5767c4+'-'+_0x7aaf16+'/'+_0xac13cc)[_0x6b60('0x1a')](_0x5da6d7);}return null;};}function patchUpdates(_0x26f078){return function(_0x16b30b){try{jsonpatch[_0x6b60('0x21')](_0x16b30b,_0x26f078,!![]);}catch(_0x3494d1){return BPromise[_0x6b60('0x22')](_0x3494d1);}return _0x16b30b['save']();};}function saveUpdates(_0xac12e2,_0x429ce6){return function(_0x518495){if(_0x518495){return _0x518495[_0x6b60('0x23')](_0xac12e2)[_0x6b60('0x24')](function(_0x13f986){return _0x13f986;});}return null;};}function removeEntity(_0x4137bf,_0x554ee2){return function(_0x1284bd){if(_0x1284bd){return _0x1284bd[_0x6b60('0x25')]()['then'](function(){_0x4137bf[_0x6b60('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16e31c,_0x4276d4){return function(_0x1311eb){if(!_0x1311eb){_0x16e31c[_0x6b60('0x26')](0x194);}return _0x1311eb;};}function handleError(_0x397988,_0x45576e){_0x45576e=_0x45576e||0x1f4;return function(_0x1f6c58){logger[_0x6b60('0x27')](_0x1f6c58[_0x6b60('0x28')]);if(_0x1f6c58[_0x6b60('0x29')]){delete _0x1f6c58[_0x6b60('0x29')];}_0x397988[_0x6b60('0x18')](_0x45576e)[_0x6b60('0x2a')](_0x1f6c58);};}exports[_0x6b60('0x2b')]=function(_0x3e6eee,_0x308a6d){var _0x28df87={},_0x17a536={},_0x40d0d7={'count':0x0,'rows':[]};var _0x55a4d2=_[_0x6b60('0x2c')](db[_0x6b60('0x2d')][_0x6b60('0x2e')],function(_0xa60e9b){return{'name':_0xa60e9b[_0x6b60('0x2f')],'type':_0xa60e9b['type'][_0x6b60('0x30')]};});_0x17a536[_0x6b60('0x31')]=_['map'](_0x55a4d2,_0x6b60('0x29'));_0x17a536[_0x6b60('0x32')]=_[_0x6b60('0x33')](_0x3e6eee[_0x6b60('0x32')]);_0x17a536[_0x6b60('0x34')]=_[_0x6b60('0x35')](_0x17a536[_0x6b60('0x31')],_0x17a536[_0x6b60('0x32')]);_0x28df87[_0x6b60('0x36')]=_['intersection'](_0x17a536[_0x6b60('0x31')],qs['fields'](_0x3e6eee[_0x6b60('0x32')]['fields']));_0x28df87['attributes']=_0x28df87[_0x6b60('0x36')]['length']?_0x28df87[_0x6b60('0x36')]:_0x17a536[_0x6b60('0x31')];if(!_0x3e6eee['query'][_0x6b60('0x37')](_0x6b60('0x38'))){_0x28df87[_0x6b60('0x1e')]=qs[_0x6b60('0x1e')](_0x3e6eee['query']['limit']);_0x28df87[_0x6b60('0x1b')]=qs[_0x6b60('0x1b')](_0x3e6eee[_0x6b60('0x32')]['offset']);}_0x28df87[_0x6b60('0x39')]=qs[_0x6b60('0x3a')](_0x3e6eee[_0x6b60('0x32')][_0x6b60('0x3a')]);_0x28df87[_0x6b60('0x3b')]=qs[_0x6b60('0x34')](_[_0x6b60('0x3c')](_0x3e6eee[_0x6b60('0x32')],_0x17a536[_0x6b60('0x34')]),_0x55a4d2);if(_0x3e6eee[_0x6b60('0x32')][_0x6b60('0x3d')]){_0x28df87['where']=_[_0x6b60('0x3e')](_0x28df87['where'],{'$or':_[_0x6b60('0x2c')](_0x55a4d2,function(_0x1b52bd){if(_0x1b52bd[_0x6b60('0x3f')]!==_0x6b60('0x40')){var _0x39182e={};_0x39182e[_0x1b52bd[_0x6b60('0x29')]]={'$like':'%'+_0x3e6eee[_0x6b60('0x32')][_0x6b60('0x3d')]+'%'};return _0x39182e;}})});}_0x28df87=_[_0x6b60('0x3e')]({},_0x28df87,_0x3e6eee[_0x6b60('0x41')]);var _0x3e4509={'where':_0x28df87[_0x6b60('0x3b')]};return db[_0x6b60('0x2d')][_0x6b60('0x1d')](_0x3e4509)[_0x6b60('0x24')](function(_0x28f3f1){_0x40d0d7[_0x6b60('0x1d')]=_0x28f3f1;if(_0x3e6eee['query'][_0x6b60('0x42')]){_0x28df87[_0x6b60('0x43')]=[{'all':!![]}];}return db[_0x6b60('0x2d')]['findAll'](_0x28df87);})[_0x6b60('0x24')](function(_0x1a862d){_0x40d0d7['rows']=_0x1a862d;return _0x40d0d7;})[_0x6b60('0x24')](respondWithFilteredResult(_0x308a6d,_0x28df87))[_0x6b60('0x44')](handleError(_0x308a6d,null));};exports[_0x6b60('0x45')]=function(_0x4bb3ac,_0x68dbf1){var _0x3b69a1={'raw':![],'where':{'id':_0x4bb3ac[_0x6b60('0x46')]['id']}},_0x224fea={};_0x224fea[_0x6b60('0x31')]=_[_0x6b60('0x33')](db[_0x6b60('0x2d')]['rawAttributes']);_0x224fea[_0x6b60('0x32')]=_[_0x6b60('0x33')](_0x4bb3ac['query']);_0x224fea[_0x6b60('0x34')]=_[_0x6b60('0x35')](_0x224fea[_0x6b60('0x31')],_0x224fea[_0x6b60('0x32')]);_0x3b69a1[_0x6b60('0x36')]=_['intersection'](_0x224fea['model'],qs['fields'](_0x4bb3ac[_0x6b60('0x32')][_0x6b60('0x47')]));_0x3b69a1[_0x6b60('0x36')]=_0x3b69a1[_0x6b60('0x36')]['length']?_0x3b69a1[_0x6b60('0x36')]:_0x224fea[_0x6b60('0x31')];if(_0x4bb3ac[_0x6b60('0x32')][_0x6b60('0x42')]){_0x3b69a1[_0x6b60('0x43')]=[{'all':!![]}];}_0x3b69a1=_['merge']({},_0x3b69a1,_0x4bb3ac[_0x6b60('0x41')]);return db[_0x6b60('0x2d')]['find'](_0x3b69a1)['then'](handleEntityNotFound(_0x68dbf1,null))[_0x6b60('0x24')](respondWithResult(_0x68dbf1,null))[_0x6b60('0x44')](handleError(_0x68dbf1,null));};exports['create']=function(_0x314bc6,_0x426cc1){return db[_0x6b60('0x2d')][_0x6b60('0x48')](_0x314bc6[_0x6b60('0x49')],{})[_0x6b60('0x24')](respondWithResult(_0x426cc1,0xc9))[_0x6b60('0x44')](handleError(_0x426cc1,null));};exports['update']=function(_0x1c0c31,_0xa6b87e){if(_0x1c0c31['body']['id']){delete _0x1c0c31['body']['id'];}return db[_0x6b60('0x2d')][_0x6b60('0x4a')]({'where':{'id':_0x1c0c31[_0x6b60('0x46')]['id']}})[_0x6b60('0x24')](handleEntityNotFound(_0xa6b87e,null))[_0x6b60('0x24')](saveUpdates(_0x1c0c31[_0x6b60('0x49')],null))[_0x6b60('0x24')](respondWithResult(_0xa6b87e,null))[_0x6b60('0x44')](handleError(_0xa6b87e,null));};exports[_0x6b60('0x25')]=function(_0x52cd4a,_0x315f3c){return db[_0x6b60('0x2d')][_0x6b60('0x4a')]({'where':{'id':_0x52cd4a[_0x6b60('0x46')]['id']}})['then'](handleEntityNotFound(_0x315f3c,null))[_0x6b60('0x24')](removeEntity(_0x315f3c,null))[_0x6b60('0x44')](handleError(_0x315f3c,null));};exports[_0x6b60('0x4b')]=function(_0x55d626,_0x11de3e,_0x22436f){var _0x465a1c={};var _0x49c07b={};var _0x349da7;var _0x5709dc;return db['SugarcrmAccount'][_0x6b60('0x4c')]({'where':{'id':_0x55d626[_0x6b60('0x46')]['id']}})['then'](handleEntityNotFound(_0x11de3e,null))[_0x6b60('0x24')](function(_0x4c054f){if(_0x4c054f){_0x349da7=_0x4c054f;_0x49c07b[_0x6b60('0x31')]=_[_0x6b60('0x33')](db[_0x6b60('0x4d')][_0x6b60('0x2e')]);_0x49c07b[_0x6b60('0x32')]=_[_0x6b60('0x33')](_0x55d626[_0x6b60('0x32')]);_0x49c07b[_0x6b60('0x34')]=_[_0x6b60('0x35')](_0x49c07b[_0x6b60('0x31')],_0x49c07b[_0x6b60('0x32')]);_0x465a1c[_0x6b60('0x36')]=_[_0x6b60('0x35')](_0x49c07b['model'],qs[_0x6b60('0x47')](_0x55d626['query']['fields']));_0x465a1c['attributes']=_0x465a1c[_0x6b60('0x36')][_0x6b60('0x4e')]?_0x465a1c['attributes']:_0x49c07b[_0x6b60('0x31')];_0x465a1c[_0x6b60('0x39')]=qs[_0x6b60('0x3a')](_0x55d626[_0x6b60('0x32')][_0x6b60('0x3a')]);_0x465a1c['where']=qs[_0x6b60('0x34')](_['pick'](_0x55d626[_0x6b60('0x32')],_0x49c07b[_0x6b60('0x34')]));if(_0x55d626[_0x6b60('0x32')][_0x6b60('0x3d')]){_0x465a1c[_0x6b60('0x3b')]=_['merge'](_0x465a1c[_0x6b60('0x3b')],{'$or':_['map'](_0x465a1c[_0x6b60('0x36')],function(_0x20b050){var _0x27d0f2={};_0x27d0f2[_0x20b050]={'$like':'%'+_0x55d626[_0x6b60('0x32')][_0x6b60('0x3d')]+'%'};return _0x27d0f2;})});}_0x465a1c=_[_0x6b60('0x3e')]({},_0x465a1c,_0x55d626[_0x6b60('0x41')]);return _0x349da7[_0x6b60('0x4b')](_0x465a1c);}})[_0x6b60('0x24')](function(_0x51cca6){if(_0x51cca6){_0x5709dc=_0x51cca6[_0x6b60('0x4e')];if(!_0x55d626[_0x6b60('0x32')][_0x6b60('0x37')](_0x6b60('0x38'))){_0x465a1c[_0x6b60('0x1e')]=qs[_0x6b60('0x1e')](_0x55d626[_0x6b60('0x32')]['limit']);_0x465a1c[_0x6b60('0x1b')]=qs[_0x6b60('0x1b')](_0x55d626[_0x6b60('0x32')][_0x6b60('0x1b')]);}return _0x349da7['getConfigurations'](_0x465a1c);}})[_0x6b60('0x24')](function(_0x106c9b){if(_0x106c9b){return _0x106c9b?{'count':_0x5709dc,'rows':_0x106c9b}:null;}})['then'](respondWithResult(_0x11de3e,null))[_0x6b60('0x44')](handleError(_0x11de3e,null));};exports['addConfiguration']=function(_0x34e68c,_0x1d7b61,_0x118940){if(_0x34e68c['body']['id']){delete _0x34e68c[_0x6b60('0x49')]['id'];}return db[_0x6b60('0x2d')]['findOne']({'where':{'id':_0x34e68c[_0x6b60('0x46')]['id']}})[_0x6b60('0x24')](handleEntityNotFound(_0x1d7b61,null))['then'](function(_0x25b991){if(_0x25b991){_0x34e68c[_0x6b60('0x49')][_0x6b60('0x4f')]=_0x25b991['id'];_0x34e68c['body'][_0x6b60('0x50')]=integrations[_0x6b60('0x51')](_0x34e68c[_0x6b60('0x49')][_0x6b60('0x52')],_0x34e68c[_0x6b60('0x49')][_0x6b60('0x3f')]);_0x34e68c['body'][_0x6b60('0x53')]=integrations[_0x6b60('0x54')](_0x34e68c[_0x6b60('0x49')][_0x6b60('0x52')],_0x34e68c[_0x6b60('0x49')][_0x6b60('0x3f')]);return db['SugarcrmConfiguration'][_0x6b60('0x48')](_0x34e68c['body'],{'include':[{'model':db[_0x6b60('0x55')],'as':'Subjects'},{'model':db[_0x6b60('0x55')],'as':'Descriptions'}]});}return null;})[_0x6b60('0x24')](respondWithResult(_0x1d7b61,null))[_0x6b60('0x44')](handleError(_0x1d7b61,null));};exports['getFields']=function(_0x94ce0f,_0x474d64,_0x245aa8){var _0x46b4be='';var _0x128755=['id',_0x6b60('0x29'),_0x6b60('0x56'),_0x6b60('0x57'),_0x6b60('0x58'),'date_start','duration_hours',_0x6b60('0x59'),_0x6b60('0x5a'),_0x6b60('0x5b'),'parent_name',_0x6b60('0x5c')];return db['SugarcrmAccount'][_0x6b60('0x4c')]({'where':{'id':_0x94ce0f[_0x6b60('0x46')]['id']},'attributes':['id',_0x6b60('0x5d'),_0x6b60('0x5e'),_0x6b60('0x5f')]})[_0x6b60('0x24')](handleEntityNotFound(_0x474d64,null))[_0x6b60('0x24')](function(_0x415b02){if(_0x415b02){_0x46b4be=_0x415b02['remoteUri'];var _0x781ca8=_0x46b4be['slice'](-0x1);if(_0x781ca8==='/'){_0x46b4be=_0x46b4be['substring'](0x0,_0x46b4be[_0x6b60('0x60')](_0x781ca8));}return rp({'method':'POST','uri':util[_0x6b60('0x61')]('%s%s',_0x46b4be,_0x6b60('0x62')),'json':!![],'form':{'method':_0x6b60('0x63'),'input_type':'JSON','response_type':_0x6b60('0x64'),'rest_data':JSON[_0x6b60('0x65')]({'user_auth':{'user_name':_0x415b02[_0x6b60('0x5d')],'password':_0x415b02[_0x6b60('0x5e')],'encryption':_0x6b60('0x66')},'application':_0x6b60('0x67')})}});}})[_0x6b60('0x24')](function(_0x31b393){if(_0x31b393&&_0x31b393[_0x6b60('0x29')]!==_0x6b60('0x68')&&_0x31b393[_0x6b60('0x29')]!=='Password\x20Expired'){return rp({'method':_0x6b60('0x69'),'uri':util['format']('%s%s',_0x46b4be,_0x6b60('0x62')),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':'JSON','rest_data':JSON[_0x6b60('0x65')]({'session':_0x31b393['id'],'module_name':_0x6b60('0x6a')})}})[_0x6b60('0x24')](function(_0x1c6356){if(_0x1c6356){var _0x49fc68=_[_0x6b60('0x6b')](_0x1c6356[_0x6b60('0x6c')]);_[_0x6b60('0x6d')](_0x49fc68,function(_0x21b910){return _0x128755[_0x6b60('0x6e')](_0x21b910[_0x6b60('0x29')]);});return{'count':_0x49fc68[_0x6b60('0x4e')],'rows':_[_0x6b60('0x2c')](_0x49fc68,function(_0x1eabcb){return{'id':_0x1eabcb[_0x6b60('0x29')],'name':_0x1eabcb[_0x6b60('0x6f')],'custom':_['endsWith'](_0x1eabcb[_0x6b60('0x29')],'_c')?!![]:![],'options':_0x1eabcb[_0x6b60('0x41')]?_[_0x6b60('0x2c')](_[_0x6b60('0x6b')](_0x1eabcb[_0x6b60('0x41')]),function(_0x290eb1){return{'name':_0x290eb1[_0x6b60('0x70')],'value':_0x290eb1['name']};}):[]};})};}})[_0x6b60('0x24')](respondWithResult(_0x474d64,null))[_0x6b60('0x44')](function(_0x4163a2){var _0x5269ec=_0x94ce0f[_0x6b60('0x32')][_0x6b60('0x71')]?0x1f4:_0x4163a2['statusCode']||0x1f4;logger['error'](_0x6b60('0x72'),_0x6b60('0x73'),_0x5269ec,JSON[_0x6b60('0x65')](_0x4163a2));delete _0x4163a2[_0x6b60('0x29')];if(_0x5269ec===0x191){_0x5269ec=0x190;}_0x474d64[_0x6b60('0x18')](_0x5269ec)['send'](_0x94ce0f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x4163a2[_0x6b60('0x74')]}:_0x4163a2);});}else{var _0x532180=0x1f4;_0x474d64[_0x6b60('0x18')](_0x532180)[_0x6b60('0x2a')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};