pha-hermes 1.1.0 → 1.3.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.
@@ -1,6 +1,7 @@
1
1
  import { SFTimesheetClient } from './timesheet/timesheetClient';
2
2
  import { SFPractitionerClient } from './practitioner/practitionerClient';
3
- import { Role, Workorder } from '../models';
3
+ import { Role } from '../models';
4
+ import { SFWorkorderClient } from './workorder/workorderClient';
4
5
  export declare const SF_API_VERSION: string;
5
6
  export declare class SFApiClient {
6
7
  private instance;
@@ -8,11 +9,11 @@ export declare class SFApiClient {
8
9
  private authenticator;
9
10
  private baseUrl;
10
11
  timesheetClient: SFTimesheetClient;
12
+ workorderClient: SFWorkorderClient;
11
13
  practitionerClient: SFPractitionerClient;
12
14
  constructor(baseUrl?: string);
13
15
  init(sfClientId: string, sfClientSecret: string): Promise<void>;
14
16
  setInstance(instance: SFApiClient): void;
15
17
  getInstance(): SFApiClient;
16
- fetchWorkOrders(assignedStaffId?: string): Promise<Workorder[]>;
17
18
  fetchRoles(): Promise<Role[]>;
18
19
  }
@@ -5,6 +5,8 @@ export declare class SFTimesheetClient {
5
5
  constructor(axiosInstance: AxiosInstance);
6
6
  updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry): Promise<void>;
7
7
  getTimesheetId(workorderId: string): Promise<string>;
8
+ getTimesheetsForPractitioner(personnelID: string): Promise<any>;
9
+ getTimesheetsIdAndDateForPractitioner(personnelID: string): Promise<any>;
8
10
  getTimesheetHoursIds(workorderId: string): Promise<string[]>;
9
11
  getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]>;
10
12
  }
