pha-hermes 1.7.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.
@@ -599,14 +599,15 @@ var SFTimesheetClient = /*#__PURE__*/function () {
599
599
  }
600
600
  return getTimesheetId;
601
601
  }();
602
- _proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
603
- var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(personnelID) {
604
- var url, query, data, timesheets, _iterator, _step, timesheet;
602
+ _proto.getTimesheetIds = /*#__PURE__*/function () {
603
+ var _getTimesheetIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workorderId) {
604
+ var url, query, _yield$this$axiosInst2, records;
605
605
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
606
606
  while (1) switch (_context3.prev = _context3.next) {
607
607
  case 0:
608
+ // Find all timesheet Ids that belong to this WO
608
609
  url = "/services/data/" + SF_API_VERSION + "/query";
609
- 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 + "')";
610
+ query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n ";
610
611
  _context3.next = 4;
611
612
  return this.axiosInstance.get(url, {
612
613
  params: {
@@ -614,7 +615,38 @@ var SFTimesheetClient = /*#__PURE__*/function () {
614
615
  }
615
616
  });
616
617
  case 4:
617
- data = _context3.sent;
618
+ _yield$this$axiosInst2 = _context3.sent;
619
+ records = _yield$this$axiosInst2.data.records;
620
+ return _context3.abrupt("return", records.map(function (record) {
621
+ return record.Id;
622
+ }));
623
+ case 7:
624
+ case "end":
625
+ return _context3.stop();
626
+ }
627
+ }, _callee3, this);
628
+ }));
629
+ function getTimesheetIds(_x4) {
630
+ return _getTimesheetIds.apply(this, arguments);
631
+ }
632
+ return getTimesheetIds;
633
+ }();
634
+ _proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
635
+ var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(personnelID) {
636
+ var url, query, data, timesheets, _iterator, _step, timesheet;
637
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
638
+ while (1) switch (_context4.prev = _context4.next) {
639
+ case 0:
640
+ url = "/services/data/" + SF_API_VERSION + "/query";
641
+ 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 + "')";
642
+ _context4.next = 4;
643
+ return this.axiosInstance.get(url, {
644
+ params: {
645
+ q: query
646
+ }
647
+ });
648
+ case 4:
649
+ data = _context4.sent;
618
650
  timesheets = [];
619
651
  for (_iterator = _createForOfIteratorHelperLoose(data.data.records); !(_step = _iterator()).done;) {
620
652
  timesheet = _step.value;
@@ -624,126 +656,184 @@ var SFTimesheetClient = /*#__PURE__*/function () {
624
656
  updatedAt: timesheet.LastModifiedDate
625
657
  });
626
658
  }
627
- return _context3.abrupt("return", timesheets);
659
+ return _context4.abrupt("return", timesheets);
628
660
  case 8:
629
661
  case "end":
630
- return _context3.stop();
662
+ return _context4.stop();
631
663
  }
632
- }, _callee3, this);
664
+ }, _callee4, this);
633
665
  }));
634
- function getTimesheetsForPractitioner(_x4) {
666
+ function getTimesheetsForPractitioner(_x5) {
635
667
  return _getTimesheetsForPractitioner.apply(this, arguments);
636
668
  }
637
669
  return getTimesheetsForPractitioner;
638
670
  }();
