pha-hermes 1.8.0 → 1.9.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/timesheet/timesheetClient.d.ts +2 -0
- package/dist/pha-hermes.cjs.development.js +139 -49
- 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 +139 -49
- package/dist/pha-hermes.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/api/timesheet/timesheetClient.ts +46 -0
|
@@ -5,8 +5,10 @@ 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
|
+
getTimesheetIds(workorderId: string): Promise<string[]>;
|
|
8
9
|
getTimesheetsForPractitioner(personnelID: string): Promise<any[]>;
|
|
9
10
|
getTimesheetHoursIds(workorderId: string): Promise<string[]>;
|
|
11
|
+
getTimesheetHoursId(workorderId: string, timesheetDate: Date): Promise<string[]>;
|
|
10
12
|
getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]>;
|
|
11
13
|
getPayPeriods(): Promise<any>;
|
|
12
14
|
}
|
|
@@ -605,14 +605,15 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
605
605
|
}
|
|
606
606
|
return getTimesheetId;
|
|
607
607
|
}();
|
|
608
|
-
_proto.
|
|
609
|
-
var
|
|
610
|
-
var url, query,
|
|
608
|
+
_proto.getTimesheetIds = /*#__PURE__*/function () {
|
|
609
|
+
var _getTimesheetIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workorderId) {
|
|
610
|
+
var url, query, _yield$this$axiosInst2, records;
|
|
611
611
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
612
612
|
while (1) switch (_context3.prev = _context3.next) {
|
|
613
613
|
case 0:
|
|
614
|
+
// Find all timesheet Ids that belong to this WO
|
|
614
615
|
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
615
|
-
query = "SELECT
|
|
616
|
+
query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n ";
|
|
616
617
|
_context3.next = 4;
|
|
617
618
|
return this.axiosInstance.get(url, {
|
|
618
619
|
params: {
|
|
@@ -620,7 +621,38 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
620
621
|
}
|
|
621
622
|
});
|
|
622
623
|
case 4:
|
|
623
|
-
|
|
624
|
+
_yield$this$axiosInst2 = _context3.sent;
|
|
625
|
+
records = _yield$this$axiosInst2.data.records;
|
|
626
|
+
return _context3.abrupt("return", records.map(function (record) {
|
|
627
|
+
return record.Id;
|
|
628
|
+
}));
|
|
629
|
+
case 7:
|
|
630
|
+
case "end":
|
|
631
|
+
return _context3.stop();
|
|
632
|
+
}
|
|
633
|
+
}, _callee3, this);
|
|
634
|
+
}));
|
|
635
|
+
function getTimesheetIds(_x4) {
|
|
636
|
+
return _getTimesheetIds.apply(this, arguments);
|
|
637
|
+
}
|
|
638
|
+
return getTimesheetIds;
|
|
639
|
+
}();
|
|
640
|
+
_proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
|
|
641
|
+
var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(personnelID) {
|
|
642
|
+
var url, query, data, timesheets, _iterator, _step, timesheet;
|
|
643
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
644
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
645
|
+
case 0:
|
|
646
|
+
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
647
|
+
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 + "')";
|
|
648
|
+
_context4.next = 4;
|
|
649
|
+
return this.axiosInstance.get(url, {
|
|
650
|
+
params: {
|
|
651
|
+
q: query
|
|
652
|
+
}
|
|
653
|
+
});
|
|
654
|
+
case 4:
|
|
655
|
+
data = _context4.sent;
|
|
624
656
|
timesheets = [];
|
|
625
657
|
for (_iterator = _createForOfIteratorHelperLoose(data.data.records); !(_step = _iterator()).done;) {
|
|
626
658
|
timesheet = _step.value;
|
|
@@ -630,126 +662,184 @@ var SFTimesheetClient = /*#__PURE__*/function () {
|
|
|
630
662
|
updatedAt: timesheet.LastModifiedDate
|
|
631
663
|
});
|
|
632
664
|
}
|
|
633
|
-
return
|
|
665
|
+
return _context4.abrupt("return", timesheets);
|
|
634
666
|
case 8:
|
|
635
667
|
case "end":
|
|
636
|
-
return
|
|
668
|
+
return _context4.stop();
|
|
637
669
|
}
|
|
638
|
-
},
|
|
670
|
+
}, _callee4, this);
|
|
639
671
|
}));
|
|
640
|
-
function getTimesheetsForPractitioner(
|
|
672
|
+
function getTimesheetsForPractitioner(_x5) {
|
|
641
673
|
return _getTimesheetsForPractitioner.apply(this, arguments);
|
|
642
674
|
}
|
|
643
675
|
return getTimesheetsForPractitioner;
|
|
644
676
|
}();
|
|
645
677
|
_proto.getTimesheetHoursIds = /*#__PURE__*/function () {
|
|
646
|
-
var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
647
|
-
var timesheetId, url, query, _yield$this$
|
|
648
|
-
return _regeneratorRuntime().wrap(function
|
|
649
|
-
while (1) switch (
|
|
678
|
+
var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workorderId) {
|
|
679
|
+
var timesheetId, url, query, _yield$this$axiosInst3, records;
|
|
680
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
681
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
650
682
|
case 0:
|
|
651
|
-
|
|
683
|
+
_context5.next = 2;
|
|
652
684
|
return this.getTimesheetId(workorderId);
|
|
653
685
|
case 2:
|
|
654
|
-
timesheetId =
|
|
686
|
+
timesheetId = _context5.sent;
|
|
655
687
|
// First we find the correct timesheet hours id
|
|
656
688
|
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
657
689
|
query = "SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'";
|
|
658
|
-
|
|
690
|
+
_context5.next = 7;
|
|
659
691
|
return this.axiosInstance.get(url, {
|
|
660
692
|
params: {
|
|
661
693
|
q: query
|
|
662
694
|
}
|
|
663
695
|
});
|
|
664
696
|
case 7:
|
|
665
|
-
_yield$this$
|
|
666
|
-
records = _yield$this$
|
|
667
|
-
return
|
|
697
|
+
_yield$this$axiosInst3 = _context5.sent;
|
|
698
|
+
records = _yield$this$axiosInst3.data.records;
|
|
699
|
+
return _context5.abrupt("return", records.map(function (_ref) {
|
|
668
700
|
var Id = _ref.Id;
|
|
669
701
|
return Id;
|
|
670
702
|
}));
|
|
671
703
|
case 10:
|
|
672
704
|
case "end":
|
|
673
|
-
return
|
|
705
|
+
return _context5.stop();
|
|
674
706
|
}
|
|
675
|
-
},
|
|
707
|
+
}, _callee5, this);
|
|
676
708
|
}));
|
|
677
|
-
function getTimesheetHoursIds(
|
|
709
|
+
function getTimesheetHoursIds(_x6) {
|
|
678
710
|
return _getTimesheetHoursIds.apply(this, arguments);
|
|
679
711
|
}
|
|
680
712
|
return getTimesheetHoursIds;
|
|
681
713
|
}();
|
|
682
|
-
_proto.
|
|
683
|
-
var
|
|
684
|
-
var
|
|
685
|
-
var timesheetHourIds;
|
|
714
|
+
_proto.getTimesheetHoursId = /*#__PURE__*/function () {
|
|
715
|
+
var _getTimesheetHoursId = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workorderId, timesheetDate) {
|
|
716
|
+
var timesheetIds, formattedDate, allHourIds, url, _iterator2, _step2, timesheetId, query, _yield$this$axiosInst4, records, ids;
|
|
686
717
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
687
718
|
while (1) switch (_context6.prev = _context6.next) {
|
|
688
719
|
case 0:
|
|
689
720
|
_context6.next = 2;
|
|
721
|
+
return this.getTimesheetIds(workorderId);
|
|
722
|
+
case 2:
|
|
723
|
+
timesheetIds = _context6.sent;
|
|
724
|
+
formattedDate = timesheetDate.toISOString().split('T')[0];
|
|
725
|
+
allHourIds = [];
|
|
726
|
+
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
727
|
+
_iterator2 = _createForOfIteratorHelperLoose(timesheetIds);
|
|
728
|
+
case 7:
|
|
729
|
+
if ((_step2 = _iterator2()).done) {
|
|
730
|
+
_context6.next = 25;
|
|
731
|
+
break;
|
|
732
|
+
}
|
|
733
|
+
timesheetId = _step2.value;
|
|
734
|
+
query = "\n SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'\n AND Date__c = " + formattedDate + "\n ";
|
|
735
|
+
_context6.prev = 10;
|
|
736
|
+
_context6.next = 13;
|
|
737
|
+
return this.axiosInstance.get(url, {
|
|
738
|
+
params: {
|
|
739
|
+
q: query
|
|
740
|
+
}
|
|
741
|
+
});
|
|
742
|
+
case 13:
|
|
743
|
+
_yield$this$axiosInst4 = _context6.sent;
|
|
744
|
+
records = _yield$this$axiosInst4.data.records;
|
|
745
|
+
ids = records.map(function (record) {
|
|
746
|
+
return record.Id;
|
|
747
|
+
});
|
|
748
|
+
allHourIds.push.apply(allHourIds, ids);
|
|
749
|
+
_context6.next = 23;
|
|
750
|
+
break;
|
|
751
|
+
case 19:
|
|
752
|
+
_context6.prev = 19;
|
|
753
|
+
_context6.t0 = _context6["catch"](10);
|
|
754
|
+
console.error("Failed to fetch", _context6.t0);
|
|
755
|
+
return _context6.abrupt("return", []);
|
|
756
|
+
case 23:
|
|
757
|
+
_context6.next = 7;
|
|
758
|
+
break;
|
|
759
|
+
case 25:
|
|
760
|
+
return _context6.abrupt("return", allHourIds);
|
|
761
|
+
case 26:
|
|
762
|
+
case "end":
|
|
763
|
+
return _context6.stop();
|
|
764
|
+
}
|
|
765
|
+
}, _callee6, this, [[10, 19]]);
|
|
766
|
+
}));
|
|
767
|
+
function getTimesheetHoursId(_x7, _x8) {
|
|
768
|
+
return _getTimesheetHoursId.apply(this, arguments);
|
|
769
|
+
}
|
|
770
|
+
return getTimesheetHoursId;
|
|
771
|
+
}();
|
|
772
|
+
_proto.getTimesheetHours = /*#__PURE__*/function () {
|
|
773
|
+
var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(workorderId) {
|
|
774
|
+
var _this = this;
|
|
775
|
+
var timesheetHourIds;
|
|
776
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
777
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
778
|
+
case 0:
|
|
779
|
+
_context8.next = 2;
|
|
690
780
|
return this.getTimesheetHoursIds(workorderId);
|
|
691
781
|
case 2:
|
|
692
|
-
timesheetHourIds =
|
|
693
|
-
return
|
|
694
|
-
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
695
|
-
return _regeneratorRuntime().wrap(function
|
|
696
|
-
while (1) switch (
|
|
782
|
+
timesheetHourIds = _context8.sent;
|
|
783
|
+
return _context8.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
|
|
784
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(id) {
|
|
785
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
786
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
697
787
|
case 0:
|
|
698
|
-
return
|
|
788
|
+
return _context7.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
|
|
699
789
|
return res.data;
|
|
700
790
|
}).then(toTimesheetDayEntry));
|
|
701
791
|
case 1:
|
|
702
792
|
case "end":
|
|
703
|
-
return
|
|
793
|
+
return _context7.stop();
|
|
704
794
|
}
|
|
705
|
-
},
|
|
795
|
+
}, _callee7);
|
|
706
796
|
}));
|
|
707
|
-
return function (
|
|
797
|
+
return function (_x10) {
|
|
708
798
|
return _ref2.apply(this, arguments);
|
|
709
799
|
};
|
|
710
800
|
}())));
|
|
711
801
|
case 4:
|
|
712
802
|
case "end":
|
|
713
|
-
return
|
|
803
|
+
return _context8.stop();
|
|
714
804
|
}
|
|
715
|
-
},
|
|
805
|
+
}, _callee8, this);
|
|
716
806
|
}));
|
|
717
|
-
function getTimesheetHours(
|
|
807
|
+
function getTimesheetHours(_x9) {
|
|
718
808
|
return _getTimesheetHours.apply(this, arguments);
|
|
719
809
|
}
|
|
720
810
|
return getTimesheetHours;
|
|
721
811
|
}();
|
|
722
812
|
_proto.getPayPeriods = /*#__PURE__*/function () {
|
|
723
|
-
var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function
|
|
724
|
-
var url, query, data, payPeriods,
|
|
725
|
-
return _regeneratorRuntime().wrap(function
|
|
726
|
-
while (1) switch (
|
|
813
|
+
var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
814
|
+
var url, query, data, payPeriods, _iterator3, _step3, payPeriod;
|
|
815
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
816
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
727
817
|
case 0:
|
|
728
818
|
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
729
819
|
query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
|
|
730
|
-
|
|
820
|
+
_context9.next = 4;
|
|
731
821
|
return this.axiosInstance.get(url, {
|
|
732
822
|
params: {
|
|
733
823
|
q: query
|
|
734
824
|
}
|
|
735
825
|
});
|
|
736
826
|
case 4:
|
|
737
|
-
data =
|
|
827
|
+
data = _context9.sent;
|
|
738
828
|
payPeriods = [];
|
|
739
|
-
for (
|
|
740
|
-
payPeriod =
|
|
829
|
+
for (_iterator3 = _createForOfIteratorHelperLoose(data.data.records); !(_step3 = _iterator3()).done;) {
|
|
830
|
+
payPeriod = _step3.value;
|
|
741
831
|
payPeriods.push({
|
|
742
832
|
name: payPeriod.Name,
|
|
743
833
|
startDate: payPeriod.StartDate__c,
|
|
744
834
|
endDate: payPeriod.EndDate__c
|
|
745
835
|
});
|
|
746
836
|
}
|
|
747
|
-
return
|
|
837
|
+
return _context9.abrupt("return", payPeriods);
|
|
748
838
|
case 8:
|
|
749
839
|
case "end":
|
|
750
|
-
return
|
|
840
|
+
return _context9.stop();
|
|
751
841
|
}
|
|
752
|
-
},
|
|
842
|
+
}, _callee9, this);
|
|
753
843
|
}));
|
|
754
844
|
function getPayPeriods() {
|
|
755
845
|
return _getPayPeriods.apply(this, arguments);
|
|
@@ -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/payperiod/payperiodClient.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(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\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 const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\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 async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\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 async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\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' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\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, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, Region__c, Name, 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 name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__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 { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport interface Period {\n payPeriodId: string\n startDate: Date\n endDate: Date\n timesheetId?: string\n workorderId?: string\n}\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\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'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\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 payPeriodClient: SFPayPeriodClient\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 this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\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","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","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","getPayPeriods","_getPayPeriods","_callee7","payPeriods","_iterator2","_step2","payPeriod","_callee7$","_context7","name","Name","startDate","StartDate__c","endDate","EndDate__c","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","length","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","Date","startdate__c","createdAt","CreatedDate","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","join","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","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/payperiod/payperiodClient.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(\n clientId: string,\n clientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\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 const newClientCredentials = await onTokenRefresh?.()\n const newClientId = newClientCredentials?.clientId || clientId\n const newClientSecret =\n newClientCredentials?.clientSecret || clientSecret\n this.tokenRefreshPromise = this.postToken(newClientId, newClientSecret)\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 getTimesheetIds(workorderId: string): Promise<string[]> {\n // Find all timesheet Ids that belong to this WO\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(record => record.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 getTimesheetHoursId(workorderId: string, timesheetDate: Date): Promise<string[]> {\n const timesheetIds = await this.getTimesheetIds(workorderId)\n const formattedDate = timesheetDate.toISOString().split('T')[0]\n const allHourIds: string[] = []\n const url = `/services/data/${SF_API_VERSION}/query`\n\n for (const timesheetId of timesheetIds) {\n const query = `\n SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'\n AND Date__c = ${formattedDate}\n `\n try {\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n const ids = records.map(record => record.Id)\n allHourIds.push(...ids)\n } catch (err) {\n console.error(`Failed to fetch`, err)\n return []\n }\n }\n\n return allHourIds\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 async getPayPeriods(): Promise<any> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriods = []\n\n for (const payPeriod of data.data.records) {\n payPeriods.push({\n name: payPeriod.Name,\n startDate: payPeriod.StartDate__c,\n endDate: payPeriod.EndDate__c\n })\n }\n\n return payPeriods\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 async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\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' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\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, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, Region__c, Name, 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 name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__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 { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport interface Period {\n payPeriodId: string\n startDate: Date\n endDate: Date\n timesheetId?: string\n workorderId?: string\n}\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\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'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\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 payPeriodClient: SFPayPeriodClient\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 this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n }\n\n async init(\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret, onTokenRefresh)\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","onTokenRefresh","_this","token","wrap","_callee2$","_context2","prev","next","postToken","sent","headers","common","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newClientId","newClientSecret","newToken","_callee$","_context","config","_retryCount","status","tokenRefreshPromise","timeout","Promise","race","_","reject","setTimeout","Error","abrupt","t0","stop","_x4","apply","arguments","_x","_x2","_x3","_postToken","_callee3","_response$data","tokenFormRequestBody","_callee3$","_context3","FormData","refreshToken","append","post","getHeaders","data","_x5","_x6","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","getTimesheetIds","_getTimesheetIds","_yield$this$axiosInst2","map","record","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","_callee4","personnelID","timesheets","_iterator","_step","_callee4$","_context4","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee5","timesheetId","_yield$this$axiosInst3","_callee5$","_context5","getTimesheetHoursId","_getTimesheetHoursId","_callee6","timesheetDate","timesheetIds","formattedDate","allHourIds","_iterator2","_step2","_yield$this$axiosInst4","ids","_callee6$","_context6","toISOString","split","_x7","_x8","getTimesheetHours","_getTimesheetHours","_callee8","timesheetHourIds","_callee8$","_context8","all","_ref2","_callee7","_callee7$","_context7","then","res","toTimesheetDayEntry","_x10","_x9","getPayPeriods","_getPayPeriods","_callee9","payPeriods","_iterator3","_step3","payPeriod","_callee9$","_context9","name","Name","startDate","StartDate__c","endDate","EndDate__c","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","length","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","Date","startdate__c","createdAt","CreatedDate","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","join","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
|