pha-hermes 1.4.1 → 1.5.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.
@@ -8,4 +8,5 @@ export declare class SFTimesheetClient {
8
8
  getTimesheetsForPractitioner(personnelID: string): Promise<any[]>;
9
9
  getTimesheetHoursIds(workorderId: string): Promise<string[]>;
10
10
  getTimesheetHours(workorderId: string): Promise<TimesheetDayEntry[]>;
11
+ getPayPeriods(): Promise<any>;
11
12
  }
@@ -4,6 +4,7 @@ export interface Role {
4
4
  }
5
5
  export interface Workorder {
6
6
  id: string;
7
+ region: string;
7
8
  establishmentName: string;
8
9
  establishmentId: string;
9
10
  role: string;
@@ -719,6 +719,43 @@ var SFTimesheetClient = /*#__PURE__*/function () {
719
719
  }
720
720
  return getTimesheetHours;
721
721
  }();
722
+ _proto.getPayPeriods = /*#__PURE__*/function () {
723
+ var _getPayPeriods = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
724
+ var url, query, data, payPeriods, _iterator2, _step2, payPeriod;
725
+ return _regeneratorRuntime().wrap(function _callee7$(_context7) {
726
+ while (1) switch (_context7.prev = _context7.next) {
727
+ case 0:
728
+ url = "/services/data/" + SF_API_VERSION + "/query";
729
+ query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
730
+ _context7.next = 4;
731
+ return this.axiosInstance.get(url, {
732
+ params: {
733
+ q: query
734
+ }
735
+ });
736
+ case 4:
737
+ data = _context7.sent;
738
+ payPeriods = [];
739
+ for (_iterator2 = _createForOfIteratorHelperLoose(data.data.records); !(_step2 = _iterator2()).done;) {
740
+ payPeriod = _step2.value;
741
+ payPeriods.push({
742
+ name: payPeriod.Name,
743
+ startDate: payPeriod.StartDate__c,
744
+ endDate: payPeriod.EndDate__c
745
+ });
746
+ }
747
+ return _context7.abrupt("return", payPeriods);
748
+ case 8:
749
+ case "end":
750
+ return _context7.stop();
751
+ }
752
+ }, _callee7, this);
753
+ }));
754
+ function getPayPeriods() {
755
+ return _getPayPeriods.apply(this, arguments);
756
+ }
757
+ return getPayPeriods;
758
+ }();
722
759
  return SFTimesheetClient;
723
760
  }();
