pha-hermes 1.9.0 → 1.10.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.
@@ -5,7 +5,6 @@ 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[]>;
9
8
  getTimesheetsForPractitioner(personnelID: string): Promise<any[]>;
10
9
  getTimesheetHoursIds(workorderId: string): Promise<string[]>;
11
10
  getTimesheetHoursId(workorderId: string, timesheetDate: Date): Promise<string[]>;
@@ -581,9 +581,9 @@ var SFTimesheetClient = /*#__PURE__*/function () {
581
581
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
582
582
  while (1) switch (_context2.prev = _context2.next) {
583
583
  case 0:
584
- // First we find the correct timesheet id
584
+ // Find all timesheet Ids that belong to this WO
585
585
  url = "/services/data/" + SF_API_VERSION + "/query";
586
- query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n LIMIT 1";
586
+ query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n ";
587
587
  _context2.next = 4;
588
588
  return this.axiosInstance.get(url, {
589
589
  params: {
@@ -593,7 +593,9 @@ var SFTimesheetClient = /*#__PURE__*/function () {
593
593
  case 4:
594
594
  _yield$this$axiosInst = _context2.sent;
595
595
  records = _yield$this$axiosInst.data.records;
596
- return _context2.abrupt("return", records[0].Id);
596
+ return _context2.abrupt("return", records.map(function (record) {
597
+ return record.Id;
598
+ }));
597
599
  case 7:
598
600
  case "end":
599
601
  return _context2.stop();
@@ -605,54 +607,22 @@ var SFTimesheetClient = /*#__PURE__*/function () {
605
607
  }
606
608
  return getTimesheetId;
607
609
  }();
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
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
612
- while (1) switch (_context3.prev = _context3.next) {
613
- case 0:
614
- // Find all timesheet Ids that belong to this WO
615
- url = "/services/data/" + SF_API_VERSION + "/query";
616
- query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n ";
617
- _context3.next = 4;
618
- return this.axiosInstance.get(url, {
619
- params: {
620
- q: query
621
- }
622
- });
623
- case 4:
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
610
  _proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
641
- var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(personnelID) {
611
+ var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(personnelID) {
642
612
  var url, query, data, timesheets, _iterator, _step, timesheet;
643
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
644
- while (1) switch (_context4.prev = _context4.next) {
613
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
614
+ while (1) switch (_context3.prev = _context3.next) {
645
615
  case 0:
646
616
  url = "/services/data/" + SF_API_VERSION + "/query";
647
617
  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;
618
+ _context3.next = 4;
649
619
  return this.axiosInstance.get(url, {
650
620
  params: {
651
621
  q: query
652
622
  }
653
623
  });
654
624
  case 4:
655
- data = _context4.sent;
625
+ data = _context3.sent;
656
626
  timesheets = [];
657
627
  for (_iterator = _createForOfIteratorHelperLoose(data.data.records); !(_step = _iterator()).done;) {
658
628
  timesheet = _step.value;
@@ -662,169 +632,169 @@ var SFTimesheetClient = /*#__PURE__*/function () {
662
632
  updatedAt: timesheet.LastModifiedDate
663
633
  });
664
634
  }
665
- return _context4.abrupt("return", timesheets);
635
+ return _context3.abrupt("return", timesheets);
666
636
  case 8:
667
637
  case "end":
668
- return _context4.stop();
638
+ return _context3.stop();
669
639
  }
670
- }, _callee4, this);
640
+ }, _callee3, this);
671
641
  }));
672
- function getTimesheetsForPractitioner(_x5) {
642
+ function getTimesheetsForPractitioner(_x4) {
673
643
  return _getTimesheetsForPractitioner.apply(this, arguments);
674
644
  }
675
645
  return getTimesheetsForPractitioner;
676
646
  }();
677
647
  _proto.getTimesheetHoursIds = /*#__PURE__*/function () {
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) {
648
+ var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workorderId) {
649
+ var timesheetIds, timesheetId, url, query, _yield$this$axiosInst2, records;
650
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
651
+ while (1) switch (_context4.prev = _context4.next) {
682
652
  case 0:
683
- _context5.next = 2;
653
+ _context4.next = 2;
684
654
  return this.getTimesheetId(workorderId);
685
655
  case 2:
686
- timesheetId = _context5.sent;
687
- // First we find the correct timesheet hours id
656
+ timesheetIds = _context4.sent;
657
+ timesheetId = timesheetIds[0]; // First we find the correct timesheet hours id
688
658
  url = "/services/data/" + SF_API_VERSION + "/query";
689
659
  query = "SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'";
690
- _context5.next = 7;
660
+ _context4.next = 8;
691
661
  return this.axiosInstance.get(url, {
692
662
  params: {
693
663
  q: query
694
664
  }
695
665
  });
696
- case 7:
697
- _yield$this$axiosInst3 = _context5.sent;
698
- records = _yield$this$axiosInst3.data.records;
699
- return _context5.abrupt("return", records.map(function (_ref) {
666
+ case 8:
667
+ _yield$this$axiosInst2 = _context4.sent;
668
+ records = _yield$this$axiosInst2.data.records;
669
+ return _context4.abrupt("return", records.map(function (_ref) {
700
670
  var Id = _ref.Id;
701
671
  return Id;
702
672
  }));
703
- case 10:
673
+ case 11:
704
674
  case "end":
705
- return _context5.stop();
675
+ return _context4.stop();
706
676
  }
707
- }, _callee5, this);
677
+ }, _callee4, this);
708
678
  }));