639
671
  _proto.getTimesheetHoursIds = /*#__PURE__*/function () {
640
- var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(workorderId) {
641
- var timesheetId, url, query, _yield$this$axiosInst2, records;
642
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
643
- while (1) switch (_context4.prev = _context4.next) {
672
+ var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workorderId) {
673
+ var timesheetId, url, query, _yield$this$axiosInst3, records;
674
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
675
+ while (1) switch (_context5.prev = _context5.next) {
644
676
  case 0:
645
- _context4.next = 2;
677
+ _context5.next = 2;
646
678
  return this.getTimesheetId(workorderId);
647
679
  case 2:
648
- timesheetId = _context4.sent;
680
+ timesheetId = _context5.sent;
649
681
  // First we find the correct timesheet hours id
650
682
  url = "/services/data/" + SF_API_VERSION + "/query";
651
683
  query = "SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'";
652
- _context4.next = 7;
684
+ _context5.next = 7;
653
685
  return this.axiosInstance.get(url, {
654
686
  params: {
655
687
  q: query
656
688
  }
657
689
  });
658
690
  case 7:
659
- _yield$this$axiosInst2 = _context4.sent;
660
- records = _yield$this$axiosInst2.data.records;
661
- return _context4.abrupt("return", records.map(function (_ref) {
691
+ _yield$this$axiosInst3 = _context5.sent;
692
+ records = _yield$this$axiosInst3.data.records;
693
+ return _context5.abrupt("return", records.map(function (_ref) {
662
694
  var Id = _ref.Id;
663
695
  return Id;
664
696
  }));
665
697
  case 10:
666
698
  case "end":
667
- return _context4.stop();
699
+ return _context5.stop();
668
700
  }
669
- }, _callee4, this);
701
+ }, _callee5, this);
670
702
  }));
671
- function getTimesheetHoursIds(_x5) {
703
+ function getTimesheetHoursIds(_x6) {
672
704
  return _getTimesheetHoursIds.apply(this, arguments);
673
705
  }
674
706
  return getTimesheetHoursIds;
675
707
  }();
676
- _proto.getTimesheetHours = /*#__PURE__*/function () {
677
- var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workorderId) {
678
- var _this = this;
679
- var timesheetHourIds;
708
+ _proto.getTimesheetHoursId = /*#__PURE__*/function () {
709
+ var _getTimesheetHoursId = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(workorderId, timesheetDate) {
710
+ var timesheetIds, formattedDate, allHourIds, url, _iterator2, _step2, timesheetId, query, _yield$this$axiosInst4, records, ids;
680
711
  return _regeneratorRuntime().wrap(function _callee6$(_context6) {
681
712
  while (1) switch (_context6.prev = _context6.next) {
682
713
  case 0:
683
714
  _context6.next = 2;
715
+ return this.getTimesheetIds(workorderId);
716
+ case 2:
717
+ timesheetIds = _context6.sent;
718
+ formattedDate = timesheetDate.toISOString().split('T')[0];
719
+ allHourIds = [];
720
+ url = "/services/data/" + SF_API_VERSION + "/query";
721
+ _iterator2 = _createForOfIteratorHelperLoose(timesheetIds);
722
+ case 7:
723
+ if ((_step2 = _iterator2()).done) {
724
+ _context6.next = 25;
725
+ break;
726
+ }
727
+ timesheetId = _step2.value;
728
+ query = "\n SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'\n AND Date__c = " + formattedDate + "\n ";
729
+ _context6.prev = 10;
730
+ _context6.next = 13;
731
+ return this.axiosInstance.get(url, {
732
+ params: {
733
+ q: query
734
+ }
735
+ });
736
+ case 13:
737
+ _yield$this$axiosInst4 = _context6.sent;
738
+ records = _yield$this$axiosInst4.data.records;
739
+ ids = records.map(function (record) {
740
+ return record.Id;
741
+ });
742
+ allHourIds.push.apply(allHourIds, ids);
743
+ _context6.next = 23;
744
+ break;
745
+ case 19:
746
+ _context6.prev = 19;
747
+ _context6.t0 = _context6["catch"](10);
748
+ console.error("Failed to fetch", _context6.t0);
749
+ return _context6.abrupt("return", []);
750
+ case 23:
751
+ _context6.next = 7;
752
+ break;
753
+ case 25:
754
+ return _context6.abrupt("return", allHourIds);
755
+ case 26:
756
+ case "end":
757
+ return _context6.stop();
758
+ }
759
+ }, _callee6, this, [[10, 19]]);
760
+ }));
761
+ function getTimesheetHoursId(_x7, _x8) {
762
+ return _getTimesheetHoursId.apply(this, arguments);
763
+ }
764
+ return getTimesheetHoursId;
765
+ }();
766
+ _proto.getTimesheetHours = /*#__PURE__*/function () {
767
+ var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee8(workorderId) {
768
+ var _this = this;
769
+ var timesheetHourIds;
770
+ return _regeneratorRuntime().wrap(function _callee8$(_context8) {
771
+ while (1) switch (_context8.prev = _context8.next) {
772
+ case 0:
773
+ _context8.next = 2;
684
774
  return this.getTimesheetHoursIds(workorderId);
685
775
  case 2:
686
- timesheetHourIds = _context6.sent;
687
- return _context6.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
688
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(id) {
689
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
690
- while (1) switch (_context5.prev = _context5.next) {
776
+ timesheetHourIds = _context8.sent;
777
+ return _context8.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
778
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(id) {
779
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
780
+ while (1) switch (_context7.prev = _context7.next) {
691
781
  case 0:
692
- return _context5.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
782
+ return _context7.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
693
783
  return res.data;
694
784
  }).then(toTimesheetDayEntry));
695
785
  case 1:
696
786
  case "end":
697
- return _context5.stop();
787
+ return _context7.stop();
698
788
  }
699
- }, _callee5);
789
+ }, _callee7);
700
790
  }));