724
761
  function toTimesheetDayEntry(raw) {
@@ -809,7 +846,7 @@ var SFWorkorderClient = /*#__PURE__*/function () {
809
846
  case 0:
810
847
  _context.prev = 0;
811
848
  url = "/services/data/" + SF_API_VERSION + "/query";
812
- query = practitionerId ? "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + practitionerId + "'" : "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
849
+ query = practitionerId ? "SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + practitionerId + "'" : "SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
813
850
  _context.next = 5;
814
851
  return this.axiosInstance.get(url, {
815
852
  params: {
@@ -821,6 +858,7 @@ var SFWorkorderClient = /*#__PURE__*/function () {
821
858
  return {
822
859
  id: record.Id,
823
860
  establishmentId: record.HospitalID__c,
861
+ region: record.Region__c,
824
862
  establishmentName: record.HospitalName__c,
825
863
  role: record.ProfessionalDesignation__c,
826
864
  practitionerId: record.Personnel__c,
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n 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\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\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","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\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, 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, 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 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 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(\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","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("axios")),r=t(require("form-data"));function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function o(t,e,r,n,o,a,i){try{var s=t[a](i),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,o)}function a(t){return function(){var e=this,r=arguments;return new Promise((function(n,a){var i=t.apply(e,r);function s(t){o(i,n,a,s,c,"next",t)}function c(t){o(i,n,a,s,c,"throw",t)}s(void 0)}))}}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var o=0;return function(){return o>=t.length?{done:!0}:{done:!1,value:t[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){s=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},a="function"==typeof Symbol?Symbol:{},i=a.iterator||"@@iterator",c=a.asyncIterator||"@@asyncIterator",u=a.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var a=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new P(n||[]);return o(a,"_invoke",{value:H(t,r,i)}),a}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",d="executing",_="completed",v={};function m(){}function y(){}function g(){}var w={};h(w,i,(function(){return this}));var x=Object.getPrototypeOf,b=x&&x(x(O([])));b&&b!==r&&n.call(b,i)&&(w=b);var E=g.prototype=m.prototype=Object.create(w);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(o,a,i,s){var c=l(t[o],t,a);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,i,s)}),(function(t){r("throw",t,i,s)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return r("throw",t,i,s)}))}s(c.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function H(e,r,n){var o=p;return function(a,i){if(o===d)throw Error("Generator is already running");if(o===_){if("throw"===a)throw i;return{value:t,done:!0}}for(n.method=a,n.arg=i;;){var s=n.delegate;if(s){var c=T(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===p)throw o=_,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var u=l(e,r,n);if("normal"===u.type){if(o=n.done?_:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(o=_,n.method="throw",n.arg=u.arg)}}}function T(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var a=l(o,e.iterator,r.arg);if("throw"===a.type)return r.method="throw",r.arg=a.arg,r.delegate=null,v;var i=a.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function P(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function O(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=g,o(E,"constructor",{value:g,configurable:!0}),o(g,"constructor",{value:y,configurable:!0}),y.displayName=h(g,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,g):(t.__proto__=g,h(t,u,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},k(I.prototype),h(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,r,n,o,a){void 0===a&&(a=Promise);var i=new I(f(t,r,n,o),a);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},k(E),h(E,u,"Generator"),h(E,i,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=O,P.prototype={constructor:P,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(S),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return s.type="throw",s.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return o("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,v):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;S(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:O(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}var c=function(){function t(t,r){this.axiosTokenInstance=e.create(),this.token=void 0,this.refreshToken=void 0,this.tokenRefreshPromise=null,this.axiosTokenInstance.defaults.baseURL=null!=r?r:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticatedAxiosInstance=t}var n=t.prototype;return n.initializeAuth=function(){var t=a(s().mark((function t(e,r,n){var o=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.postToken(e,r);case 2:this.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+t.sent,this.authenticatedAxiosInstance.interceptors.response.use((function(t){return t}),function(){var t=a(s().mark((function t(a){var i,c,u,h;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((c=a.config)._retryCount=c._retryCount||0,!(401===(null==(i=a.response)?void 0:i.status)&&c._retryCount<3)){t.next=28;break}if(c._retryCount++,t.prev=4,o.tokenRefreshPromise){t.next=12;break}return t.next=8,null==n?void 0:n();case 8:o.tokenRefreshPromise=o.postToken((null==(u=t.sent)?void 0:u.clientId)||e,(null==u?void 0:u.clientSecret)||r);case 12:return t.next=14,o.tokenRefreshPromise;case 14:return h=t.sent,o.tokenRefreshPromise=null,o.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+h,c.headers.Authorization="Bearer "+h,c.timeout=5e3,t.next=21,Promise.race([o.authenticatedAxiosInstance(c),new Promise((function(t,e){return setTimeout((function(){return e(new Error("Retry request timeout"))}),c.timeout)}))]);case 21:return t.abrupt("return",t.sent);case 24:return t.prev=24,t.t0=t.catch(4),o.tokenRefreshPromise=null,t.abrupt("return",Promise.reject(t.t0));case 28:return t.abrupt("return",Promise.reject(a));case 29:case"end":return t.stop()}}),t,null,[[4,24]])})));return function(e){return t.apply(this,arguments)}}());case 5:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),n.postToken=function(){var t=a(s().mark((function t(e,n){var o,a,i;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=new r,!this.refreshToken){t.next=6;break}a.append("refresh_token",this.refreshToken),a.append("grant_type","refresh_token"),t.next=13;break;case 6:if(!e||!n){t.next=12;break}a.append("client_id",e),a.append("client_secret",n),a.append("grant_type","client_credentials"),t.next=13;break;case 12:throw new Error("Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided");case 13:return t.next=15,this.axiosTokenInstance.post("/services/oauth2/token",a,{headers:a.getHeaders()});case 15:if(this.token=null==(i=t.sent)||null==(o=i.data)?void 0:o.access_token,this.token){t.next=19;break}throw new Error("Authentication failed, could not get the access token");case 19:return t.abrupt("return",this.token);case 20:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),t}(),u=function(){function t(t){this.axiosInstance=t}var e=t.prototype;return e.updateTimesheetHour=function(){var t=a(s().mark((function t(e,r){var n,o;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n="/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e,t.next=4,this.axiosInstance.patch(n,{Date__c:r.date,Callback__c:r.callbackHours,HoursEBAdjusted__c:r.regularHours,Misc__c:r.miscHours,OT1__c:r.overtime1Hours,OT2__c:r.overtime2Hours,OnCall__c:r.onCallHours,Misc1__c:r.misc1HoursA,Misc_1_Hours__c:r.misc1HoursB,Misc_2_Hours__c:r.misc2Hours,Misc_3_Hours__c:r.misc3Hours,Misc_4_Hours__c:r.misc4Hours,Stat1__c:r.stat1Hours,Stat2__c:r.stat2Hours,In_Charge__c:r.inChargeHours,Shift_Travel_Stipend__c:r.shiftTravelPerDiemHours});case 4:if([200,204,304].includes((o=t.sent).status)){t.next=7;break}throw new Error("got error status code "+o.status);case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.error("Error Updating Timesheet Hour: ",t.t0.message);case 12:case"end":return t.stop()}}),t,this,[[0,9]])})));return function(e,r){return t.apply(this,arguments)}}(),e.getTimesheetId=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '"+e+"'\n LIMIT 1",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:return t.abrupt("return",t.sent.data.records[0].Id);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetsForPractitioner=function(){var t=a(s().mark((function t(e){var r,n,o,a,c,u;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '"+e+"')",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:for(o=[],a=i(t.sent.data.records);!(c=a()).done;)o.push({workorderId:(u=c.value).WorkOrder__c,id:u.Id,updatedAt:u.LastModifiedDate});return t.abrupt("return",o);case 8:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHoursIds=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetId(e);case 2:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '"+t.sent+"'",t.next=7,this.axiosInstance.get(r,{params:{q:n}});case 7:return t.abrupt("return",t.sent.data.records.map((function(t){return t.Id})));case 10:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHours=function(){var t=a(s().mark((function t(e){var r=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetHoursIds(e);case 2:return t.abrupt("return",Promise.all(t.sent.map(function(){var t=a(s().mark((function t(e){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.axiosInstance.get("/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e).then((function(t){return t.data})).then(h));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),t}();function h(t){return{id:t.Id,date:t.Date__c,callbackHours:t.Callback__c,regularHours:t.HoursEBAdjusted__c,miscHours:t.Misc__c,overtime1Hours:t.OT1__c,overtime2Hours:t.OT2__c,onCallHours:t.OnCall__c,misc1HoursA:t.Misc1__c,misc1HoursB:t.Misc_1_Hours__c,misc2Hours:t.Misc_2_Hours__c,misc3Hours:t.Misc_3_Hours__c,misc4Hours:t.Misc_4_Hours__c,stat1Hours:t.Stat1__c,stat2Hours:t.Stat2__c,inChargeHours:t.In_Charge__c,shiftTravelPerDiemHours:t.Shift_Travel_Stipend__c,lastModified:t.LastModifiedDate}}var f=function(){function t(t){this.axiosInstance=t}return t.prototype.fetchPractitioners=function(){var t=a(s().mark((function t(){var e;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e="/services/data/"+d+"/query",t.next=5,this.axiosInstance.get(e,{params:{q:"\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n "}});case 5:return t.abrupt("return",t.sent.data.records.map(l));case 10:throw t.prev=10,t.t0=t.catch(0),console.error("Error fetching practitioners: ",t.t0.message),t.t0;case 14:case"end":return t.stop()}}),t,this,[[0,10]])})));return function(){return t.apply(this,arguments)}}(),t}();function l(t){return{id:t.Id,firstName:t.FirstName__c,lastName:t.LastName__c,email:t.Email__c,staffId:t.StaffID__c}}var p=function(){function t(t){this.axiosInstance=t}return t.prototype.getWorkordersForPractitioner=function(){var t=a(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r="/services/data/"+d+"/query",n=e?"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '"+e+"'":"SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c",t.next=5,this.axiosInstance.get(r,{params:{q:n}}).then((function(t){return t.data.records.map((function(t){return{id:t.Id,establishmentId:t.HospitalID__c,establishmentName:t.HospitalName__c,role:t.ProfessionalDesignation__c,practitionerId:t.Personnel__c,startDate:new Date(t.startdate__c),endDate:new Date(t.EndDate__c),createdAt:new Date(t.CreatedDate),updatedAt:new Date(t.LastModifiedDate)}}))}));case 5:return t.abrupt("return",t.sent);case 8:throw t.prev=8,t.t0=t.catch(0),console.error("Error fetching work orders: ",t.t0.message),t.t0;case 12:case"end":return t.stop()}}),t,this,[[0,8]])})));return function(e){return t.apply(this,arguments)}}(),t}(),d="v57.0";exports.SFApiClient=function(){function t(t){this.instance=void 0,this.axiosInstance=e.create(),this.baseUrl=t,this.axiosInstance.defaults.baseURL=null!=t?t:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticator=new c(this.axiosInstance,this.baseUrl),this.timesheetClient=new u(this.axiosInstance),this.workorderClient=new p(this.axiosInstance),this.practitionerClient=new f(this.axiosInstance)}var r=t.prototype;return r.init=function(){var t=a(s().mark((function t(e,r,n){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.authenticator.initializeAuth(e,r,n);case 2:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),r.setInstance=function(t){this.instance=t},r.getInstance=function(){return this.instance},r.fetchRoles=function(){var t=a(s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.abrupt("return",this.axiosInstance.get("/services/data/"+d+"/query",{params:{q:"SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true"}}).then((function(t){return t.data.records.map((function(t){return{label:t.Label,value:t.Value}}))})));case 6:throw t.prev=6,t.t0=t.catch(0),console.error("Error fetching roles: ",t.t0.message),t.t0;case 10:case"end":return t.stop()}}),t,this,[[0,6]])})));return function(){return t.apply(this,arguments)}}(),t}(),exports.SFAuthenticator=c,exports.SFPractitionerClient=f,exports.SFTimesheetClient=u;
1
+ "use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("axios")),r=t(require("form-data"));function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}function a(t,e,r,n,a,o,i){try{var s=t[o](i),c=s.value}catch(t){return void r(t)}s.done?e(c):Promise.resolve(c).then(n,a)}function o(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function s(t){a(i,n,o,s,c,"next",t)}function c(t){a(i,n,o,s,c,"throw",t)}s(void 0)}))}}function i(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return n(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var a=0;return function(){return a>=t.length?{done:!0}:{done:!1,value:t[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function s(){s=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function f(t,e,r,n){var o=Object.create((e&&e.prototype instanceof m?e:m).prototype),i=new S(n||[]);return a(o,"_invoke",{value:H(t,r,i)}),o}function l(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=f;var p="suspendedStart",d="executing",_="completed",v={};function m(){}function y(){}function g(){}var x={};h(x,i,(function(){return this}));var w=Object.getPrototypeOf,b=w&&w(w(D([])));b&&b!==r&&n.call(b,i)&&(x=b);var E=g.prototype=m.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function I(t,e){function r(a,o,i,s){var c=l(t[a],t,o);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,i,s)}),(function(t){r("throw",t,i,s)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return r("throw",t,i,s)}))}s(c.arg)}var o;a(this,"_invoke",{value:function(t,n){function a(){return new e((function(e,a){r(t,n,e,a)}))}return o=o?o.then(a,a):a()}})}function H(e,r,n){var a=p;return function(o,i){if(a===d)throw Error("Generator is already running");if(a===_){if("throw"===o)throw i;return{value:t,done:!0}}for(n.method=o,n.arg=i;;){var s=n.delegate;if(s){var c=T(s,n);if(c){if(c===v)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===p)throw a=_,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=d;var u=l(e,r,n);if("normal"===u.type){if(a=n.done?_:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:n.done}}"throw"===u.type&&(a=_,n.method="throw",n.arg=u.arg)}}}function T(e,r){var n=r.method,a=e.iterator[n];if(a===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,T(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;var o=l(a,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,v;var i=o.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function P(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function S(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function D(e){if(e||""===e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,o=function r(){for(;++a<e.length;)if(n.call(e,a))return r.value=e[a],r.done=!1,r;return r.value=t,r.done=!0,r};return o.next=o}}throw new TypeError(typeof e+" is not iterable")}return y.prototype=g,a(E,"constructor",{value:g,configurable:!0}),a(g,"constructor",{value:y,configurable:!0}),y.displayName=h(g,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===y||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,g):(t.__proto__=g,h(t,u,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},k(I.prototype),h(I.prototype,c,(function(){return this})),e.AsyncIterator=I,e.async=function(t,r,n,a,o){void 0===o&&(o=Promise);var i=new I(f(t,r,n,a),o);return e.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},k(E),h(E,u,"Generator"),h(E,i,(function(){return this})),h(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=D,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function a(n,a){return s.type="throw",s.arg=e,r.next=n,a&&(r.method="next",r.arg=t),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],s=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),P(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var a=n.arg;P(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:D(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}var c=function(){function t(t,r){this.axiosTokenInstance=e.create(),this.token=void 0,this.refreshToken=void 0,this.tokenRefreshPromise=null,this.axiosTokenInstance.defaults.baseURL=null!=r?r:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticatedAxiosInstance=t}var n=t.prototype;return n.initializeAuth=function(){var t=o(s().mark((function t(e,r,n){var a=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.postToken(e,r);case 2:this.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+t.sent,this.authenticatedAxiosInstance.interceptors.response.use((function(t){return t}),function(){var t=o(s().mark((function t(o){var i,c,u,h;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if((c=o.config)._retryCount=c._retryCount||0,!(401===(null==(i=o.response)?void 0:i.status)&&c._retryCount<3)){t.next=28;break}if(c._retryCount++,t.prev=4,a.tokenRefreshPromise){t.next=12;break}return t.next=8,null==n?void 0:n();case 8:a.tokenRefreshPromise=a.postToken((null==(u=t.sent)?void 0:u.clientId)||e,(null==u?void 0:u.clientSecret)||r);case 12:return t.next=14,a.tokenRefreshPromise;case 14:return h=t.sent,a.tokenRefreshPromise=null,a.authenticatedAxiosInstance.defaults.headers.common.Authorization="Bearer "+h,c.headers.Authorization="Bearer "+h,c.timeout=5e3,t.next=21,Promise.race([a.authenticatedAxiosInstance(c),new Promise((function(t,e){return setTimeout((function(){return e(new Error("Retry request timeout"))}),c.timeout)}))]);case 21:return t.abrupt("return",t.sent);case 24:return t.prev=24,t.t0=t.catch(4),a.tokenRefreshPromise=null,t.abrupt("return",Promise.reject(t.t0));case 28:return t.abrupt("return",Promise.reject(o));case 29:case"end":return t.stop()}}),t,null,[[4,24]])})));return function(e){return t.apply(this,arguments)}}());case 5:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),n.postToken=function(){var t=o(s().mark((function t(e,n){var a,o,i;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=new r,!this.refreshToken){t.next=6;break}o.append("refresh_token",this.refreshToken),o.append("grant_type","refresh_token"),t.next=13;break;case 6:if(!e||!n){t.next=12;break}o.append("client_id",e),o.append("client_secret",n),o.append("grant_type","client_credentials"),t.next=13;break;case 12:throw new Error("Authentication failed, either the RefreshToken, or ClientId and ClientSecret need to be provided");case 13:return t.next=15,this.axiosTokenInstance.post("/services/oauth2/token",o,{headers:o.getHeaders()});case 15:if(this.token=null==(i=t.sent)||null==(a=i.data)?void 0:a.access_token,this.token){t.next=19;break}throw new Error("Authentication failed, could not get the access token");case 19:return t.abrupt("return",this.token);case 20:case"end":return t.stop()}}),t,this)})));return function(e,r){return t.apply(this,arguments)}}(),t}(),u=function(){function t(t){this.axiosInstance=t}var e=t.prototype;return e.updateTimesheetHour=function(){var t=o(s().mark((function t(e,r){var n,a;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,n="/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e,t.next=4,this.axiosInstance.patch(n,{Date__c:r.date,Callback__c:r.callbackHours,HoursEBAdjusted__c:r.regularHours,Misc__c:r.miscHours,OT1__c:r.overtime1Hours,OT2__c:r.overtime2Hours,OnCall__c:r.onCallHours,Misc1__c:r.misc1HoursA,Misc_1_Hours__c:r.misc1HoursB,Misc_2_Hours__c:r.misc2Hours,Misc_3_Hours__c:r.misc3Hours,Misc_4_Hours__c:r.misc4Hours,Stat1__c:r.stat1Hours,Stat2__c:r.stat2Hours,In_Charge__c:r.inChargeHours,Shift_Travel_Stipend__c:r.shiftTravelPerDiemHours});case 4:if([200,204,304].includes((a=t.sent).status)){t.next=7;break}throw new Error("got error status code "+a.status);case 7:t.next=12;break;case 9:t.prev=9,t.t0=t.catch(0),console.error("Error Updating Timesheet Hour: ",t.t0.message);case 12:case"end":return t.stop()}}),t,this,[[0,9]])})));return function(e,r){return t.apply(this,arguments)}}(),e.getTimesheetId=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '"+e+"'\n LIMIT 1",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:return t.abrupt("return",t.sent.data.records[0].Id);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetsForPractitioner=function(){var t=o(s().mark((function t(e){var r,n,a,o,c,u;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r="/services/data/"+d+"/query",n="SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '"+e+"')",t.next=4,this.axiosInstance.get(r,{params:{q:n}});case 4:for(a=[],o=i(t.sent.data.records);!(c=o()).done;)a.push({workorderId:(u=c.value).WorkOrder__c,id:u.Id,updatedAt:u.LastModifiedDate});return t.abrupt("return",a);case 8:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHoursIds=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetId(e);case 2:return r="/services/data/"+d+"/query",n="SELECT Id\n FROM TimesheetHour__c\n WHERE Timesheet__c = '"+t.sent+"'",t.next=7,this.axiosInstance.get(r,{params:{q:n}});case 7:return t.abrupt("return",t.sent.data.records.map((function(t){return t.Id})));case 10:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getTimesheetHours=function(){var t=o(s().mark((function t(e){var r=this;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.getTimesheetHoursIds(e);case 2:return t.abrupt("return",Promise.all(t.sent.map(function(){var t=o(s().mark((function t(e){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.axiosInstance.get("/services/data/"+d+"/sobjects/TimeSheetHour__c/"+e).then((function(t){return t.data})).then(h));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())));case 4:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getPayPeriods=function(){var t=o(s().mark((function t(){var e,r,n,a,o;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e="/services/data/"+d+"/query",t.next=4,this.axiosInstance.get(e,{params:{q:"SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c"}});case 4:for(r=[],n=i(t.sent.data.records);!(a=n()).done;)r.push({name:(o=a.value).Name,startDate:o.StartDate__c,endDate:o.EndDate__c});return t.abrupt("return",r);case 8:case"end":return t.stop()}}),t,this)})));return function(){return t.apply(this,arguments)}}(),t}();function h(t){return{id:t.Id,date:t.Date__c,callbackHours:t.Callback__c,regularHours:t.HoursEBAdjusted__c,miscHours:t.Misc__c,overtime1Hours:t.OT1__c,overtime2Hours:t.OT2__c,onCallHours:t.OnCall__c,misc1HoursA:t.Misc1__c,misc1HoursB:t.Misc_1_Hours__c,misc2Hours:t.Misc_2_Hours__c,misc3Hours:t.Misc_3_Hours__c,misc4Hours:t.Misc_4_Hours__c,stat1Hours:t.Stat1__c,stat2Hours:t.Stat2__c,inChargeHours:t.In_Charge__c,shiftTravelPerDiemHours:t.Shift_Travel_Stipend__c,lastModified:t.LastModifiedDate}}var f=function(){function t(t){this.axiosInstance=t}return t.prototype.fetchPractitioners=function(){var t=o(s().mark((function t(){var e;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,e="/services/data/"+d+"/query",t.next=5,this.axiosInstance.get(e,{params:{q:"\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n "}});case 5:return t.abrupt("return",t.sent.data.records.map(l));case 10:throw t.prev=10,t.t0=t.catch(0),console.error("Error fetching practitioners: ",t.t0.message),t.t0;case 14:case"end":return t.stop()}}),t,this,[[0,10]])})));return function(){return t.apply(this,arguments)}}(),t}();function l(t){return{id:t.Id,firstName:t.FirstName__c,lastName:t.LastName__c,email:t.Email__c,staffId:t.StaffID__c}}var p=function(){function t(t){this.axiosInstance=t}return t.prototype.getWorkordersForPractitioner=function(){var t=o(s().mark((function t(e){var r,n;return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,r="/services/data/"+d+"/query",n=e?"SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '"+e+"'":"SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c",t.next=5,this.axiosInstance.get(r,{params:{q:n}}).then((function(t){return t.data.records.map((function(t){return{id:t.Id,establishmentId:t.HospitalID__c,region:t.Region__c,establishmentName:t.HospitalName__c,role:t.ProfessionalDesignation__c,practitionerId:t.Personnel__c,startDate:new Date(t.startdate__c),endDate:new Date(t.EndDate__c),createdAt:new Date(t.CreatedDate),updatedAt:new Date(t.LastModifiedDate)}}))}));case 5:return t.abrupt("return",t.sent);case 8:throw t.prev=8,t.t0=t.catch(0),console.error("Error fetching work orders: ",t.t0.message),t.t0;case 12:case"end":return t.stop()}}),t,this,[[0,8]])})));return function(e){return t.apply(this,arguments)}}(),t}(),d="v57.0";exports.SFApiClient=function(){function t(t){this.instance=void 0,this.axiosInstance=e.create(),this.baseUrl=t,this.axiosInstance.defaults.baseURL=null!=t?t:"https://do0000000d247eaa--phealth.sandbox.my.salesforce.com",this.authenticator=new c(this.axiosInstance,this.baseUrl),this.timesheetClient=new u(this.axiosInstance),this.workorderClient=new p(this.axiosInstance),this.practitionerClient=new f(this.axiosInstance)}var r=t.prototype;return r.init=function(){var t=o(s().mark((function t(e,r,n){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.authenticator.initializeAuth(e,r,n);case 2:case"end":return t.stop()}}),t,this)})));return function(e,r,n){return t.apply(this,arguments)}}(),r.setInstance=function(t){this.instance=t},r.getInstance=function(){return this.instance},r.fetchRoles=function(){var t=o(s().mark((function t(){return s().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.abrupt("return",this.axiosInstance.get("/services/data/"+d+"/query",{params:{q:"SELECT Label, Value FROM PicklistValueInfo WHERE EntityParticle.EntityDefinition.QualifiedApiName = 'WorkOrder__c' AND EntityParticle.QualifiedApiName = 'ProfessionalDesignation__c' AND isActive = true"}}).then((function(t){return t.data.records.map((function(t){return{label:t.Label,value:t.Value}}))})));case 6:throw t.prev=6,t.t0=t.catch(0),console.error("Error fetching roles: ",t.t0.message),t.t0;case 10:case"end":return t.stop()}}),t,this,[[0,6]])})));return function(){return t.apply(this,arguments)}}(),t}(),exports.SFAuthenticator=c,exports.SFPractitionerClient=f,exports.SFTimesheetClient=u;
2
2
  //# sourceMappingURL=pha-hermes.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pha-hermes.cjs.production.min.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\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\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\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","this","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","wrap","_context2","prev","next","postToken","headers","common","sent","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newToken","_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","_context3","FormData","refreshToken","append","post","getHeaders","token","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","get","params","q","records","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","push","value","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","_context6","all","_ref2","_callee5","_context5","then","res","toTimesheetDayEntry","_x7","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
1
+ {"version":3,"file":"pha-hermes.cjs.production.min.js","sources":["../src/api/auth/auth.ts","../src/api/timesheet/timesheetClient.ts","../src/api/practitioner/practitionerClient.ts","../src/api/workorder/workorderClient.ts","../src/api/apiClient.ts"],"sourcesContent":["import axios, { AxiosInstance } from 'axios'\nimport FormData from 'form-data'\n\nexport class SFAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private refreshToken: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n\n constructor(authenticatedAxiosInstance: AxiosInstance, baseUrl?: string) {\n this.axiosTokenInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n }\n\n async initializeAuth(\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, 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, 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 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 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(\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","this","axios","create","undefined","axiosTokenInstance","defaults","baseURL","_proto","prototype","initializeAuth","_initializeAuth","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","clientId","clientSecret","onTokenRefresh","_this","wrap","_context2","prev","next","postToken","headers","common","sent","interceptors","response","use","_ref","_callee","error","_error$response","originalRequest","newClientCredentials","newToken","_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","_context3","FormData","refreshToken","append","post","getHeaders","token","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","get","params","q","records","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","push","value","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHoursIds","_getTimesheetHoursIds","_callee4","_context4","map","getTimesheetHours","_getTimesheetHours","_callee6","_context6","all","_ref2","_callee5","_context5","then","res","toTimesheetDayEntry","_x7","getPayPeriods","_getPayPeriods","_callee7","payPeriods","_iterator2","_step2","payPeriod","_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","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
@@ -713,6 +713,43 @@ var SFTimesheetClient = /*#__PURE__*/function () {
713
713
  }
714
714
  return getTimesheetHours;
715
715
  }();
716
+ _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) {
721
+ case 0:
722
+ url = "/services/data/" + SF_API_VERSION + "/query";
723
+ query = "SELECT Name,\n StartDate__c,\n EndDate__c\n FROM PayPeriod__c";
724
+ _context7.next = 4;
725
+ return this.axiosInstance.get(url, {
726
+ params: {
727
+ q: query
728
+ }
729
+ });
730
+ case 4:
731
+ data = _context7.sent;
732
+ payPeriods = [];
733
+ for (_iterator2 = _createForOfIteratorHelperLoose(data.data.records); !(_step2 = _iterator2()).done;) {
734
+ payPeriod = _step2.value;
735
+ payPeriods.push({
736
+ name: payPeriod.Name,
737
+ startDate: payPeriod.StartDate__c,
738
+ endDate: payPeriod.EndDate__c
739
+ });
740
+ }
741
+ return _context7.abrupt("return", payPeriods);
742
+ case 8:
743
+ case "end":
744
+ return _context7.stop();
745
+ }
746
+ }, _callee7, this);
747
+ }));
748
+ function getPayPeriods() {
749
+ return _getPayPeriods.apply(this, arguments);
750
+ }
751
+ return getPayPeriods;
752
+ }();
716
753
  return SFTimesheetClient;
717
754
  }();
718
755
  function toTimesheetDayEntry(raw) {
@@ -803,7 +840,7 @@ var SFWorkorderClient = /*#__PURE__*/function () {
803
840
  case 0:
804
841
  _context.prev = 0;
805
842
  url = "/services/data/" + SF_API_VERSION + "/query";
806
- query = practitionerId ? "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + practitionerId + "'" : "SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
843
+ query = practitionerId ? "SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '" + practitionerId + "'" : "SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c";
807
844
  _context.next = 5;
808
845
  return this.axiosInstance.get(url, {
809
846
  params: {
@@ -815,6 +852,7 @@ var SFWorkorderClient = /*#__PURE__*/function () {
815
852
  return {
816
853
  id: record.Id,
817
854
  establishmentId: record.HospitalID__c,
855
+ region: record.Region__c,
818
856
  establishmentName: record.HospitalName__c,
819
857
  role: record.ProfessionalDesignation__c,
820
858
  practitionerId: record.Personnel__c,
@@ -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/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\nfunction toTimesheetDayEntry(raw: any): TimesheetDayEntry {\n return {\n id: raw.Id,\n date: raw.Date__c,\n callbackHours: raw.Callback__c,\n regularHours: raw.HoursEBAdjusted__c,\n miscHours: raw.Misc__c,\n overtime1Hours: raw.OT1__c,\n overtime2Hours: raw.OT2__c,\n onCallHours: raw.OnCall__c,\n misc1HoursA: raw.Misc1__c,\n misc1HoursB: raw.Misc_1_Hours__c,\n misc2Hours: raw.Misc_2_Hours__c,\n misc3Hours: raw.Misc_3_Hours__c,\n misc4Hours: raw.Misc_4_Hours__c,\n stat1Hours: raw.Stat1__c,\n stat2Hours: raw.Stat2__c,\n inChargeHours: raw.In_Charge__c,\n shiftTravelPerDiemHours: raw.Shift_Travel_Stipend__c,\n lastModified: raw.LastModifiedDate\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../models'\nimport { SF_API_VERSION } from '../apiClient'\n\nexport class SFPractitionerClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchPractitioners(): Promise<Practitioner[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c\n FROM Personnel__c\n WHERE Status__c = 'Active'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Workorder } from '../../models'\n\nexport class SFWorkorderClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n\n async getWorkordersForPractitioner(practitionerId?: string): Promise<Workorder[]> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = practitionerId\n ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`\n : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n establishmentId: record.HospitalID__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}","import axios, { AxiosInstance } from 'axios'\nimport { SFAuthenticator } from './auth/auth'\nimport { SFTimesheetClient } from './timesheet/timesheetClient'\nimport { SFPractitionerClient } from './practitioner/practitionerClient'\nimport { Role } from '../models'\nimport { SFWorkorderClient } from './workorder/workorderClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n\n constructor(baseUrl?: string) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL =\n baseUrl ?? 'https://do0000000d247eaa--phealth.sandbox.my.salesforce.com'\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n }\n\n async init(\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","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","toPractitioner","firstName","FirstName__c","lastName","LastName__c","email","Email__c","staffId","StaffID__c","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","record","establishmentId","HospitalID__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startDate","Date","startdate__c","endDate","EndDate__c","createdAt","CreatedDate","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","init","_init","sfClientId","sfClientSecret","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value"],"mappings":"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"}
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/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, 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, 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 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 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(\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","SFApiClient","authenticator","timesheetClient","workorderClient","practitionerClient","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.4.1",
2
+ "version": "1.5.0",
3
3
  "main": "dist/index.js",
4
4
  "typings": "dist/index.d.ts",
5
5
  "files": [
@@ -103,6 +103,29 @@ export class SFTimesheetClient {
103
103
  )
104
104
  )
105
105
  }
106
+
107
+ async getPayPeriods(): Promise<any> {
108
+ const url = `/services/data/${SF_API_VERSION}/query`
109
+
110
+ const query = `SELECT Name,
111
+ StartDate__c,
112
+ EndDate__c
113
+ FROM PayPeriod__c`
114
+
115
+ const data = await this.axiosInstance.get(url, { params: { q: query } })
116
+
117
+ let payPeriods = []
118
+
119
+ for (const payPeriod of data.data.records) {
120
+ payPeriods.push({
121
+ name: payPeriod.Name,
122
+ startDate: payPeriod.StartDate__c,
123
+ endDate: payPeriod.EndDate__c
124
+ })
125
+ }
126
+
127
+ return payPeriods
128
+ }
106
129
  }
107
130
 
108
131
  function toTimesheetDayEntry(raw: any): TimesheetDayEntry {
@@ -14,8 +14,8 @@ export class SFWorkorderClient {
14
14
  try {
15
15
  const url = `/services/data/${SF_API_VERSION}/query`
16
16
  const query = practitionerId
17
- ? `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`
18
- : `SELECT Id, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`
17
+ ? `SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c WHERE Personnel__c = '${practitionerId}'`
18
+ : `SELECT Id, Region__c, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c`
19
19
  return await this.axiosInstance
20
20
  .get(url, {
21
21
  params: { q: query }
@@ -25,6 +25,7 @@ export class SFWorkorderClient {
25
25
  (record): Workorder => ({
26
26
  id: record.Id,
27
27
  establishmentId: record.HospitalID__c,
28
+ region: record.Region__c,
28
29
  establishmentName: record.HospitalName__c,
29
30
  role: record.ProfessionalDesignation__c,
30
31
  practitionerId: record.Personnel__c,
@@ -5,6 +5,7 @@ export interface Role {
5
5
 
6
6
  export interface Workorder {
7
7
  id: string
8
+ region: string
8
9
  establishmentName: string
9
10
  establishmentId: string
10
11
  role: string