709
- function getTimesheetHoursIds(_x6) {
679
+ function getTimesheetHoursIds(_x5) {
710
680
  return _getTimesheetHoursIds.apply(this, arguments);
711
681
  }
712
682
  return getTimesheetHoursIds;
713
683
  }();
714
684
  _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;
717
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
718
- while (1) switch (_context6.prev = _context6.next) {
685
+ var _getTimesheetHoursId = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workorderId, timesheetDate) {
686
+ var timesheetIds, formattedDate, allHourIds, url, _iterator2, _step2, timesheetId, query, _yield$this$axiosInst3, records, ids;
687
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
688
+ while (1) switch (_context5.prev = _context5.next) {
719
689
  case 0:
720
- _context6.next = 2;
721
- return this.getTimesheetIds(workorderId);
690
+ _context5.next = 2;
691
+ return this.getTimesheetId(workorderId);
722
692
  case 2:
723
- timesheetIds = _context6.sent;
693
+ timesheetIds = _context5.sent;
724
694
  formattedDate = timesheetDate.toISOString().split('T')[0];
725
695
  allHourIds = [];
726
696
  url = "/services/data/" + SF_API_VERSION + "/query";
727
697
  _iterator2 = _createForOfIteratorHelperLoose(timesheetIds);
728
698
  case 7:
729
699
  if ((_step2 = _iterator2()).done) {
730
- _context6.next = 25;
700
+ _context5.next = 25;
731
701
  break;
732
702
  }
733
703
  timesheetId = _step2.value;
734
704
  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;
705
+ _context5.prev = 10;
706
+ _context5.next = 13;
737
707
  return this.axiosInstance.get(url, {
738
708
  params: {
739
709
  q: query
740
710
  }
741
711
  });
742
712
  case 13:
743
- _yield$this$axiosInst4 = _context6.sent;
744
- records = _yield$this$axiosInst4.data.records;
713
+ _yield$this$axiosInst3 = _context5.sent;
714
+ records = _yield$this$axiosInst3.data.records;
745
715
  ids = records.map(function (record) {
746
716
  return record.Id;
747
717
  });
748
718
  allHourIds.push.apply(allHourIds, ids);
749
- _context6.next = 23;
719
+ _context5.next = 23;
750
720
  break;
751
721
  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", []);
722
+ _context5.prev = 19;
723
+ _context5.t0 = _context5["catch"](10);
724
+ console.error("Failed to fetch", _context5.t0);
725
+ return _context5.abrupt("return", []);
756
726
  case 23:
757
- _context6.next = 7;
727
+ _context5.next = 7;
758
728
  break;
759
729
  case 25:
760
- return _context6.abrupt("return", allHourIds);
730
+ return _context5.abrupt("return", allHourIds);
761
731
  case 26:
762
732
  case "end":
763
- return _context6.stop();
733
+ return _context5.stop();
764
734
  }
765
- }, _callee6, this, [[10, 19]]);
735
+ }, _callee5, this, [[10, 19]]);
766
736
  }));