@@ -0,0 +1,7 @@
1
+ import { AxiosInstance } from 'axios';
2
+ import { Workorder } from '../../models';
3
+ export declare class SFWorkorderClient {
4
+ private axiosInstance;
5
+ constructor(axiosInstance: AxiosInstance);
6
+ getWorkordersForPractitioner(assignedStaffId?: string): Promise<Workorder[]>;
7
+ }
@@ -1,4 +1,5 @@
1
1
  export interface TimesheetDayEntry {
2
+ id: string;
2
3
  date?: Date;
3
4
  callbackHours?: number;
4
5
  regularHours?: number;
@@ -15,4 +16,5 @@ export interface TimesheetDayEntry {
15
16
  stat2Hours?: number;
16
17
  inChargeHours?: number;
17
18
  shiftTravelPerDiemHours?: number;
19
+ lastModified: Date;
18
20
  }
@@ -487,7 +487,7 @@ var SFTimesheetClient = /*#__PURE__*/function () {
487
487
  case 0:
488
488
  // First we find the correct timesheet id
489
489
  url = "/services/data/" + SF_API_VERSION + "/query";
490
- query = "SELECT Id FROM Timesheet__c WHERE WorkOrder__c = '" + workorderId + "' LIMIT 1";
490
+ query = "SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '" + workorderId + "'\n LIMIT 1";
491
491
  _context2.next = 4;
492
492
  return this.axiosInstance.get(url, {
493
493
  params: {
@@ -509,79 +509,142 @@ var SFTimesheetClient = /*#__PURE__*/function () {
509
509
  }
510
510
  return getTimesheetId;
511
511
  }();
512
- _proto.getTimesheetHoursIds = /*#__PURE__*/function () {
513
- var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(workorderId) {
514
- var timesheetId, url, query, _yield$this$axiosInst2, records;
512
+ _proto.getTimesheetsForPractitioner = /*#__PURE__*/function () {
513
+ var _getTimesheetsForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3(personnelID) {
514
+ var url, query, data;
515
515
  return _regeneratorRuntime().wrap(function _callee3$(_context3) {
516
516
  while (1) switch (_context3.prev = _context3.next) {
517
517
  case 0:
518
- _context3.next = 2;
518
+ url = "/services/data/" + SF_API_VERSION + "/query";
519
+ 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 + "')";
520
+ _context3.next = 4;
521
+ return this.axiosInstance.get(url, {
522
+ params: {
523
+ q: query
524
+ }
525
+ });
526
+ case 4:
527
+ data = _context3.sent;
528
+ return _context3.abrupt("return", data.data.records);
529
+ case 6:
530
+ case "end":
531
+ return _context3.stop();
532
+ }
533
+ }, _callee3, this);
534
+ }));
535
+ function getTimesheetsForPractitioner(_x4) {
536
+ return _getTimesheetsForPractitioner.apply(this, arguments);
537
+ }
538
+ return getTimesheetsForPractitioner;
539
+ }();
540
+ _proto.getTimesheetsIdAndDateForPractitioner = /*#__PURE__*/function () {
541
+ var _getTimesheetsIdAndDateForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(personnelID) {
542
+ var url, query, data;
543
+ return _regeneratorRuntime().wrap(function _callee4$(_context4) {
544
+ while (1) switch (_context4.prev = _context4.next) {
545
+ case 0:
546
+ url = "/services/data/" + SF_API_VERSION + "/query";
547
+ query = "SELECT Id, LastModifiedDate\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '" + personnelID + "')";
548
+ _context4.next = 4;
549
+ return this.axiosInstance.get(url, {
550
+ params: {
551
+ q: query
552
+ }
553
+ });
554
+ case 4:
555
+ data = _context4.sent;
556
+ return _context4.abrupt("return", data.data.records.map(function (_ref) {
557
+ var Id = _ref.Id,
558
+ LastModifiedDate = _ref.LastModifiedDate;
559
+ return {
560
+ Id: Id,
561
+ LastModifiedDate: LastModifiedDate
562
+ };
563
+ }));
564
+ case 6:
565
+ case "end":
566
+ return _context4.stop();
567
+ }
568
+ }, _callee4, this);
569
+ }));
570
+ function getTimesheetsIdAndDateForPractitioner(_x5) {
571
+ return _getTimesheetsIdAndDateForPractitioner.apply(this, arguments);
572
+ }
573
+ return getTimesheetsIdAndDateForPractitioner;
574
+ }();
575
+ _proto.getTimesheetHoursIds = /*#__PURE__*/function () {
576
+ var _getTimesheetHoursIds = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workorderId) {
577
+ var timesheetId, url, query, _yield$this$axiosInst2, records;
578
+ return _regeneratorRuntime().wrap(function _callee5$(_context5) {
579
+ while (1) switch (_context5.prev = _context5.next) {
580
+ case 0:
581
+ _context5.next = 2;
519
582
  return this.getTimesheetId(workorderId);
520
583
  case 2:
521
- timesheetId = _context3.sent;
584
+ timesheetId = _context5.sent;
522
585
  // First we find the correct timesheet hours id
523
586
  url = "/services/data/" + SF_API_VERSION + "/query";
524
- query = "SELECT Id FROM TimesheetHour__c WHERE Timesheet__c = '" + timesheetId + "'";
525
- _context3.next = 7;
587
+ query = "SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '" + timesheetId + "'";
588
+ _context5.next = 7;
526
589
  return this.axiosInstance.get(url, {
527
590
  params: {
528
591
  q: query
529
592
  }
530
593
  });
531
594
  case 7:
532
- _yield$this$axiosInst2 = _context3.sent;
595
+ _yield$this$axiosInst2 = _context5.sent;
533
596
  records = _yield$this$axiosInst2.data.records;
534
- return _context3.abrupt("return", records.map(function (_ref) {
535
- var Id = _ref.Id;
597
+ return _context5.abrupt("return", records.map(function (_ref2) {
598
+ var Id = _ref2.Id;
536
599
  return Id;
537
600
  }));
538
601
  case 10:
539
602
  case "end":
540
- return _context3.stop();
603
+ return _context5.stop();
541
604
  }
542
- }, _callee3, this);
605
+ }, _callee5, this);
543
606
  }));
544
- function getTimesheetHoursIds(_x4) {
607
+ function getTimesheetHoursIds(_x6) {
545
608
  return _getTimesheetHoursIds.apply(this, arguments);
546
609
  }
547
610
  return getTimesheetHoursIds;
548
611
  }();
549
612
  _proto.getTimesheetHours = /*#__PURE__*/function () {
550
- var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee5(workorderId) {
613
+ var _getTimesheetHours = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7(workorderId) {
551
614
  var _this = this;
552
615
  var timesheetHourIds;
553
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
554
- while (1) switch (_context5.prev = _context5.next) {
616
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
617
+ while (1) switch (_context7.prev = _context7.next) {
555
618
  case 0:
556
- _context5.next = 2;
619
+ _context7.next = 2;
557
620
  return this.getTimesheetHoursIds(workorderId);
558
621
  case 2:
559
- timesheetHourIds = _context5.sent;
560
- return _context5.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
561
- var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee4(id) {
562
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
563
- while (1) switch (_context4.prev = _context4.next) {
622
+ timesheetHourIds = _context7.sent;
623
+ return _context7.abrupt("return", Promise.all(timesheetHourIds.map(/*#__PURE__*/function () {
624
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee6(id) {
625
+ return _regeneratorRuntime().wrap(function _callee6$(_context6) {
626
+ while (1) switch (_context6.prev = _context6.next) {
564
627
  case 0:
565
- return _context4.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
628
+ return _context6.abrupt("return", _this.axiosInstance.get("/services/data/" + SF_API_VERSION + "/sobjects/TimeSheetHour__c/" + id).then(function (res) {
566
629
  return res.data;
567
630
  }).then(toTimesheetDayEntry));
568
631
  case 1:
569
632
  case "end":
570
- return _context4.stop();
633
+ return _context6.stop();
571
634
  }
572
- }, _callee4);
635
+ }, _callee6);
573
636
  }));
574
- return function (_x6) {
575
- return _ref2.apply(this, arguments);
637
+ return function (_x8) {
638
+ return _ref3.apply(this, arguments);
576
639
  };
577
640
  }())));
578
641
  case 4:
579
642
  case "end":
580
- return _context5.stop();
643
+ return _context7.stop();
581
644
  }
582
- }, _callee5, this);
645
+ }, _callee7, this);
583
646
  }));