701
- return function (_x7) {
791
+ return function (_x10) {
702
792
  return _ref2.apply(this, arguments);
703
793
  };
704
794
  }())));
705
795
  case 4:
706
796
  case "end":
707
- return _context6.stop();
797
+ return _context8.stop();
708
798
  }
709
- }, _callee6, this);
799
+ }, _callee8, this);
710
800
  }));
711
- function getTimesheetHours(_x6) {
801
+ function getTimesheetHours(_x9) {
712
802
  return _getTimesheetHours.apply(this, arguments);
713
803
  }
714
804
  return getTimesheetHours;
715
805
  }();
716
806
  _proto.getPayPeriods = /*#__PURE__*/function () {
717
- var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
718
- var url, query, data, payPeriods, _iterator2, _step2, payPeriod;
719
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
720
- while (1) switch (_context7.prev = _context7.next) {
807
+ var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
808
+ var url, query, data, payPeriods, _iterator3, _step3, payPeriod;
809
+ return _regeneratorRuntime().wrap(function _callee9$(_context9) {
810
+ while (1) switch (_context9.prev = _context9.next) {
721
811
  case 0:
722
812
  url = "/services/data/" + SF_API_VERSION + "/query";
723
813
  query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
724
- _context7.next = 4;
814
+ _context9.next = 4;
725
815
  return this.axiosInstance.get(url, {
726
816
  params: {
727
817
  q: query
728
818
  }
729
819
  });
730
820
  case 4:
731
- data = _context7.sent;
821
+ data = _context9.sent;
732
822
  payPeriods = [];
733
- for (_iterator2 = _createForOfIteratorHelperLoose(data.data.records); !(_step2 = _iterator2()).done;) {
734
- payPeriod = _step2.value;
823
+ for (_iterator3 = _createForOfIteratorHelperLoose(data.data.records); !(_step3 = _iterator3()).done;) {
824
+ payPeriod = _step3.value;
735
825
  payPeriods.push({
736
826
  name: payPeriod.Name,
737
827
  startDate: payPeriod.StartDate__c,
738
828
  endDate: payPeriod.EndDate__c
739
829
  });
740
830
  }
741
- return _context7.abrupt("return", payPeriods);
831
+ return _context9.abrupt("return", payPeriods);
742
832
  case 8:
743
833
  case "end":
744
- return _context7.stop();
834
+ return _context9.stop();
745
835
  }
746
- }, _callee7, this);
836
+ }, _callee9, this);
747
837
  }));