767
- function getTimesheetHoursId(_x7, _x8) {
737
+ function getTimesheetHoursId(_x6, _x7) {
768
738
  return _getTimesheetHoursId.apply(this, arguments);
769
739
  }
770
740
  return getTimesheetHoursId;
771
741
  }();
772
742
  _proto.getTimesheetHours = /*#__PURE__*/function () {
773
- var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(workorderId) {
743
+ var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(workorderId) {
774
744
  var _this = this;
775
745
  var timesheetHourIds;
776
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
777
- while (1) switch (_context8.prev = _context8.next) {
746
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
747
+ while (1) switch (_context7.prev = _context7.next) {
778
748
  case 0:
779
- _context8.next = 2;
749
+ _context7.next = 2;
780
750
  return this.getTimesheetHoursIds(workorderId);
781
751
  case 2:
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) {
752
+ timesheetHourIds = _context7.sent;
753
+ return _context7.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
754
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(id) {
755
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
756
+ while (1) switch (_context6.prev = _context6.next) {
787
757
  case 0:
788
- return _context7.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
758
+ return _context6.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
789
759
  return res.data;
790
760
  }).then(toTimesheetDayEntry));
791
761
  case 1:
792
762
  case "end":
793
- return _context7.stop();
763
+ return _context6.stop();
794
764
  }
795
- }, _callee7);
765
+ }, _callee6);
796
766
  }));
797
- return function (_x10) {
767
+ return function (_x9) {
798
768
  return _ref2.apply(this, arguments);
799
769
  };
800
770
  }())));
801
771
  case 4:
802
772
  case "end":
803
- return _context8.stop();
773
+ return _context7.stop();
804
774
  }
805
- }, _callee8, this);
775
+ }, _callee7, this);
806
776
  }));
807
- function getTimesheetHours(_x9) {
777
+ function getTimesheetHours(_x8) {
808
778
  return _getTimesheetHours.apply(this, arguments);
809
779
  }
810
780
  return getTimesheetHours;
811
781
  }();
812
782
  _proto.getPayPeriods = /*#__PURE__*/function () {
813
- var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
783
+ var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
814
784
  var url, query, data, payPeriods, _iterator3, _step3, payPeriod;
815
- return _regeneratorRuntime().wrap(function _callee9$(_context9) {
816
- while (1) switch (_context9.prev = _context9.next) {
785
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
786
+ while (1) switch (_context8.prev = _context8.next) {
817
787
  case 0:
818
788
  url = "/services/data/" + SF_API_VERSION + "/query";
819
789
  query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
820
- _context9.next = 4;
790
+ _context8.next = 4;
821
791
  return this.axiosInstance.get(url, {
822
792
  params: {
823
793
  q: query
824
794
  }
825
795
  });
826
796
  case 4:
827
- data = _context9.sent;
797
+ data = _context8.sent;
828
798
  payPeriods = [];
829
799
  for (_iterator3 = _createForOfIteratorHelperLoose(data.data.records); !(_step3 = _iterator3()).done;) {
830
800
  payPeriod = _step3.value;
@@ -834,12 +804,12 @@ var SFTimesheetClient = /*#__PURE__*/function () {
834
804
  endDate: payPeriod.EndDate__c
835
805
  });
836
806
  }
837
- return _context9.abrupt("return", payPeriods);
807
+ return _context8.abrupt("return", payPeriods);
838
808
  case 8:
839
809
  case "end":
840
- return _context9.stop();
810
+ return _context8.stop();
841
811
  }
842
- }, _callee9, this);
812
+ }, _callee8, this);
843
813
  }));
844
814
  function getPayPeriods() {
845
815
  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 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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"}
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 // 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 timesheetIds = await this.getTimesheetId(workorderId)\n const timesheetId = timesheetIds[0]\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.getTimesheetId(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","map","record","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","timesheetIds","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","getTimesheetHoursId","_getTimesheetHoursId","_callee5","timesheetDate","formattedDate","allHourIds","_iterator2","_step2","_yield$this$axiosInst3","ids","_callee5$","_context5","toISOString","split","_x7","getTimesheetHours","_getTimesheetHours","_callee7","timesheetHourIds","_callee7$","_context7","all","_ref2","_callee6","_callee6$","_context6","then","res","toTimesheetDayEntry","_x9","_x8","getPayPeriods","_getPayPeriods","_callee8","payPeriods","_iterator3","_step3","payPeriod","_callee8$","_context8","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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"}