584
- function getTimesheetHours(_x5) {
647
+ function getTimesheetHours(_x7) {
585
648
  return _getTimesheetHours.apply(this, arguments);
586
649
  }
587
650
  return getTimesheetHours;
@@ -590,6 +653,7 @@ var SFTimesheetClient = /*#__PURE__*/function () {
590
653
  }();
591
654
  function toTimesheetDayEntry(raw) {
592
655
  return {
656
+ id: raw.Id,
593
657
  date: raw.Date__c,
594
658
  callbackHours: raw.Callback__c,
595
659
  regularHours: raw.HoursEBAdjusted__c,
@@ -605,7 +669,8 @@ function toTimesheetDayEntry(raw) {
605
669
  stat1Hours: raw.Stat1__c,
606
670
  stat2Hours: raw.Stat2__c,
607
671
  inChargeHours: raw.In_Charge__c,
608
- shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c
672
+ shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,
673
+ lastModified: raw.LastModifiedDate
609
674
  };
610
675
  }
611
676
 
@@ -661,6 +726,62 @@ function toPractitioner(raw) {
661
726
  };
662
727
  }
663
728
 
729
+ var SFWorkorderClient = /*#__PURE__*/function () {
730
+ function SFWorkorderClient(axiosInstance) {
731
+ this.axiosInstance = axiosInstance;
732
+ }
733
+ var _proto = SFWorkorderClient.prototype;
734
+ _proto.getWorkordersForPractitioner = /*#__PURE__*/function () {
735
+ var _getWorkordersForPractitioner = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(assignedStaffId) {
736
+ var url, query;
737
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
738
+ while (1) switch (_context.prev = _context.next) {
739
+ case 0:
740
+ _context.prev = 0;
741
+ url = "/services/data/" + SF_API_VERSION + "/query";
742
+ query = assignedStaffId ? "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + assignedStaffId + "'" : "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
743
+ _context.next = 5;
744
+ return this.axiosInstance.get(url, {
745
+ params: {
746
+ q: query
747
+ }
748
+ }).then(function (_ref) {
749
+ var records = _ref.data.records;
750
+ return records.map(function (record) {
751
+ return {
752
+ id: record.Id,
753
+ establishmentId: record.HospitalID__c,
754
+ establishmentName: record.HospitalName__c,
755
+ role: record.ProfessionalDesignation__c,
756
+ assignedStaffId: record.Personnel__c,
757
+ startDate: new Date(record.startdate__c),
758
+ endDate: new Date(record.EndDate__c),
759
+ createdAt: new Date(record.CreatedDate),
760
+ updatedAt: new Date(record.LastModifiedDate)
761
+ };
762
+ });
763
+ });
764
+ case 5:
765
+ return _context.abrupt("return", _context.sent);
766
+ case 8:
767
+ _context.prev = 8;
768
+ _context.t0 = _context["catch"](0);
769
+ console.error('Error fetching work orders: ', _context.t0.message);
770
+ throw _context.t0;
771
+ case 12:
772
+ case "end":
773
+ return _context.stop();
774
+ }
775
+ }, _callee, this, [[0, 8]]);
776
+ }));
777
+ function getWorkordersForPractitioner(_x) {
778
+ return _getWorkordersForPractitioner.apply(this, arguments);
779
+ }
780
+ return getWorkordersForPractitioner;
781
+ }();
782
+ return SFWorkorderClient;
783
+ }();
784
+
664
785
  var SF_API_VERSION = 'v57.0';
