pha-hermes 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/auth/auth.d.ts +1 -0
- package/dist/api/practitioner/practitionerClient.d.ts +1 -1
- package/dist/api/timesheet/timesheetClient.d.ts +1 -2
- package/dist/pha-hermes.cjs.development.js +151 -89
- package/dist/pha-hermes.cjs.development.js.map +1 -1
- package/dist/pha-hermes.cjs.production.min.js +1 -1
- package/dist/pha-hermes.cjs.production.min.js.map +1 -1
- package/dist/pha-hermes.esm.js +151 -89
- package/dist/pha-hermes.esm.js.map +1 -1
- package/package.json +5 -3
- package/src/api/auth/auth.ts +46 -0
- package/src/api/practitioner/practitionerClient.ts +1 -1
- package/src/api/timesheet/timesheetClient.ts +9 -14
package/dist/api/auth/auth.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare class SFAuthenticator {
|
|
|
4
4
|
authenticatedAxiosInstance: AxiosInstance;
|
|
5
5
|
token: string | undefined;
|
|
6
6
|
private refreshToken;
|
|
7
|
+
private tokenRefreshPromise;
|
|
7
8
|
constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string);
|
|
8
9
|
initializeAuth(clientId: string, clientSecret: string): Promise<void>;
|
|
9
10
|
postToken(clientId?: string, clientSecret?: string): Promise<string>;
|
|
@@ -5,8 +5,7 @@ export declare class SFTimesheetClient {
|
|
|
5
5
|
constructor(axiosInstance: AxiosInstance);
|
|
6
6
|
updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry): Promise<void>;
|
|
7
7
|
getTimesheetId(workorderId: string): Promise<string>;
|
|
8
|
-
getTimesheetsForPractitioner(personnelID: string): Promise<any>;
|
|
9
|
-
getTimesheetsIdAndDateForPractitioner(personnelID: string): Promise<any>;
|
|
8
|
+
getTimesheetsForPractitioner(personnelID: string): Promise<any[]>;
|
|
10
9
|
getTimesheetHoursIds(workorderId: string): Promise<string[]>;
|
|
11
10
|
getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]>;
|
|
12
11
|
}
|
|
@@ -7,6 +7,11 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
|
|
|
7
7
|
var axios = _interopDefault(require('axios'));
|
|
8
8
|
var FormData = _interopDefault(require('form-data'));
|
|
9
9
|
|
|
10
|
+
function _arrayLikeToArray(r, a) {
|
|
11
|
+
(null == a || a > r.length) && (a = r.length);
|
|
12
|
+
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
10
15
|
function asyncGeneratorStep(n, t, e, r, o, a, c) {
|
|
11
16
|
try {
|
|
12
17
|
var i = n[a](c),
|
|
@@ -32,6 +37,23 @@ function _asyncToGenerator(n) {
|
|
|
32
37
|
});
|
|
33
38
|
};
|
|
34
39
|
}
|
|
40
|
+
function _createForOfIteratorHelperLoose(r, e) {
|
|
41
|
+
var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
|
|
42
|
+
if (t) return (t = t.call(r)).next.bind(t);
|
|
43
|
+
if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) {
|
|
44
|
+
t && (r = t);
|
|
45
|
+
var o = 0;
|
|
46
|
+
return function () {
|
|
47
|
+
return o >= r.length ? {
|
|
48
|
+
done: !0
|
|
49
|
+
} : {
|
|
50
|
+
done: !1,
|
|
51
|
+
value: r[o++]
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
56
|
+
}
|
|
35
57
|
function _regeneratorRuntime() {
|
|
36
58
|
_regeneratorRuntime = function () {
|
|
37
59
|
return e;
|
|
@@ -333,32 +355,98 @@ function _regeneratorRuntime() {
|
|
|
333
355
|
}
|
|
334
356
|
}, e;
|
|
335
357
|
}
|
|
358
|
+
function _unsupportedIterableToArray(r, a) {
|
|
359
|
+
if (r) {
|
|
360
|
+
if ("string" == typeof r) return _arrayLikeToArray(r, a);
|
|
361
|
+
var t = {}.toString.call(r).slice(8, -1);
|
|
362
|
+
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
336
365
|
|
|
337
366
|
var SFAuthenticator = /*#__PURE__*/function () {
|
|
338
367
|
function SFAuthenticator(authenticatedAxiosInstance, baseUrl) {
|
|
339
368
|
this.axiosTokenInstance = axios.create();
|
|
340
369
|
this.token = undefined;
|
|
341
370
|
this.refreshToken = undefined;
|
|
371
|
+
this.tokenRefreshPromise = null;
|
|
342
372
|
this.axiosTokenInstance.defaults.baseURL = baseUrl != null ? baseUrl : 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com';
|
|
343
373
|
this.authenticatedAxiosInstance = authenticatedAxiosInstance;
|
|
344
374
|
}
|
|
345
375
|
var _proto = SFAuthenticator.prototype;
|
|
346
376
|
_proto.initializeAuth = /*#__PURE__*/function () {
|
|
347
|
-
var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
377
|
+
var _initializeAuth = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(clientId, clientSecret) {
|
|
378
|
+
var _this = this;
|
|
348
379
|
var token;
|
|
349
|
-
return _regeneratorRuntime().wrap(function
|
|
350
|
-
while (1) switch (
|
|
380
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
381
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
351
382
|
case 0:
|
|
352
|
-
|
|
383
|
+
_context2.next = 2;
|
|
353
384
|
return this.postToken(clientId, clientSecret);
|
|
354
385
|
case 2:
|
|
355
|
-
token =
|
|
386
|
+
token = _context2.sent;
|
|
356
387
|
this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = "Bearer " + token;
|
|
357
|
-
|
|
388
|
+
this.authenticatedAxiosInstance.interceptors.response.use(function (response) {
|
|
389
|
+
return response;
|
|
390
|
+
}, /*#__PURE__*/function () {
|
|
391
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(error) {
|
|
392
|
+
var _error$response;
|
|
393
|
+
var originalRequest, newToken;
|
|
394
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
395
|
+
while (1) switch (_context.prev = _context.next) {
|
|
396
|
+
case 0:
|
|
397
|
+
originalRequest = error.config;
|
|
398
|
+
originalRequest._retryCount = originalRequest._retryCount || 0;
|
|
399
|
+
// If the error is 401 and we haven't exceeded max retries
|
|
400
|
+
if (!(((_error$response = error.response) == null ? void 0 : _error$response.status) === 401 && originalRequest._retryCount < 3)) {
|
|
401
|
+
_context.next = 22;
|
|
402
|
+
break;
|
|
403
|
+
}
|
|
404
|
+
originalRequest._retryCount++;
|
|
405
|
+
_context.prev = 4;
|
|
406
|
+
// Use existing token refresh if one is in progress
|
|
407
|
+
if (!_this.tokenRefreshPromise) {
|
|
408
|
+
_this.tokenRefreshPromise = _this.postToken(clientId, clientSecret);
|
|
409
|
+
}
|
|
410
|
+
_context.next = 8;
|
|
411
|
+
return _this.tokenRefreshPromise;
|
|
412
|
+
case 8:
|
|
413
|
+
newToken = _context.sent;
|
|
414
|
+
// Clear the refresh promise after it completes
|
|
415
|
+
_this.tokenRefreshPromise = null;
|
|
416
|
+
_this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = "Bearer " + newToken;
|
|
417
|
+
originalRequest.headers['Authorization'] = "Bearer " + newToken;
|
|
418
|
+
originalRequest.timeout = 5000;
|
|
419
|
+
_context.next = 15;
|
|
420
|
+
return Promise.race([_this.authenticatedAxiosInstance(originalRequest), new Promise(function (_, reject) {
|
|
421
|
+
return setTimeout(function () {
|
|
422
|
+
return reject(new Error('Retry request timeout'));
|
|
423
|
+
}, originalRequest.timeout);
|
|
424
|
+
})]);
|
|
425
|
+
case 15:
|
|
426
|
+
return _context.abrupt("return", _context.sent);
|
|
427
|
+
case 18:
|
|
428
|
+
_context.prev = 18;
|
|
429
|
+
_context.t0 = _context["catch"](4);
|
|
430
|
+
// Clear the refresh promise if it fails
|
|
431
|
+
_this.tokenRefreshPromise = null;
|
|
432
|
+
return _context.abrupt("return", Promise.reject(_context.t0));
|
|
433
|
+
case 22:
|
|
434
|
+
return _context.abrupt("return", Promise.reject(error));
|
|
435
|
+
case 23:
|
|
436
|
+
case "end":
|
|
437
|
+
return _context.stop();
|
|
438
|
+
}
|
|
439
|
+
}, _callee, null, [[4, 18]]);
|
|
440
|
+
}));
|
|
441
|
+
return function (_x3) {
|
|
442
|
+
return _ref.apply(this, arguments);
|
|
443
|
+
};
|
|
444
|
+
}());
|
|
445
|
+
case 5:
|
|
358
446
|
case "end":
|
|
359
|
-
return
|
|
447
|
+
return _context2.stop();
|
|
360
448
|
}
|
|
361
|
-
},
|
|
449
|
+
}, _callee2, this);
|
|
362
450
|
}));
|
|
363
451
|
function initializeAuth(_x, _x2) {
|
|
364
452
|
return _initializeAuth.apply(this, arguments);
|
|
@@ -366,55 +454,55 @@ var SFAuthenticator = /*#__PURE__*/function () {
|
|
|
366
454
|
return initializeAuth;
|
|
367
455
|
}();
|
|
368
456
|
_proto.postToken = /*#__PURE__*/function () {
|
|
369
|
-
var _postToken = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
457
|
+
var _postToken = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(clientId, clientSecret) {
|
|
370
458
|
var _response$data;
|
|
371
459
|
var tokenFormRequestBody, response;
|
|
372
|
-
return _regeneratorRuntime().wrap(function
|
|
373
|
-
while (1) switch (
|
|
460
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
461
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
374
462
|
case 0:
|
|
375
463
|
tokenFormRequestBody = new FormData();
|
|
376
464
|
if (!this.refreshToken) {
|
|
377
|
-
|
|
465
|
+
_context3.next = 6;
|
|
378
466
|
break;
|
|
379
467
|
}
|
|
380
468
|
tokenFormRequestBody.append('refresh_token', this.refreshToken);
|
|
381
469
|
tokenFormRequestBody.append('grant_type', 'refresh_token');
|
|
382
|
-
|
|
470
|
+
_context3.next = 13;
|
|
383
471
|
break;
|
|
384
472
|
case 6:
|
|
385
473
|
if (!(clientId && clientSecret)) {
|
|
386
|
-
|
|
474
|
+
_context3.next = 12;
|
|
387
475
|
break;
|
|
388
476
|
}
|
|
389
477
|
tokenFormRequestBody.append('client_id', clientId);
|
|
390
478
|
tokenFormRequestBody.append('client_secret', clientSecret);
|
|
391
479
|
tokenFormRequestBody.append('grant_type', 'client_credentials');
|
|
392
|
-
|
|
480
|
+
_context3.next = 13;
|
|
393
481
|
break;
|
|
394
482
|
case 12:
|
|
395
483
|
throw new Error('Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided');
|
|
396
484
|
case 13:
|
|
397
|
-
|
|
485
|
+
_context3.next = 15;
|
|
398
486
|
return this.axiosTokenInstance.post('/services/oauth2/token', tokenFormRequestBody, {
|
|
399
487
|
headers: tokenFormRequestBody.getHeaders()
|
|
400
488
|
});
|
|
401
489
|
case 15:
|
|
402
|
-
response =
|
|
490
|
+
response = _context3.sent;
|
|
403
491
|
this.token = response == null || (_response$data = response.data) == null ? void 0 : _response$data['access_token'];
|
|
404
492
|
if (this.token) {
|
|
405
|
-
|
|
493
|
+
_context3.next = 19;
|
|
406
494
|
break;
|
|
407
495
|
}
|
|
408
496
|
throw new Error('Authentication failed, could not get the access token');
|
|
409
497
|
case 19:
|
|
410
|
-
return
|
|
498
|
+
return _context3.abrupt("return", this.token);
|
|
411
499
|
case 20:
|
|
412
500
|
case "end":
|
|
413
|
-
return
|
|
501
|
+
return _context3.stop();
|
|
414
502
|
}
|
|
415
|
-
},
|
|
503
|
+
}, _callee3, this);
|
|
416
504
|
}));
|
|
417
|
-
function postToken(
|
|
505
|
+
function postToken(_x4, _x5) {
|
|
418
506
|
return _postToken.apply(this, arguments);
|
|
419
507
|
}
|
|
420
508
|
return postToken;
|
|
@@ -511,7 +599,7 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
511
599
|
}();
|
|
512
600
|
_proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
|
|
513
601
|
var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(personnelID) {
|
|
514
|
-
var url, query, data;
|
|
602
|
+
var url, query, data, timesheets, _iterator, _step, timesheet;
|
|
515
603
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
516
604
|
while (1) switch (_context3.prev = _context3.next) {
|
|
517
605
|
case 0:
|
|
@@ -525,8 +613,17 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
525
613
|
});
|
|
526
614
|
case 4:
|
|
527
615
|
data = _context3.sent;
|
|
528
|
-
|
|
529
|
-
|
|
616
|
+
timesheets = [];
|
|
617
|
+
for (_iterator = _createForOfIteratorHelperLoose(data.data.records); !(_step = _iterator()).done;) {
|
|
618
|
+
timesheet = _step.value;
|
|
619
|
+
timesheets.push({
|
|
620
|
+
workorderId: timesheet.WorkOrder__c,
|
|
621
|
+
id: timesheet.Id,
|
|
622
|
+
updatedAt: timesheet.LastModifiedDate
|
|
623
|
+
});
|
|
624
|
+
}
|
|
625
|
+
return _context3.abrupt("return", timesheets);
|
|
626
|
+
case 8:
|
|
530
627
|
case "end":
|
|
531
628
|
return _context3.stop();
|
|
532
629
|
}
|
|
@@ -537,114 +634,79 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
537
634
|
}
|
|
538
635
|
return getTimesheetsForPractitioner;
|
|
539
636
|
}();
|
|
540
|
-
_proto.getTimesheetsIdAndDateForPractitioner = /*#__PURE__*/function () {
|
|
541
|
-
var _getTimesheetsIdAndDateForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(personnelID) {
|
|
542
|
-
var url, query, data;
|
|
543
|
-
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
544
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
545
|
-
case 0:
|
|
546
|
-
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
547
|
-
query = "SELECT Id, LastModifiedDate\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '" + personnelID + "')";
|
|
548
|
-
_context4.next = 4;
|
|
549
|
-
return this.axiosInstance.get(url, {
|
|
550
|
-
params: {
|
|
551
|
-
q: query
|
|
552
|
-
}
|
|
553
|
-
});
|
|
554
|
-
case 4:
|
|
555
|
-
data = _context4.sent;
|
|
556
|
-
return _context4.abrupt("return", data.data.records.map(function (_ref) {
|
|
557
|
-
var Id = _ref.Id,
|
|
558
|
-
LastModifiedDate = _ref.LastModifiedDate;
|
|
559
|
-
return {
|
|
560
|
-
Id: Id,
|
|
561
|
-
LastModifiedDate: LastModifiedDate
|
|
562
|
-
};
|
|
563
|
-
}));
|
|
564
|
-
case 6:
|
|
565
|
-
case "end":
|
|
566
|
-
return _context4.stop();
|
|
567
|
-
}
|
|
568
|
-
}, _callee4, this);
|
|
569
|
-
}));
|
|
570
|
-
function getTimesheetsIdAndDateForPractitioner(_x5) {
|
|
571
|
-
return _getTimesheetsIdAndDateForPractitioner.apply(this, arguments);
|
|
572
|
-
}
|
|
573
|
-
return getTimesheetsIdAndDateForPractitioner;
|
|
574
|
-
}();
|
|
575
637
|
_proto.getTimesheetHoursIds = /*#__PURE__*/function () {
|
|
576
|
-
var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
638
|
+
var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workorderId) {
|
|
577
639
|
var timesheetId, url, query, _yield$this$axiosInst2, records;
|
|
578
|
-
return _regeneratorRuntime().wrap(function
|
|
579
|
-
while (1) switch (
|
|
640
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
641
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
580
642
|
case 0:
|
|
581
|
-
|
|
643
|
+
_context4.next = 2;
|
|
582
644
|
return this.getTimesheetId(workorderId);
|
|
583
645
|
case 2:
|
|
584
|
-
timesheetId =
|
|
646
|
+
timesheetId = _context4.sent;
|
|
585
647
|
// First we find the correct timesheet hours id
|
|
586
648
|
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
587
649
|
query = "SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'";
|
|
588
|
-
|
|
650
|
+
_context4.next = 7;
|
|
589
651
|
return this.axiosInstance.get(url, {
|
|
590
652
|
params: {
|
|
591
653
|
q: query
|
|
592
654
|
}
|
|
593
655
|
});
|
|
594
656
|
case 7:
|
|
595
|
-
_yield$this$axiosInst2 =
|
|
657
|
+
_yield$this$axiosInst2 = _context4.sent;
|
|
596
658
|
records = _yield$this$axiosInst2.data.records;
|
|
597
|
-
return
|
|
598
|
-
var Id =
|
|
659
|
+
return _context4.abrupt("return", records.map(function (_ref) {
|
|
660
|
+
var Id = _ref.Id;
|
|
599
661
|
return Id;
|
|
600
662
|
}));
|
|
601
663
|
case 10:
|
|
602
664
|
case "end":
|
|
603
|
-
return
|
|
665
|
+
return _context4.stop();
|
|
604
666
|
}
|
|
605
|
-
},
|
|
667
|
+
}, _callee4, this);
|
|
606
668
|
}));
|
|
607
|
-
function getTimesheetHoursIds(
|
|
669
|
+
function getTimesheetHoursIds(_x5) {
|
|
608
670
|
return _getTimesheetHoursIds.apply(this, arguments);
|
|
609
671
|
}
|
|
610
672
|
return getTimesheetHoursIds;
|
|
611
673
|
}();
|
|
612
674
|
_proto.getTimesheetHours = /*#__PURE__*/function () {
|
|
613
|
-
var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
675
|
+
var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workorderId) {
|
|
614
676
|
var _this = this;
|
|
615
677
|
var timesheetHourIds;
|
|
616
|
-
return _regeneratorRuntime().wrap(function
|
|
617
|
-
while (1) switch (
|
|
678
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
679
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
618
680
|
case 0:
|
|
619
|
-
|
|
681
|
+
_context6.next = 2;
|
|
620
682
|
return this.getTimesheetHoursIds(workorderId);
|
|
621
683
|
case 2:
|
|
622
|
-
timesheetHourIds =
|
|
623
|
-
return
|
|
624
|
-
var
|
|
625
|
-
return _regeneratorRuntime().wrap(function
|
|
626
|
-
while (1) switch (
|
|
684
|
+
timesheetHourIds = _context6.sent;
|
|
685
|
+
return _context6.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
|
|
686
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(id) {
|
|
687
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
688
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
627
689
|
case 0:
|
|
628
|
-
return
|
|
690
|
+
return _context5.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
|
|
629
691
|
return res.data;
|
|
630
692
|
}).then(toTimesheetDayEntry));
|
|
631
693
|
case 1:
|
|
632
694
|
case "end":
|
|
633
|
-
return
|
|
695
|
+
return _context5.stop();
|
|
634
696
|
}
|
|
635
|
-
},
|
|
697
|
+
}, _callee5);
|
|
636
698
|
}));
|
|
637
|
-
return function (
|
|
638
|
-
return
|
|
699
|
+
return function (_x7) {
|
|
700
|
+
return _ref2.apply(this, arguments);
|
|
639
701
|
};
|
|
640
702
|
}())));
|
|
641
703
|
case 4:
|
|
642
704
|
case "end":
|
|
643
|
-
return
|
|
705
|
+
return _context6.stop();
|
|
644
706
|
}
|
|
645
|
-
},
|
|
707
|
+
}, _callee6, this);
|
|
646
708
|
}));
|
|
647
|
-
function getTimesheetHours(
|
|
709
|
+
function getTimesheetHours(_x6) {
|
|
648
710
|
return _getTimesheetHours.apply(this, arguments);
|
|
649
711
|
}
|
|
650
712
|
return getTimesheetHours;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n return data.data.records\n }\n\n async getTimesheetsIdAndDateForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Id, LastModifiedDate\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n return data.data.records.map(({ Id, LastModifiedDate }) => ({ Id, LastModifiedDate }))\n }\n\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models/practitioner'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee","clientId","clientSecret","token","wrap","_callee$","_context","prev","next","postToken","sent","headers","common","stop","_x","_x2","apply","arguments","_postToken","_callee2","_response$data","tokenFormRequestBody","response","_callee2$","_context2","FormData","refreshToken","append","Error","post","getHeaders","data","abrupt","_x3","_x4","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","status","t0","console","error","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","_callee3","personnelID","_callee3$","_context3","getTimesheetsIdAndDateForPractitioner","_getTimesheetsIdAndDateForPractitioner","_callee4","_callee4$","_context4","map","_ref","LastModifiedDate","_x5","getTimesheetHoursIds","_getTimesheetHoursIds","_callee5","timesheetId","_yield$this$axiosInst2","_callee5$","_context5","_ref2","_x6","getTimesheetHours","_getTimesheetHours","_callee7","_this","timesheetHourIds","_callee7$","_context7","Promise","all","_ref3","_callee6","id","_callee6$","_context6","then","res","toTimesheetDayEntry","_x8","_x7","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","updatedAt","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","value","Value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n\n this.authenticatedAxiosInstance.interceptors.response.use(\n response => response,\n async error => {\n const originalRequest = error.config\n originalRequest._retryCount = originalRequest._retryCount || 0\n\n // If the error is 401 and we haven't exceeded max retries\n if (error.response?.status === 401 && originalRequest._retryCount < 3) {\n originalRequest._retryCount++\n\n try {\n // Use existing token refresh if one is in progress\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.postToken(clientId, clientSecret)\n }\n\n const newToken = await this.tokenRefreshPromise\n // Clear the refresh promise after it completes\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] =\n `Bearer ${newToken}`\n originalRequest.headers['Authorization'] = `Bearer ${newToken}`\n\n originalRequest.timeout = 5000\n\n return await Promise.race([\n this.authenticatedAxiosInstance(originalRequest),\n new Promise((_, reject) =>\n setTimeout(\n () => reject(new Error('Retry request timeout')),\n originalRequest.timeout\n )\n )\n ])\n } catch (refreshError) {\n // Clear the refresh promise if it fails\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x3","apply","arguments","_x","_x2","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x4","_x5","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","console","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","timesheetHourIds","_callee6$","_context6","all","_ref2","_callee5","_callee5$","_context5","then","res","toTimesheetDayEntry","_x7","_x6","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
|