02c7117ea2e9db4d788af9e0b0a4569bd99adcab
[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 _0xf50f=['parent_name','direction','username','remoteUri','slice','substring','lastIndexOf','POST','%s%s','JSON','stringify','password','xCALLY\x20Motion\x20Integration','Invalid\x20Login','format','/service/v4_1/rest.php','remove','includes','endsWith','values','value','statusCode','Wrong\x20credentials','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','request\x20sent','debug','error','code','SugarcrmAccount,\x20%s,\x20%s','message','info','catch','sendStatus','end','json','count','offset','limit','status','set','apply','save','destroy','name','send','index','SugarcrmAccount','rawAttributes','type','model','map','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','show','keys','include','create','body','update','find','params','getConfigurations','SugarcrmConfiguration','length','findOne','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','getFields','assigned_user_id','date_start','duration_hours','duration_minutes','parent_id','parent_type'];(function(_0x271a80,_0x268bac){var _0xf8233e=function(_0x825987){while(--_0x825987){_0x271a80['push'](_0x271a80['shift']());}};_0xf8233e(++_0x268bac);}(_0xf50f,0x113));var _0xff50=function(_0x5e8c7a,_0x18eb53){_0x5e8c7a=_0x5e8c7a-0x0;var _0x408701=_0xf50f[_0x5e8c7a];return _0x408701;};'use strict';var pdf=require(_0xff50('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xff50('0x1'));var zipdir=require(_0xff50('0x2'));var jsonpatch=require(_0xff50('0x3'));var rp=require(_0xff50('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xff50('0x5'));var path=require('path');var sox=require(_0xff50('0x6'));var csv=require(_0xff50('0x7'));var ejs=require(_0xff50('0x8'));var fs=require('fs');var _=require(_0xff50('0x9'));var squel=require(_0xff50('0xa'));var crypto=require(_0xff50('0xb'));var jsforce=require(_0xff50('0xc'));var deskjs=require(_0xff50('0xd'));var toCsv=require(_0xff50('0x7'));var querystring=require(_0xff50('0xe'));var Papa=require(_0xff50('0xf'));var Redis=require(_0xff50('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xff50('0x11'));var as=require(_0xff50('0x12'));var hardwareService=require(_0xff50('0x13'));var logger=require(_0xff50('0x14'))('api');var utils=require(_0xff50('0x15'));var config=require('../../config/environment');var db=require(_0xff50('0x16'))['db'];var integrations=require(_0xff50('0x17'));var jayson=require(_0xff50('0x18'));var client=jayson[_0xff50('0x19')][_0xff50('0x1a')]({'port':0x232a});function checkPasswordPattern(_0x245439,_0x3c9e87,_0x35fd5d){if(_0x35fd5d){var _0x5ddd9f=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x5ddd9f[_0xff50('0x1b')](_0x3c9e87)){return _0x245439;}else{throw new db[(_0xff50('0x1c'))][(_0xff50('0x1d'))](_0xff50('0x1e'));}}else{return _0x245439;}}function respondWithRpcPromise(_0x2b80f1,_0x50b8d6,_0x4f9abc,_0x3579d7){return new BPromise(function(_0x44e85e,_0x52bb55){var _0x1fc28f=_0x3579d7||client;return _0x1fc28f[_0xff50('0x1f')](_0x2b80f1,_0x4f9abc)[_0xff50('0x20')](function(_0x3819a4){logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x50b8d6,_0xff50('0x21'));logger[_0xff50('0x22')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x50b8d6,'request\x20sent',JSON['stringify'](_0x3819a4));if(_0x3819a4[_0xff50('0x23')]){if(_0x3819a4[_0xff50('0x23')][_0xff50('0x24')]===0x1f4){logger['error'](_0xff50('0x25'),_0x50b8d6,_0x3819a4['error'][_0xff50('0x26')]);return _0x52bb55(_0x3819a4[_0xff50('0x23')]['message']);}logger[_0xff50('0x23')]('SugarcrmAccount,\x20%s,\x20%s',_0x50b8d6,_0x3819a4[_0xff50('0x23')]['message']);return _0x44e85e(_0x3819a4[_0xff50('0x23')][_0xff50('0x26')]);}else{logger[_0xff50('0x27')]('SugarcrmAccount,\x20%s,\x20%s',_0x50b8d6,_0xff50('0x21'));_0x44e85e(_0x3819a4['result'][_0xff50('0x26')]);}})[_0xff50('0x28')](function(_0x2802b1){logger[_0xff50('0x23')](_0xff50('0x25'),_0x50b8d6,_0x2802b1);_0x52bb55(_0x2802b1);});});}function respondWithStatusCode(_0x1b97d0,_0x9a7898){_0x9a7898=_0x9a7898||0xcc;return function(_0x3042ca){if(_0x3042ca){return _0x1b97d0[_0xff50('0x29')](_0x9a7898);}return _0x1b97d0['status'](_0x9a7898)[_0xff50('0x2a')]();};}function respondWithResult(_0x1f822c,_0x2e2671){_0x2e2671=_0x2e2671||0xc8;return function(_0x2d43a0){if(_0x2d43a0){return _0x1f822c['status'](_0x2e2671)[_0xff50('0x2b')](_0x2d43a0);}};}function respondWithFilteredResult(_0xb86ac1,_0x583af2){return function(_0x3740b2){if(_0x3740b2){var _0x2f7a51=_0x3740b2[_0xff50('0x2c')],_0x5c89e1=_0x583af2[_0xff50('0x2d')],_0x535823=_0x583af2[_0xff50('0x2d')]+_0x583af2[_0xff50('0x2e')],_0x29f67d;if(_0x535823>=_0x2f7a51){_0x535823=_0x2f7a51;_0x29f67d=0xc8;}else{_0x29f67d=0xce;}_0xb86ac1[_0xff50('0x2f')](_0x29f67d);return _0xb86ac1[_0xff50('0x30')]('Content-Range',_0x5c89e1+'-'+_0x535823+'/'+_0x2f7a51)[_0xff50('0x2b')](_0x3740b2);}return null;};}function patchUpdates(_0xd842cb){return function(_0x345280){try{jsonpatch[_0xff50('0x31')](_0x345280,_0xd842cb,!![]);}catch(_0x5dbf3a){return BPromise['reject'](_0x5dbf3a);}return _0x345280[_0xff50('0x32')]();};}function saveUpdates(_0x11e3bd,_0x18e89c){return function(_0x4d4b8c){if(_0x4d4b8c){return _0x4d4b8c['update'](_0x11e3bd)[_0xff50('0x20')](function(_0x168754){return _0x168754;});}return null;};}function removeEntity(_0x2cc432,_0x57e527){return function(_0x38d012){if(_0x38d012){return _0x38d012[_0xff50('0x33')]()[_0xff50('0x20')](function(){_0x2cc432[_0xff50('0x2f')](0xcc)[_0xff50('0x2a')]();});}};}function handleEntityNotFound(_0x5a1e0a,_0x4d0d96){return function(_0x398a91){if(!_0x398a91){_0x5a1e0a[_0xff50('0x29')](0x194);}return _0x398a91;};}function handleError(_0x4a4ed7,_0xa5da09){_0xa5da09=_0xa5da09||0x1f4;return function(_0x599f85){logger[_0xff50('0x23')](_0x599f85['stack']);if(_0x599f85[_0xff50('0x34')]){delete _0x599f85['name'];}_0x4a4ed7[_0xff50('0x2f')](_0xa5da09)[_0xff50('0x35')](_0x599f85);};}exports[_0xff50('0x36')]=function(_0x37aaa6,_0x2d354d){var _0x46e7e1={},_0x441d26={},_0x1eba11={'count':0x0,'rows':[]};var _0x5b8383=_['map'](db[_0xff50('0x37')][_0xff50('0x38')],function(_0xa2bacf){return{'name':_0xa2bacf['fieldName'],'type':_0xa2bacf[_0xff50('0x39')]['key']};});_0x441d26[_0xff50('0x3a')]=_[_0xff50('0x3b')](_0x5b8383,_0xff50('0x34'));_0x441d26['query']=_['keys'](_0x37aaa6['query']);_0x441d26[_0xff50('0x3c')]=_[_0xff50('0x3d')](_0x441d26[_0xff50('0x3a')],_0x441d26[_0xff50('0x3e')]);_0x46e7e1['attributes']=_[_0xff50('0x3d')](_0x441d26['model'],qs[_0xff50('0x3f')](_0x37aaa6['query'][_0xff50('0x3f')]));_0x46e7e1[_0xff50('0x40')]=_0x46e7e1[_0xff50('0x40')]['length']?_0x46e7e1['attributes']:_0x441d26[_0xff50('0x3a')];if(!_0x37aaa6[_0xff50('0x3e')][_0xff50('0x41')](_0xff50('0x42'))){_0x46e7e1[_0xff50('0x2e')]=qs['limit'](_0x37aaa6['query'][_0xff50('0x2e')]);_0x46e7e1[_0xff50('0x2d')]=qs[_0xff50('0x2d')](_0x37aaa6[_0xff50('0x3e')][_0xff50('0x2d')]);}_0x46e7e1[_0xff50('0x43')]=qs[_0xff50('0x44')](_0x37aaa6['query'][_0xff50('0x44')]);_0x46e7e1['where']=qs['filters'](_[_0xff50('0x45')](_0x37aaa6[_0xff50('0x3e')],_0x441d26[_0xff50('0x3c')]));if(_0x37aaa6[_0xff50('0x3e')][_0xff50('0x46')]){_0x46e7e1['where']=_[_0xff50('0x47')](_0x46e7e1[_0xff50('0x48')],{'$or':_['map'](_0x5b8383,function(_0x259a9f){if(_0x259a9f[_0xff50('0x39')]!==_0xff50('0x49')){var _0x2908ba={};_0x2908ba[_0x259a9f[_0xff50('0x34')]]={'$like':'%'+_0x37aaa6[_0xff50('0x3e')]['filter']+'%'};return _0x2908ba;}})});}_0x46e7e1=_[_0xff50('0x47')]({},_0x46e7e1,_0x37aaa6[_0xff50('0x4a')]);var _0x5e20f1={'where':_0x46e7e1[_0xff50('0x48')]};return db[_0xff50('0x37')][_0xff50('0x2c')](_0x5e20f1)[_0xff50('0x20')](function(_0x14279e){_0x1eba11['count']=_0x14279e;if(_0x37aaa6[_0xff50('0x3e')][_0xff50('0x4b')]){_0x46e7e1['include']=[{'all':!![]}];}return db[_0xff50('0x37')][_0xff50('0x4c')](_0x46e7e1);})[_0xff50('0x20')](function(_0x1bea2a){_0x1eba11['rows']=_0x1bea2a;return _0x1eba11;})[_0xff50('0x20')](respondWithFilteredResult(_0x2d354d,_0x46e7e1))['catch'](handleError(_0x2d354d,null));};exports[_0xff50('0x4d')]=function(_0x5a4155,_0x57a648){var _0x44ad03={'raw':![],'where':{'id':_0x5a4155['params']['id']}},_0x32a0ba={};_0x32a0ba['model']=_['keys'](db[_0xff50('0x37')]['rawAttributes']);_0x32a0ba[_0xff50('0x3e')]=_[_0xff50('0x4e')](_0x5a4155['query']);_0x32a0ba[_0xff50('0x3c')]=_[_0xff50('0x3d')](_0x32a0ba[_0xff50('0x3a')],_0x32a0ba['query']);_0x44ad03['attributes']=_[_0xff50('0x3d')](_0x32a0ba['model'],qs[_0xff50('0x3f')](_0x5a4155[_0xff50('0x3e')][_0xff50('0x3f')]));_0x44ad03[_0xff50('0x40')]=_0x44ad03['attributes']['length']?_0x44ad03[_0xff50('0x40')]:_0x32a0ba[_0xff50('0x3a')];if(_0x5a4155[_0xff50('0x3e')][_0xff50('0x4b')]){_0x44ad03[_0xff50('0x4f')]=[{'all':!![]}];}_0x44ad03=_[_0xff50('0x47')]({},_0x44ad03,_0x5a4155[_0xff50('0x4a')]);return db[_0xff50('0x37')]['find'](_0x44ad03)[_0xff50('0x20')](handleEntityNotFound(_0x57a648,null))[_0xff50('0x20')](respondWithResult(_0x57a648,null))[_0xff50('0x28')](handleError(_0x57a648,null));};exports['create']=function(_0x1fb172,_0x322cc5){return db[_0xff50('0x37')][_0xff50('0x50')](_0x1fb172[_0xff50('0x51')],{})[_0xff50('0x20')](respondWithResult(_0x322cc5,0xc9))['catch'](handleError(_0x322cc5,null));};exports[_0xff50('0x52')]=function(_0x4192bb,_0x450f93){if(_0x4192bb['body']['id']){delete _0x4192bb['body']['id'];}return db[_0xff50('0x37')][_0xff50('0x53')]({'where':{'id':_0x4192bb[_0xff50('0x54')]['id']}})['then'](handleEntityNotFound(_0x450f93,null))[_0xff50('0x20')](saveUpdates(_0x4192bb[_0xff50('0x51')],null))[_0xff50('0x20')](respondWithResult(_0x450f93,null))['catch'](handleError(_0x450f93,null));};exports[_0xff50('0x33')]=function(_0x1fd673,_0x3fb763){return db[_0xff50('0x37')][_0xff50('0x53')]({'where':{'id':_0x1fd673['params']['id']}})[_0xff50('0x20')](handleEntityNotFound(_0x3fb763,null))[_0xff50('0x20')](removeEntity(_0x3fb763,null))[_0xff50('0x28')](handleError(_0x3fb763,null));};exports[_0xff50('0x55')]=function(_0x4044f8,_0x457048,_0x4664b7){var _0x160360={};var _0x1c1c7c={};var _0x4f8812;var _0x4c1cb7;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x4044f8[_0xff50('0x54')]['id']}})['then'](handleEntityNotFound(_0x457048,null))[_0xff50('0x20')](function(_0x33e96c){if(_0x33e96c){_0x4f8812=_0x33e96c;_0x1c1c7c['model']=_['keys'](db[_0xff50('0x56')]['rawAttributes']);_0x1c1c7c[_0xff50('0x3e')]=_[_0xff50('0x4e')](_0x4044f8[_0xff50('0x3e')]);_0x1c1c7c[_0xff50('0x3c')]=_[_0xff50('0x3d')](_0x1c1c7c[_0xff50('0x3a')],_0x1c1c7c['query']);_0x160360['attributes']=_['intersection'](_0x1c1c7c['model'],qs[_0xff50('0x3f')](_0x4044f8[_0xff50('0x3e')][_0xff50('0x3f')]));_0x160360['attributes']=_0x160360[_0xff50('0x40')][_0xff50('0x57')]?_0x160360[_0xff50('0x40')]:_0x1c1c7c[_0xff50('0x3a')];_0x160360[_0xff50('0x43')]=qs[_0xff50('0x44')](_0x4044f8[_0xff50('0x3e')]['sort']);_0x160360[_0xff50('0x48')]=qs[_0xff50('0x3c')](_['pick'](_0x4044f8[_0xff50('0x3e')],_0x1c1c7c[_0xff50('0x3c')]));if(_0x4044f8['query'][_0xff50('0x46')]){_0x160360['where']=_[_0xff50('0x47')](_0x160360[_0xff50('0x48')],{'$or':_['map'](_0x160360['attributes'],function(_0x385f9b){var _0x41d682={};_0x41d682[_0x385f9b]={'$like':'%'+_0x4044f8[_0xff50('0x3e')]['filter']+'%'};return _0x41d682;})});}_0x160360=_[_0xff50('0x47')]({},_0x160360,_0x4044f8[_0xff50('0x4a')]);return _0x4f8812[_0xff50('0x55')](_0x160360);}})[_0xff50('0x20')](function(_0x504126){if(_0x504126){_0x4c1cb7=_0x504126[_0xff50('0x57')];if(!_0x4044f8['query']['hasOwnProperty'](_0xff50('0x42'))){_0x160360[_0xff50('0x2e')]=qs[_0xff50('0x2e')](_0x4044f8[_0xff50('0x3e')]['limit']);_0x160360[_0xff50('0x2d')]=qs[_0xff50('0x2d')](_0x4044f8['query']['offset']);}return _0x4f8812[_0xff50('0x55')](_0x160360);}})['then'](function(_0x35dfaf){if(_0x35dfaf){return _0x35dfaf?{'count':_0x4c1cb7,'rows':_0x35dfaf}:null;}})[_0xff50('0x20')](respondWithResult(_0x457048,null))[_0xff50('0x28')](handleError(_0x457048,null));};exports['addConfiguration']=function(_0x553257,_0x3da61a,_0x3a0761){if(_0x553257[_0xff50('0x51')]['id']){delete _0x553257['body']['id'];}return db[_0xff50('0x37')][_0xff50('0x58')]({'where':{'id':_0x553257[_0xff50('0x54')]['id']}})[_0xff50('0x20')](handleEntityNotFound(_0x3da61a,null))['then'](function(_0x12ce19){if(_0x12ce19){_0x553257['body'][_0xff50('0x59')]=_0x12ce19['id'];_0x553257['body'][_0xff50('0x5a')]=integrations[_0xff50('0x5b')](_0x553257[_0xff50('0x51')]['channel'],_0x553257[_0xff50('0x51')]['type']);_0x553257['body'][_0xff50('0x5c')]=integrations[_0xff50('0x5d')](_0x553257[_0xff50('0x51')][_0xff50('0x5e')],_0x553257['body'][_0xff50('0x39')]);return db['SugarcrmConfiguration']['create'](_0x553257[_0xff50('0x51')],{'include':[{'model':db[_0xff50('0x5f')],'as':_0xff50('0x5a')},{'model':db[_0xff50('0x5f')],'as':_0xff50('0x5c')}]});}return null;})[_0xff50('0x20')](respondWithResult(_0x3da61a,null))[_0xff50('0x28')](handleError(_0x3da61a,null));};exports[_0xff50('0x60')]=function(_0x576952,_0x395067,_0x5800a2){var _0x5860b4='';var _0x4df467=['id',_0xff50('0x34'),_0xff50('0x61'),'created_by','description',_0xff50('0x62'),_0xff50('0x63'),_0xff50('0x64'),_0xff50('0x65'),_0xff50('0x66'),_0xff50('0x67'),_0xff50('0x68')];return db['SugarcrmAccount']['findOne']({'where':{'id':_0x576952[_0xff50('0x54')]['id']},'attributes':['id',_0xff50('0x69'),'password',_0xff50('0x6a')]})[_0xff50('0x20')](handleEntityNotFound(_0x395067,null))[_0xff50('0x20')](function(_0x49a352){if(_0x49a352){_0x5860b4=_0x49a352[_0xff50('0x6a')];var _0x1cb5c7=_0x5860b4[_0xff50('0x6b')](-0x1);if(_0x1cb5c7==='/'){_0x5860b4=_0x5860b4[_0xff50('0x6c')](0x0,_0x5860b4[_0xff50('0x6d')](_0x1cb5c7));}return rp({'method':_0xff50('0x6e'),'uri':util['format'](_0xff50('0x6f'),_0x5860b4,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0xff50('0x70'),'rest_data':JSON[_0xff50('0x71')]({'user_auth':{'user_name':_0x49a352[_0xff50('0x69')],'password':_0x49a352[_0xff50('0x72')],'encryption':'PLAIN'},'application':_0xff50('0x73')})}});}})['then'](function(_0x282055){if(_0x282055&&_0x282055[_0xff50('0x34')]!==_0xff50('0x74')&&_0x282055['name']!=='Password\x20Expired'){return rp({'method':_0xff50('0x6e'),'uri':util[_0xff50('0x75')](_0xff50('0x6f'),_0x5860b4,_0xff50('0x76')),'json':!![],'form':{'method':'get_module_fields','input_type':_0xff50('0x70'),'response_type':_0xff50('0x70'),'rest_data':JSON[_0xff50('0x71')]({'session':_0x282055['id'],'module_name':'Calls'})}})[_0xff50('0x20')](function(_0x138d57){if(_0x138d57){var _0x253581=_['values'](_0x138d57['module_fields']);_[_0xff50('0x77')](_0x253581,function(_0x3fb9a0){return _0x4df467[_0xff50('0x78')](_0x3fb9a0[_0xff50('0x34')]);});return{'count':_0x253581[_0xff50('0x57')],'rows':_[_0xff50('0x3b')](_0x253581,function(_0x3e436b){return{'id':_0x3e436b[_0xff50('0x34')],'name':_0x3e436b['label'],'custom':_[_0xff50('0x79')](_0x3e436b[_0xff50('0x34')],'_c')?!![]:![],'options':_0x3e436b[_0xff50('0x4a')]?_[_0xff50('0x3b')](_[_0xff50('0x7a')](_0x3e436b[_0xff50('0x4a')]),function(_0x22c609){return{'name':_0x22c609[_0xff50('0x7b')],'value':_0x22c609[_0xff50('0x34')]};}):[]};})};}})[_0xff50('0x20')](respondWithResult(_0x395067,null))['catch'](function(_0x3d6469){var _0x2fa953=_0x576952[_0xff50('0x3e')][_0xff50('0x1b')]?0x1f4:_0x3d6469[_0xff50('0x7c')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x2fa953,JSON[_0xff50('0x71')](_0x3d6469));delete _0x3d6469[_0xff50('0x34')];if(_0x2fa953===0x191){_0x2fa953=0x190;}_0x395067[_0xff50('0x2f')](_0x2fa953)[_0xff50('0x35')](_0x576952[_0xff50('0x3e')][_0xff50('0x1b')]?{'message':'Wrong\x20credentials','statusCode':_0x3d6469[_0xff50('0x7c')]}:_0x3d6469);});}else{var _0xde89a6=0x1f4;_0x395067[_0xff50('0x2f')](_0xde89a6)['send']({'message':_0xff50('0x7d'),'statusCode':0x190});}});};