665
786
  var SFApiClient = /*#__PURE__*/function () {
666
787
  function SFApiClient(baseUrl) {
@@ -670,6 +791,7 @@ var SFApiClient = /*#__PURE__*/function () {
670
791
  this.axiosInstance.defaults.baseURL = baseUrl != null ? baseUrl : 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com';
671
792
  this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl);
672
793
  this.timesheetClient = new SFTimesheetClient(this.axiosInstance);
794
+ this.workorderClient = new SFWorkorderClient(this.axiosInstance);
673
795
  this.practitionerClient = new SFPractitionerClient(this.axiosInstance);
674
796
  }
675
797
  var _proto = SFApiClient.prototype;
@@ -697,69 +819,21 @@ var SFApiClient = /*#__PURE__*/function () {
697
819
  _proto.getInstance = function getInstance() {
698
820
  return this.instance;
699
821
  };
700
- _proto.fetchWorkOrders = /*#__PURE__*/function () {
701
- var _fetchWorkOrders = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(assignedStaffId) {
822
+ _proto.fetchRoles = /*#__PURE__*/function () {
823
+ var _fetchRoles = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
702
824
  var url, query;
703
825
  return _regeneratorRuntime().wrap(function _callee2$(_context2) {
704
826
  while (1) switch (_context2.prev = _context2.next) {
705
827
  case 0:
706
828
  _context2.prev = 0;
707
829
  url = "/services/data/" + SF_API_VERSION + "/query";
708
- query = assignedStaffId ? "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + assignedStaffId + "'" : "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
709
- _context2.next = 5;
710
- return this.axiosInstance.get(url, {
830
+ query = "SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true";
831
+ return _context2.abrupt("return", this.axiosInstance.get(url, {
711
832
  params: {
712
833
  q: query
713
834
  }
714
835
  }).then(function (_ref) {
715
836
  var records = _ref.data.records;
716
- return records.map(function (record) {
717
- return {
718
- id: record.Id,
719
- establishmentId: record.HospitalID__c,
720
- establishmentName: record.HospitalName__c,
721
- role: record.ProfessionalDesignation__c,
722
- assignedStaffId: record.Personnel__c,
723
- startDate: new Date(record.startdate__c),
724
- endDate: new Date(record.EndDate__c),
725
- createdAt: new Date(record.CreatedDate),
726
- updatedAt: new Date(record.LastModifiedDate)
727
- };
728
- });
729
- });
730
- case 5:
731
- return _context2.abrupt("return", _context2.sent);
732
- case 8:
733
- _context2.prev = 8;
734
- _context2.t0 = _context2["catch"](0);
735
- console.error('Error fetching work orders: ', _context2.t0.message);
736
- throw _context2.t0;
737
- case 12:
738
- case "end":
739
- return _context2.stop();
740
- }
741
- }, _callee2, this, [[0, 8]]);
742
- }));
743
- function fetchWorkOrders(_x3) {
744
- return _fetchWorkOrders.apply(this, arguments);
745
- }
746
- return fetchWorkOrders;
747
- }();
748
- _proto.fetchRoles = /*#__PURE__*/function () {
749
- var _fetchRoles = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
750
- var url, query;
751
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
752
- while (1) switch (_context3.prev = _context3.next) {
753
- case 0:
754
- _context3.prev = 0;
755
- url = "/services/data/" + SF_API_VERSION + "/query";
756
- query = "SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true";
757
- return _context3.abrupt("return", this.axiosInstance.get(url, {
758
- params: {
759
- q: query
760
- }
761
- }).then(function (_ref2) {
762
- var records = _ref2.data.records;
763
837
  return records.map(function (record) {
764
838
  return {
765
839
  label: record.Label,
@@ -768,15 +842,15 @@ var SFApiClient = /*#__PURE__*/function () {
768
842
  });
769
843
  }));
770
844
  case 6:
771
- _context3.prev = 6;
772
- _context3.t0 = _context3["catch"](0);
773
- console.error('Error fetching roles: ', _context3.t0.message);
774
- throw _context3.t0;
845
+ _context2.prev = 6;
846
+ _context2.t0 = _context2["catch"](0);
847
+ console.error('Error fetching roles: ', _context2.t0.message);
848
+ throw _context2.t0;
775
849
  case 10:
776
850
  case "end":
777
- return _context3.stop();
851
+ return _context2.stop();
778
852
  }
779
- }, _callee3, this, [[0, 6]]);
853
+ }, _callee2, this, [[0, 6]]);
780
854
  }));
