04fc9dec00e2d97787bb4cbf1169496508b2618d
[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 _0x2199=['request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','index','map','SugarcrmAccount','fieldName','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','catch','create','body','destroy','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','Subjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','date_start','duration_hours','parent_id','parent_name','direction','username','password','remoteUri','slice','lastIndexOf','POST','format','%s%s','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','/service/v4_1/rest.php','get_module_fields','Calls','values','module_fields','remove','includes','label','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','rimraf','zip-dir'];(function(_0xd41f6c,_0x2ee0b2){var _0x4db302=function(_0x1446d9){while(--_0x1446d9){_0xd41f6c['push'](_0xd41f6c['shift']());}};_0x4db302(++_0x2ee0b2);}(_0x2199,0x1ce));var _0x9219=function(_0xd4d193,_0x1b7e89){_0xd4d193=_0xd4d193-0x0;var _0x3de8d1=_0x2199[_0xd4d193];return _0x3de8d1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9219('0x0'));var zipdir=require(_0x9219('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9219('0x2'));var moment=require('moment');var BPromise=require(_0x9219('0x3'));var Mustache=require(_0x9219('0x4'));var util=require(_0x9219('0x5'));var path=require(_0x9219('0x6'));var sox=require('sox');var csv=require(_0x9219('0x7'));var ejs=require(_0x9219('0x8'));var fs=require('fs');var fs_extra=require(_0x9219('0x9'));var _=require(_0x9219('0xa'));var squel=require(_0x9219('0xb'));var crypto=require(_0x9219('0xc'));var jsforce=require(_0x9219('0xd'));var deskjs=require(_0x9219('0xe'));var toCsv=require(_0x9219('0x7'));var querystring=require(_0x9219('0xf'));var Papa=require(_0x9219('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9219('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9219('0x12'));var utils=require(_0x9219('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9219('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x15fa46,_0x1914c5){_0x1914c5=_0x1914c5||0xcc;return function(_0x396bdd){if(_0x396bdd){return _0x15fa46[_0x9219('0x15')](_0x1914c5);}return _0x15fa46['status'](_0x1914c5)[_0x9219('0x16')]();};}function respondWithResult(_0x235944,_0xd6e630){_0xd6e630=_0xd6e630||0xc8;return function(_0x5dfc6a){if(_0x5dfc6a){return _0x235944[_0x9219('0x17')](_0xd6e630)[_0x9219('0x18')](_0x5dfc6a);}};}function respondWithFilteredResult(_0x39e963,_0x50a1be){return function(_0x556967){if(_0x556967){var _0xd13f6=typeof _0x50a1be[_0x9219('0x19')]===_0x9219('0x1a')&&typeof _0x50a1be[_0x9219('0x1b')]==='undefined';var _0x5aeb79=_0x556967[_0x9219('0x1c')];var _0x4b013b=_0xd13f6?0x0:_0x50a1be['offset'];var _0x107084=_0xd13f6?_0x556967['count']:_0x50a1be['offset']+_0x50a1be[_0x9219('0x1b')];var _0x5e3983;if(_0x107084>=_0x5aeb79){_0x107084=_0x5aeb79;_0x5e3983=0xc8;}else{_0x5e3983=0xce;}_0x39e963[_0x9219('0x17')](_0x5e3983);return _0x39e963[_0x9219('0x1d')](_0x9219('0x1e'),_0x4b013b+'-'+_0x107084+'/'+_0x5aeb79)[_0x9219('0x18')](_0x556967);}return null;};}function patchUpdates(_0x27790b){return function(_0x4a1b39){try{jsonpatch['apply'](_0x4a1b39,_0x27790b,!![]);}catch(_0x2ff310){return BPromise[_0x9219('0x1f')](_0x2ff310);}return _0x4a1b39[_0x9219('0x20')]();};}function saveUpdates(_0x258497,_0x1cec2d){return function(_0x12e6a5){if(_0x12e6a5){return _0x12e6a5[_0x9219('0x21')](_0x258497)['then'](function(_0x37d2f8){return _0x37d2f8;});}return null;};}function removeEntity(_0x2fe27f,_0x21d3c2){return function(_0x4f57af){if(_0x4f57af){return _0x4f57af['destroy']()[_0x9219('0x22')](function(){_0x2fe27f[_0x9219('0x17')](0xcc)[_0x9219('0x16')]();});}};}function handleEntityNotFound(_0x1bceb3,_0x2a6669){return function(_0x30d3c5){if(!_0x30d3c5){_0x1bceb3[_0x9219('0x15')](0x194);}return _0x30d3c5;};}function handleError(_0x3f3bab,_0x524189){_0x524189=_0x524189||0x1f4;return function(_0x5ce95a){logger[_0x9219('0x23')](_0x5ce95a[_0x9219('0x24')]);if(_0x5ce95a['name']){delete _0x5ce95a['name'];}_0x3f3bab['status'](_0x524189)['send'](_0x5ce95a);};}exports[_0x9219('0x25')]=function(_0x17fa10,_0x5376c6){var _0x2b891b={},_0x2f9ba1={},_0x7128b0={'count':0x0,'rows':[]};var _0xd3099e=_[_0x9219('0x26')](db[_0x9219('0x27')]['rawAttributes'],function(_0x3d572c){return{'name':_0x3d572c[_0x9219('0x28')],'type':_0x3d572c['type'][_0x9219('0x29')]};});_0x2f9ba1[_0x9219('0x2a')]=_[_0x9219('0x26')](_0xd3099e,_0x9219('0x2b'));_0x2f9ba1['query']=_['keys'](_0x17fa10[_0x9219('0x2c')]);_0x2f9ba1[_0x9219('0x2d')]=_[_0x9219('0x2e')](_0x2f9ba1[_0x9219('0x2a')],_0x2f9ba1['query']);_0x2b891b[_0x9219('0x2f')]=_[_0x9219('0x2e')](_0x2f9ba1[_0x9219('0x2a')],qs[_0x9219('0x30')](_0x17fa10[_0x9219('0x2c')][_0x9219('0x30')]));_0x2b891b['attributes']=_0x2b891b[_0x9219('0x2f')][_0x9219('0x31')]?_0x2b891b[_0x9219('0x2f')]:_0x2f9ba1['model'];if(!_0x17fa10[_0x9219('0x2c')][_0x9219('0x32')](_0x9219('0x33'))){_0x2b891b[_0x9219('0x1b')]=qs[_0x9219('0x1b')](_0x17fa10[_0x9219('0x2c')][_0x9219('0x1b')]);_0x2b891b[_0x9219('0x19')]=qs['offset'](_0x17fa10[_0x9219('0x2c')][_0x9219('0x19')]);}_0x2b891b[_0x9219('0x34')]=qs['sort'](_0x17fa10[_0x9219('0x2c')][_0x9219('0x35')]);_0x2b891b['where']=qs['filters'](_[_0x9219('0x36')](_0x17fa10['query'],_0x2f9ba1[_0x9219('0x2d')]),_0xd3099e);if(_0x17fa10[_0x9219('0x2c')][_0x9219('0x37')]){_0x2b891b[_0x9219('0x38')]=_['merge'](_0x2b891b[_0x9219('0x38')],{'$or':_[_0x9219('0x26')](_0xd3099e,function(_0x2d4c6f){if(_0x2d4c6f[_0x9219('0x39')]!==_0x9219('0x3a')){var _0x4534c2={};_0x4534c2[_0x2d4c6f[_0x9219('0x2b')]]={'$like':'%'+_0x17fa10[_0x9219('0x2c')][_0x9219('0x37')]+'%'};return _0x4534c2;}})});}_0x2b891b=_[_0x9219('0x3b')]({},_0x2b891b,_0x17fa10[_0x9219('0x3c')]);var _0x1f7cdb={'where':_0x2b891b['where']};return db[_0x9219('0x27')]['count'](_0x1f7cdb)[_0x9219('0x22')](function(_0x15809b){_0x7128b0[_0x9219('0x1c')]=_0x15809b;if(_0x17fa10[_0x9219('0x2c')][_0x9219('0x3d')]){_0x2b891b[_0x9219('0x3e')]=[{'all':!![]}];}return db[_0x9219('0x27')][_0x9219('0x3f')](_0x2b891b);})[_0x9219('0x22')](function(_0x2b2d23){_0x7128b0[_0x9219('0x40')]=_0x2b2d23;return _0x7128b0;})['then'](respondWithFilteredResult(_0x5376c6,_0x2b891b))['catch'](handleError(_0x5376c6,null));};exports[_0x9219('0x41')]=function(_0xe0ea44,_0x203c60){var _0xd1b20e={'raw':![],'where':{'id':_0xe0ea44[_0x9219('0x42')]['id']}},_0x5de5b0={};_0x5de5b0[_0x9219('0x2a')]=_[_0x9219('0x43')](db[_0x9219('0x27')][_0x9219('0x44')]);_0x5de5b0[_0x9219('0x2c')]=_[_0x9219('0x43')](_0xe0ea44[_0x9219('0x2c')]);_0x5de5b0['filters']=_[_0x9219('0x2e')](_0x5de5b0[_0x9219('0x2a')],_0x5de5b0[_0x9219('0x2c')]);_0xd1b20e['attributes']=_[_0x9219('0x2e')](_0x5de5b0[_0x9219('0x2a')],qs[_0x9219('0x30')](_0xe0ea44['query'][_0x9219('0x30')]));_0xd1b20e[_0x9219('0x2f')]=_0xd1b20e[_0x9219('0x2f')][_0x9219('0x31')]?_0xd1b20e[_0x9219('0x2f')]:_0x5de5b0[_0x9219('0x2a')];if(_0xe0ea44[_0x9219('0x2c')][_0x9219('0x3d')]){_0xd1b20e[_0x9219('0x3e')]=[{'all':!![]}];}_0xd1b20e=_[_0x9219('0x3b')]({},_0xd1b20e,_0xe0ea44[_0x9219('0x3c')]);return db['SugarcrmAccount'][_0x9219('0x45')](_0xd1b20e)[_0x9219('0x22')](handleEntityNotFound(_0x203c60,null))['then'](respondWithResult(_0x203c60,null))[_0x9219('0x46')](handleError(_0x203c60,null));};exports[_0x9219('0x47')]=function(_0x24fb4e,_0x4889d4){return db['SugarcrmAccount'][_0x9219('0x47')](_0x24fb4e[_0x9219('0x48')],{})[_0x9219('0x22')](respondWithResult(_0x4889d4,0xc9))[_0x9219('0x46')](handleError(_0x4889d4,null));};exports['update']=function(_0x1cfae8,_0x238bed){if(_0x1cfae8[_0x9219('0x48')]['id']){delete _0x1cfae8[_0x9219('0x48')]['id'];}return db[_0x9219('0x27')][_0x9219('0x45')]({'where':{'id':_0x1cfae8[_0x9219('0x42')]['id']}})['then'](handleEntityNotFound(_0x238bed,null))[_0x9219('0x22')](saveUpdates(_0x1cfae8[_0x9219('0x48')],null))[_0x9219('0x22')](respondWithResult(_0x238bed,null))[_0x9219('0x46')](handleError(_0x238bed,null));};exports[_0x9219('0x49')]=function(_0x52d9f4,_0x4f304a){return db[_0x9219('0x27')][_0x9219('0x45')]({'where':{'id':_0x52d9f4[_0x9219('0x42')]['id']}})[_0x9219('0x22')](handleEntityNotFound(_0x4f304a,null))[_0x9219('0x22')](removeEntity(_0x4f304a,null))[_0x9219('0x46')](handleError(_0x4f304a,null));};exports[_0x9219('0x4a')]=function(_0x332a20,_0x40cc79,_0x20e797){var _0x599c1f={};var _0x479e5e={};var _0x2a9378;var _0x102963;return db['SugarcrmAccount'][_0x9219('0x4b')]({'where':{'id':_0x332a20[_0x9219('0x42')]['id']}})[_0x9219('0x22')](handleEntityNotFound(_0x40cc79,null))['then'](function(_0x59544a){if(_0x59544a){_0x2a9378=_0x59544a;_0x479e5e[_0x9219('0x2a')]=_['keys'](db[_0x9219('0x4c')]['rawAttributes']);_0x479e5e['query']=_['keys'](_0x332a20['query']);_0x479e5e[_0x9219('0x2d')]=_['intersection'](_0x479e5e[_0x9219('0x2a')],_0x479e5e[_0x9219('0x2c')]);_0x599c1f[_0x9219('0x2f')]=_[_0x9219('0x2e')](_0x479e5e['model'],qs[_0x9219('0x30')](_0x332a20[_0x9219('0x2c')][_0x9219('0x30')]));_0x599c1f[_0x9219('0x2f')]=_0x599c1f['attributes']['length']?_0x599c1f['attributes']:_0x479e5e[_0x9219('0x2a')];_0x599c1f[_0x9219('0x34')]=qs[_0x9219('0x35')](_0x332a20[_0x9219('0x2c')]['sort']);_0x599c1f['where']=qs[_0x9219('0x2d')](_[_0x9219('0x36')](_0x332a20['query'],_0x479e5e[_0x9219('0x2d')]));if(_0x332a20[_0x9219('0x2c')][_0x9219('0x37')]){_0x599c1f[_0x9219('0x38')]=_[_0x9219('0x3b')](_0x599c1f[_0x9219('0x38')],{'$or':_[_0x9219('0x26')](_0x599c1f[_0x9219('0x2f')],function(_0x3a6382){var _0x19c3ce={};_0x19c3ce[_0x3a6382]={'$like':'%'+_0x332a20[_0x9219('0x2c')][_0x9219('0x37')]+'%'};return _0x19c3ce;})});}_0x599c1f=_['merge']({},_0x599c1f,_0x332a20[_0x9219('0x3c')]);return _0x2a9378[_0x9219('0x4a')](_0x599c1f);}})[_0x9219('0x22')](function(_0x21dbdc){if(_0x21dbdc){_0x102963=_0x21dbdc[_0x9219('0x31')];if(!_0x332a20[_0x9219('0x2c')][_0x9219('0x32')](_0x9219('0x33'))){_0x599c1f[_0x9219('0x1b')]=qs[_0x9219('0x1b')](_0x332a20[_0x9219('0x2c')][_0x9219('0x1b')]);_0x599c1f[_0x9219('0x19')]=qs[_0x9219('0x19')](_0x332a20[_0x9219('0x2c')][_0x9219('0x19')]);}return _0x2a9378[_0x9219('0x4a')](_0x599c1f);}})[_0x9219('0x22')](function(_0x287cb4){if(_0x287cb4){return _0x287cb4?{'count':_0x102963,'rows':_0x287cb4}:null;}})[_0x9219('0x22')](respondWithResult(_0x40cc79,null))[_0x9219('0x46')](handleError(_0x40cc79,null));};exports[_0x9219('0x4d')]=function(_0x5ed619,_0x4564f7,_0x1cbef3){if(_0x5ed619[_0x9219('0x48')]['id']){delete _0x5ed619[_0x9219('0x48')]['id'];}return db['SugarcrmAccount'][_0x9219('0x4b')]({'where':{'id':_0x5ed619[_0x9219('0x42')]['id']}})['then'](handleEntityNotFound(_0x4564f7,null))[_0x9219('0x22')](function(_0x4ef52a){if(_0x4ef52a){_0x5ed619[_0x9219('0x48')]['AccountId']=_0x4ef52a['id'];_0x5ed619[_0x9219('0x48')][_0x9219('0x4e')]=integrations['getSubjects'](_0x5ed619[_0x9219('0x48')][_0x9219('0x4f')],_0x5ed619[_0x9219('0x48')][_0x9219('0x39')]);_0x5ed619[_0x9219('0x48')]['Descriptions']=integrations[_0x9219('0x50')](_0x5ed619[_0x9219('0x48')][_0x9219('0x4f')],_0x5ed619['body'][_0x9219('0x39')]);return db[_0x9219('0x4c')][_0x9219('0x47')](_0x5ed619[_0x9219('0x48')],{'include':[{'model':db['SugarcrmField'],'as':_0x9219('0x4e')},{'model':db[_0x9219('0x51')],'as':_0x9219('0x52')}]});}return null;})[_0x9219('0x22')](respondWithResult(_0x4564f7,null))[_0x9219('0x46')](handleError(_0x4564f7,null));};exports[_0x9219('0x53')]=function(_0x5cda75,_0x479c1c,_0x880da9){var _0x1daa23='';var _0x464764=['id',_0x9219('0x2b'),_0x9219('0x54'),'created_by','description',_0x9219('0x55'),_0x9219('0x56'),'duration_minutes',_0x9219('0x57'),'parent_type',_0x9219('0x58'),_0x9219('0x59')];return db['SugarcrmAccount'][_0x9219('0x4b')]({'where':{'id':_0x5cda75[_0x9219('0x42')]['id']},'attributes':['id',_0x9219('0x5a'),_0x9219('0x5b'),'remoteUri']})['then'](handleEntityNotFound(_0x479c1c,null))[_0x9219('0x22')](function(_0x20f42d){if(_0x20f42d){_0x1daa23=_0x20f42d[_0x9219('0x5c')];var _0x316f45=_0x1daa23[_0x9219('0x5d')](-0x1);if(_0x316f45==='/'){_0x1daa23=_0x1daa23['substring'](0x0,_0x1daa23[_0x9219('0x5e')](_0x316f45));}return rp({'method':_0x9219('0x5f'),'uri':util[_0x9219('0x60')](_0x9219('0x61'),_0x1daa23,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x9219('0x62'),'input_type':_0x9219('0x63'),'response_type':_0x9219('0x63'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x20f42d[_0x9219('0x5a')],'password':_0x20f42d[_0x9219('0x5b')],'encryption':_0x9219('0x64')},'application':_0x9219('0x65')})}});}})[_0x9219('0x22')](function(_0x3f01f7){if(_0x3f01f7&&_0x3f01f7[_0x9219('0x2b')]!==_0x9219('0x66')&&_0x3f01f7[_0x9219('0x2b')]!=='Password\x20Expired'){return rp({'method':'POST','uri':util[_0x9219('0x60')](_0x9219('0x61'),_0x1daa23,_0x9219('0x67')),'json':!![],'form':{'method':_0x9219('0x68'),'input_type':'JSON','response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3f01f7['id'],'module_name':_0x9219('0x69')})}})[_0x9219('0x22')](function(_0x4e16b9){if(_0x4e16b9){var _0x2e9740=_[_0x9219('0x6a')](_0x4e16b9[_0x9219('0x6b')]);_[_0x9219('0x6c')](_0x2e9740,function(_0x229e30){return _0x464764[_0x9219('0x6d')](_0x229e30[_0x9219('0x2b')]);});return{'count':_0x2e9740[_0x9219('0x31')],'rows':_[_0x9219('0x26')](_0x2e9740,function(_0x3dd106){return{'id':_0x3dd106[_0x9219('0x2b')],'name':_0x3dd106[_0x9219('0x6e')],'custom':_['endsWith'](_0x3dd106[_0x9219('0x2b')],'_c')?!![]:![],'options':_0x3dd106[_0x9219('0x3c')]?_[_0x9219('0x26')](_['values'](_0x3dd106['options']),function(_0x4190c5){return{'name':_0x4190c5[_0x9219('0x6f')],'value':_0x4190c5['name']};}):[]};})};}})[_0x9219('0x22')](respondWithResult(_0x479c1c,null))[_0x9219('0x46')](function(_0x20b04b){var _0x263346=_0x5cda75[_0x9219('0x2c')][_0x9219('0x70')]?0x1f4:_0x20b04b[_0x9219('0x71')]||0x1f4;logger[_0x9219('0x23')](_0x9219('0x72'),_0x9219('0x53'),_0x263346,JSON['stringify'](_0x20b04b));delete _0x20b04b[_0x9219('0x2b')];if(_0x263346===0x191){_0x263346=0x190;}_0x479c1c[_0x9219('0x17')](_0x263346)[_0x9219('0x73')](_0x5cda75[_0x9219('0x2c')][_0x9219('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x20b04b[_0x9219('0x71')]}:_0x20b04b);});}else{var _0x5dca36=0x1f4;_0x479c1c[_0x9219('0x17')](_0x5dca36)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};