748
838
  function getPayPeriods() {
749
839
  return _getPayPeriods.apply(this, arguments);
@@ -815,6 +905,47 @@ var SFPractitionerClient = /*#__PURE__*/function () {
815
905
  }
816
906
  return fetchPractitioners;
817
907
  }();
908
+ _proto.fetchPractitionerByEmail = /*#__PURE__*/function () {
909
+ var _fetchPractitionerByEmail = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(email) {
910
+ var url, query, _yield$this$axiosInst2, records;
911
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
912
+ while (1) switch (_context2.prev = _context2.next) {
913
+ case 0:
914
+ _context2.prev = 0;
915
+ url = "/services/data/" + SF_API_VERSION + "/query";
916
+ 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 ";
917
+ _context2.next = 5;
918
+ return this.axiosInstance.get(url, {
919
+ params: {
920
+ q: query
921
+ }
922
+ });
923
+ case 5:
924
+ _yield$this$axiosInst2 = _context2.sent;
925
+ records = _yield$this$axiosInst2.data.records;
926
+ if (!(records.length === 0)) {
927
+ _context2.next = 9;
928
+ break;
929
+ }
930
+ return _context2.abrupt("return", null);
931
+ case 9:
932
+ return _context2.abrupt("return", toPractitioner(records[0]));
933
+ case 12:
934
+ _context2.prev = 12;
935
+ _context2.t0 = _context2["catch"](0);
936
+ console.error('Error fetching practitioner by email:', _context2.t0);
937
+ throw _context2.t0;
938
+ case 16:
939
+ case "end":
940
+ return _context2.stop();
941
+ }
942
+ }, _callee2, this, [[0, 12]]);
943
+ }));
944
+ function fetchPractitionerByEmail(_x) {
945
+ return _fetchPractitionerByEmail.apply(this, arguments);
946
+ }
947
+ return fetchPractitionerByEmail;
948
+ }();
818
949
  return SFPractitionerClient;
819
950
  }();
820
951
  function toPractitioner(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.esm.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\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","firstName","FirstName__c","lastName","LastName__c","email","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.esm.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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"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.7.0",
2
+ "version": "1.9.0",
3
3
  "main": "dist/index.js",
4
4
  "typings": "dist/index.d.ts",
5
5
  "files": [
package/src/api/.env ADDED
@@ -0,0 +1,5 @@
1
+ I THINK THIS ONE IS WRONG
2
+ SF_CLIENT_ID=3MVG9TZvGM_0NqB09H2fPRxeiDEsovly3D10kwNjOYJNTwBhMc5JHQgCdaSM.2N1V04tb_Tuyj_qktBPNueQd
3
+ SF_CLIENT_SECRET=6F4D40003CF5B156A2AD2BFAD384E74AA9FFFD574E8753EAC485E3C478C50F9F
4
+ GRANT_TYPE=client_credentials
5
+ SALESFORCE_URL=https://do0000000d247eaa--phealth.sandbox.my.salesforce.com
@@ -29,6 +29,29 @@ export class SFPractitionerClient {
29
29
  throw error
30
30
  }
31
31
  }
32
+
33
+ async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {
34
+ try {
35
+ const url = `/services/data/${SF_API_VERSION}/query`
36
+ const query = `
37
+ SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c
38
+ FROM Personnel__c
39
+ WHERE Status__c = 'Active' AND Email__c = '${email}'
40
+ `
41
+ const {
42
+ data: { records }
43
+ } = await this.axiosInstance.get(url, {
44
+ params: { q: query }
45
+ })
46
+ if (records.length === 0) {
47
+ return null
48
+ }
49
+ return toPractitioner(records[0])
50
+ } catch (error) {
51
+ console.error('Error fetching practitioner by email:', error)
52
+ throw error
53
+ }
54
+ }
32
55
  }
33
56
 
34
57
  function toPractitioner(raw: any): Practitioner {