781
855
  function fetchRoles() {
782
856
  return _fetchRoles.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/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id FROM Timesheet__c WHERE WorkOrder__c = '${workorderId}' 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 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 FROM TimesheetHour__c WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n 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 }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models/practitioner'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role, Workorder } from '../models'\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 practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchWorkOrders(assignedStaffId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = assignedStaffId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${assignedStaffId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n assignedStaffId: 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\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee","clientId","clientSecret","token","wrap","_callee$","_context","prev","next","postToken","sent","headers","common","stop","_x","_x2","apply","arguments","_postToken","_callee2","_response$data","tokenFormRequestBody","response","_callee2$","_context2","FormData","refreshToken","append","Error","post","getHeaders","data","abrupt","_x3","_x4","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","status","t0","console","error","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetHoursIds","_getTimesheetHoursIds","_callee3","timesheetId","_yield$this$axiosInst2","_callee3$","_context3","map","_ref","getTimesheetHours","_getTimesheetHours","_callee5","_this","timesheetHourIds","_callee5$","_context5","Promise","all","_ref2","_callee4","id","_callee4$","_context4","then","res","toTimesheetDayEntry","_x6","_x5","raw","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFApiClient","authenticator","timesheetClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchWorkOrders","_fetchWorkOrders","assignedStaffId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","updatedAt","LastModifiedDate","fetchRoles","_fetchRoles","label","Label","value","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(clientId: string, clientSecret: string) {\n const token = await this.postToken(clientId, clientSecret)\n this.authenticatedAxiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`\n }\n\n async postToken(clientId?: string, clientSecret?: string): Promise<string> {\n const tokenFormRequestBody = new FormData()\n if (this.refreshToken) {\n tokenFormRequestBody.append('refresh_token', this.refreshToken)\n tokenFormRequestBody.append('grant_type', 'refresh_token')\n } else if (clientId && clientSecret) {\n tokenFormRequestBody.append('client_id', clientId)\n tokenFormRequestBody.append('client_secret', clientSecret)\n tokenFormRequestBody.append('grant_type', 'client_credentials')\n } else {\n throw new Error(\n 'Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided'\n )\n }\n\n const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\n }\n )\n\n this.token = response?.data?.['access_token']\n if (!this.token) throw new Error('Authentication failed, could not get the access token')\n return this.token\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { TimesheetDayEntry } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFTimesheetClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async updateTimesheetHour(timesheetHourId: string, timesheet: TimesheetDayEntry) {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${timesheetHourId}`\n const response = await this.axiosInstance.patch(url, {\n Date__c: timesheet.date,\n Callback__c: timesheet.callbackHours,\n HoursEBAdjusted__c: timesheet.regularHours,\n Misc__c: timesheet.miscHours,\n OT1__c: timesheet.overtime1Hours,\n OT2__c: timesheet.overtime2Hours,\n OnCall__c: timesheet.onCallHours,\n Misc1__c: timesheet.misc1HoursA,\n Misc_1_Hours__c: timesheet.misc1HoursB,\n Misc_2_Hours__c: timesheet.misc2Hours,\n Misc_3_Hours__c: timesheet.misc3Hours,\n Misc_4_Hours__c: timesheet.misc4Hours,\n Stat1__c: timesheet.stat1Hours,\n Stat2__c: timesheet.stat2Hours,\n In_Charge__c: timesheet.inChargeHours,\n Shift_Travel_Stipend__c: timesheet.shiftTravelPerDiemHours\n })\n\n if (![200, 204, 304].includes(response.status))\n throw new Error(`got error status code ${response.status}`)\n } catch (error) {\n console.error('Error Updating Timesheet Hour: ', error.message)\n }\n }\n\n async getTimesheetId(workorderId: string): Promise<string> {\n // First we find the correct timesheet id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'\n LIMIT 1`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records[0].Id\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n return data.data.records\n }\n\n async getTimesheetsIdAndDateForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT Id, LastModifiedDate\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n return data.data.records.map(({ Id, LastModifiedDate }) => ({ Id, LastModifiedDate }))\n }\n\n\n async getTimesheetHoursIds(workorderId: string): Promise<string[]> {\n const timesheetId = await this.getTimesheetId(workorderId)\n // First we find the correct timesheet hours id\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(({ Id }) => Id)\n }\n\n async getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]> {\n const timesheetHourIds = await this.getTimesheetHoursIds(workorderId)\n return Promise.all(\n timesheetHourIds.map(async id =>\n this.axiosInstance\n .get(`/services/data/${SF_API_VERSION}/sobjects/TimeSheetHour__c/${id}`)\n .then(res => res.data)\n .then(toTimesheetDayEntry)\n )\n )\n }\n}\n\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models/practitioner'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(assignedStaffId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = assignedStaffId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${assignedStaffId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n assignedStaffId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(sfClientId: string, sfClientSecret: string) {\n // creates authenticator and adds token to axios instance\n await this.authenticator.initializeAuth(sfClientId, sfClientSecret)\n }\n\n setInstance(instance: SFApiClient) {\n this.instance = instance\n }\n getInstance(): SFApiClient {\n return this.instance\n }\n\n async fetchRoles(): Promise<Role[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Label, Value FROM PicklistValueInfo \\\n WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c'\\\n AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' \\\n AND isActive = true`\n return this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Role => ({\n label: record.Label,\n value: record.Value\n })\n )\n )\n } catch (error) {\n console.error('Error fetching roles: ', error.message)\n throw error\n }\n }\n}\n"],"names":["SFAuthenticator","authenticatedAxiosInstance","baseUrl","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee","clientId","clientSecret","token","wrap","_callee$","_context","prev","next","postToken","sent","headers","common","stop","_x","_x2","apply","arguments","_postToken","_callee2","_response$data","tokenFormRequestBody","response","_callee2$","_context2","FormData","refreshToken","append","Error","post","getHeaders","data","abrupt","_x3","_x4","SFTimesheetClient","axiosInstance","updateTimesheetHour","_updateTimesheetHour","timesheetHourId","timesheet","url","SF_API_VERSION","patch","Date__c","date","Callback__c","callbackHours","HoursEBAdjusted__c","regularHours","Misc__c","miscHours","OT1__c","overtime1Hours","OT2__c","overtime2Hours","OnCall__c","onCallHours","Misc1__c","misc1HoursA","Misc_1_Hours__c","misc1HoursB","Misc_2_Hours__c","misc2Hours","Misc_3_Hours__c","misc3Hours","Misc_4_Hours__c","misc4Hours","Stat1__c","stat1Hours","Stat2__c","stat2Hours","In_Charge__c","inChargeHours","Shift_Travel_Stipend__c","shiftTravelPerDiemHours","includes","status","t0","console","error","message","getTimesheetId","_getTimesheetId","workorderId","query","_yield$this$axiosInst","records","get","params","q","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","_callee3","personnelID","_callee3$","_context3","getTimesheetsIdAndDateForPractitioner","_getTimesheetsIdAndDateForPractitioner","_callee4","_callee4$","_context4","map","_ref","LastModifiedDate","_x5","getTimesheetHoursIds","_getTimesheetHoursIds","_callee5","timesheetId","_yield$this$axiosInst2","_callee5$","_context5","_ref2","_x6","getTimesheetHours","_getTimesheetHours","_callee7","_this","timesheetHourIds","_callee7$","_context7","Promise","all","_ref3","_callee6","id","_callee6$","_context6","then","res","toTimesheetDayEntry","_x8","_x7","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","assignedStaffId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","updatedAt","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","value","Value"],"mappings":"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"}