pha-hermes 1.18.1 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/models/workorder.d.ts +1 -0
- package/dist/pha-hermes.cjs.development.js +6 -2
- package/dist/pha-hermes.cjs.development.js.map +1 -1
- package/dist/pha-hermes.cjs.production.min.js +1 -1
- package/dist/pha-hermes.cjs.production.min.js.map +1 -1
- package/dist/pha-hermes.esm.js +6 -2
- package/dist/pha-hermes.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/api/salesforce/workorder/workorderClient.ts +6 -2
- package/src/models/workorder.ts +1 -0
- package/src/api/.env +0 -5
|
@@ -963,7 +963,7 @@ var SFWorkorderClient = /*#__PURE__*/function () {
|
|
|
963
963
|
}
|
|
964
964
|
whereClause = filters.length ? "WHERE " + filters.join(' AND ') : '';
|
|
965
965
|
url = "/services/data/" + SF_API_VERSION + "/query";
|
|
966
|
-
query = "SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c " + whereClause;
|
|
966
|
+
query = "SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate, Unit__c FROM WorkOrder__c " + whereClause;
|
|
967
967
|
_context.next = 11;
|
|
968
968
|
return this.axiosInstance.get(url, {
|
|
969
969
|
params: {
|
|
@@ -983,7 +983,11 @@ var SFWorkorderClient = /*#__PURE__*/function () {
|
|
|
983
983
|
startDate: new Date(record.startdate__c),
|
|
984
984
|
endDate: new Date(record.EndDate__c),
|
|
985
985
|
createdAt: new Date(record.CreatedDate),
|
|
986
|
-
updatedAt: new Date(record.LastModifiedDate)
|
|
986
|
+
updatedAt: new Date(record.LastModifiedDate),
|
|
987
|
+
unit: function (unformattedUnit) {
|
|
988
|
+
if (!unformattedUnit) return '';
|
|
989
|
+
return unformattedUnit.replace(/<[^>]*>/g, '').trim();
|
|
990
|
+
}(record.Unit__c)
|
|
987
991
|
};
|
|
988
992
|
});
|
|
989
993
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/salesforce/auth/auth.ts","../src/api/salesforce/timesheet/timesheetClient.ts","../src/api/salesforce/practitioner/practitionerClient.ts","../src/api/salesforce/workorder/workorderClient.ts","../src/api/salesforce/payperiod/payperiodClient.ts","../src/api/expenses/expenseClient.ts","../src/api/salesforce/apiClient.ts","../src/api/liphe_legacy/auth/authClient.ts","../src/api/liphe_legacy/practitioner/practitionerClient.ts","../src/api/liphe_legacy/contract_request_period/contractRequestPeriodClient.ts","../src/api/liphe_legacy/lipheApiClient.ts","../src/models/index.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 = baseUrl\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 const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\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'\nimport FormData from 'form-data'\n\ninterface SFTimesheetHourField {\n Id: string\n Date__c: Date\n Callback__c: number\n HoursEBAdjusted__c: number\n Misc__c: number\n OT1__c: number\n OT2__c: number\n OnCall__c: number\n Misc1__c: number\n Misc_1_Hours__c: number\n Misc_2_Hours__c: number\n Misc_3_Hours__c: number\n Misc_4_Hours__c: number\n Stat1__c: number\n Stat2__c: number\n In_Charge__c: number\n Shift_Travel_Stipend__c: number\n LastModifiedDate: Date\n}\ntype SFTimesheetHourFieldKeys = (keyof SFTimesheetHourField)[]\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 getTimesheetIds(workorderId: string, periodStartDate?: Date, periodEndDate?: Date): Promise<string[]> {\n // Find all timesheet Ids that belong to this WO\n const url = `/services/data/${SF_API_VERSION}/query`\n let query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'`\n try {\n if (periodStartDate && periodEndDate) {\n query += `\n AND PayPeriodStartDate__c <= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND PayPeriodEndDate__c >= ${new Date(periodEndDate).toISOString().substring(0, 10)}\n `\n }\n }\n catch (error) {\n console.error('Invalid period dates', error)\n }\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(record => record.Id)\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHours(workorderId: string, fields?: SFTimesheetHourFieldKeys[], periodStartDate?: Date, periodEndDate?: Date): Promise<TimesheetDayEntry[]> {\n const timesheetIds = await this.getTimesheetIds(workorderId, periodStartDate, periodEndDate)\n\n const allHours: SFTimesheetHourField[] = []\n const url = `/services/data/${SF_API_VERSION}/query`\n for (const timesheetId of timesheetIds) {\n let query = `\n SELECT ${fields?.join(',') || 'FIELDS(STANDARD)'}\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n try {\n if (fields?.length) {\n query += `\n AND Date__c >= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND Date__c <= ${new Date(periodEndDate).toISOString().substring(0, 10)}`\n }\n\n const {\n data: { records }\n } = await this.axiosInstance.get<{ records: SFTimesheetHourField[] }>(url, {\n params: { q: query }\n })\n allHours.push(...records)\n } catch (err) {\n console.error(`Failed to fetch`, err)\n }\n }\n return allHours.map(toTimesheetDayEntry)\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 async uploadImageToTimesheet(\n file: Buffer,\n filename: string,\n timesheetId: string\n ): Promise<void> {\n try {\n const form = new FormData()\n form.append(\n 'entity_content',\n JSON.stringify({\n Title: filename,\n PathOnClient: filename\n }),\n { contentType: 'application/json' }\n )\n\n form.append('VersionData', file, {\n filename,\n contentType: 'application/octet-stream'\n })\n const uploadRes = await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentVersion`,\n form,\n { headers: form.getHeaders() }\n )\n\n const versionId = uploadRes.data.id\n\n //get ContentDocumentId\n const { data } = await this.axiosInstance.get(\n `/services/data/${SF_API_VERSION}/query`,\n {\n params: {\n q: `SELECT ContentDocumentId FROM ContentVersion WHERE Id = '${versionId}'`\n }\n }\n )\n const contentDocumentId = data.records[0].ContentDocumentId\n\n await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentDocumentLink`,\n {\n ContentDocumentId: contentDocumentId,\n LinkedEntityId: timesheetId,\n ShareType: 'V',\n Visibility: 'AllUsers'\n }\n )\n } catch (err) {\n console.error('Salesforce error response:', err?.response?.data)\n console.error('Error uploading and linking image:', err?.message)\n }\n }\n}\n\nfunction toTimesheetDayEntry(raw: SFTimesheetHourField): 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(options?: {\n createdAt?: string\n limit?: number\n }): Promise<Practitioner[]> {\n try {\n const conditions: string[] = [`Status__c = 'Active'`]\n if (options?.createdAt) {\n conditions.push(`CreatedDate > ${options.createdAt}`)\n }\n const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''\n const limitClause =\n typeof options?.limit === 'number' && options.limit > 0\n ? `LIMIT ${Math.floor(options.limit)}`\n : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c, CreatedDate\n FROM Personnel__c\n ${whereClause}\n ORDER BY CreatedDate ASC, StaffID__c ASC\n ${limitClause}\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n\n async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c, CreatedDate\n FROM Personnel__c\n WHERE Status__c = 'Active' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c,\n createdAt: raw.CreatedDate.replace(/\\+0000$/, 'Z')\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 async getWorkordersForPractitioner(\n practitionerId?: string,\n options?: { startDate?: Date; endDate?: Date; provinces?: string[] }\n ): Promise<Workorder[]> {\n try {\n const filters: string[] = []\n if (practitionerId) {\n filters.push(`Personnel__c = '${practitionerId}'`)\n }\n if (options?.startDate) {\n const isoStart = options.startDate.toISOString().split('T')[0]\n filters.push(`EndDate__c >= ${isoStart}`)\n }\n if (options?.endDate) {\n const isoEnd = options.endDate.toISOString().split('T')[0]\n filters.push(`startdate__c <= ${isoEnd}`)\n }\n\n if (options?.provinces?.length) {\n const provincesList = options?.provinces?.map(p => `'${p}'`).join(', ')\n filters.push(`Region__c IN (${provincesList})`)\n }\n const whereClause = filters.length ? `WHERE ${filters.join(' AND ')}` : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate FROM WorkOrder__c ${whereClause}`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Period } from '../../../models'\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\n","import { AxiosInstance } from 'axios'\nimport { Expense } from '../../models/expense'\nimport { SF_API_VERSION } from '../salesforce/apiClient'\n\ntype FrontendExpense = {\n workorderPeriodId: string\n amount: string\n type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours)' | 'Per diem' | 'Meals'\n}\n\nconst EXPENSE_FIELD_MAP = {\n Lodging: 'StipendTotalOverride__c',\n 'Per diem': 'Per_Diem_Total__c',\n Other: 'Reimburseable_Expenses__c',\n Transportation: 'TaxiAmount__c'\n} as const\n\ntype SupportedExpenseType = keyof typeof EXPENSE_FIELD_MAP\n\nexport class SFExpenseClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchExpenseTotals(timesheetId: string): Promise<Expense | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const { data } = await this.axiosInstance.get(url, {\n params: {\n fields: 'Reimburseable_Expenses__c,Per_Diem_Total__c,StipendTotalOverride__c,TaxiAmount__c'\n }\n })\n if (!data) return null\n return toExpense(data)\n } catch (err) {\n console.error('Failed to fetch expense totals', err)\n throw err\n }\n }\n\n private async patchTimesheet(timesheetId: string, body: Record<string, number>): Promise<void> {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const res = await this.axiosInstance.patch(url, body)\n if (![200, 204, 304].includes(res.status)) {\n throw new Error(`Unexpected status ${res.status}`)\n }\n }\n\n async updateExpense(expense: FrontendExpense): Promise<void> {\n const timesheetId = expense.workorderPeriodId\n const amount = Number(expense.amount)\n const field = EXPENSE_FIELD_MAP[expense.type as SupportedExpenseType]\n if (!field) {\n throw new Error(`Unsupported expense type: ${expense.type}`)\n }\n\n await this.patchTimesheet(timesheetId, { [field]: amount })\n }\n}\n\nfunction toExpense(raw: any): Expense {\n return {\n reimbursable: Number(raw.Reimburseable_Expenses__c ?? 0),\n perDiem: Number(raw.Per_Diem_Total__c ?? 0),\n lodging: Number(raw.StipendTotalOverride__c ?? 0),\n transportation: Number(raw.TaxiAmount__c ?? 0)\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'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\nimport { SFExpenseClient } from '../expenses/expenseClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n payPeriodClient: SFPayPeriodClient\n expenseClient: SFExpenseClient\n\n async init(\n baseUrl: string,\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL = baseUrl\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n this.expenseClient = new SFExpenseClient(this.axiosInstance)\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 if (!this.instance) {\n throw new Error('Salesforce Api client not initialized')\n }\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","import axios, { AxiosInstance } from 'axios'\nimport axiosRetry from 'axios-retry'\nimport FormData from 'form-data'\n\nexport class LipheAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n private email: string\n private password: string\n private type: string\n\n constructor(\n authenticatedAxiosInstance: AxiosInstance,\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n\n axiosRetry(this.axiosTokenInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n }\n })\n\n this.email = email\n this.password = password\n this.type = type\n this.axiosTokenInstance.defaults.baseURL = baseUrl\n }\n\n async initializeAuth() {\n const token = await this.login()\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] = 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 (error.response?.status === 401 && originalRequest._retryCount < 1) {\n originalRequest._retryCount++\n try {\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.login()\n }\n const newToken = await this.tokenRefreshPromise\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] =\n newToken\n\n return await this.authenticatedAxiosInstance(originalRequest)\n } catch (refreshError) {\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n private async login(): Promise<string> {\n const form = new FormData()\n form.append('email', this.email)\n form.append('password', this.password)\n form.append('type', this.type)\n\n const response = await this.axiosTokenInstance.post('v2/signin', form, {\n headers: form.getHeaders()\n })\n const token = response?.data?.data?.token\n if (!token) {\n throw new Error('Authentication failed: no token return')\n }\n this.token = token\n return token\n }\n}\n","import type { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../../models'\n\ninterface LiphePractitioner {\n id: number\n firstname: string\n lastname: string\n email: string\n communicationMode?: number\n}\n\nexport class LiphePractitionerClient {\n private axios: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axios = axiosInstance\n }\n async fetchAllPractitioners(agencyId: number = 1): Promise<Practitioner[]> {\n let practitioners: LiphePractitioner[] = []\n let page = 1\n let nextPage = true\n\n while (nextPage) {\n const response = await this.axios.get('v2/employees', {\n params: {\n agency_id: agencyId,\n page\n }\n })\n const data = response?.data?.data\n if (!data?.data || !Array.isArray(data.data)) {\n throw new Error('Unexpected responses.')\n }\n\n const pagePractitioners = data.data.map(\n (p: any): LiphePractitioner => ({\n id: p.id,\n firstname: p.firstname,\n lastname: p.lastname,\n email: p.email,\n communicationMode: p.communicationMode\n })\n )\n\n practitioners.push(...pagePractitioners)\n nextPage = Boolean(data.next_page_url)\n page++\n }\n return practitioners.map(p => ({\n id: String(p.id),\n firstName: p.firstname,\n lastName: p.lastname,\n email: p.email,\n staffId: String(p.id)\n }))\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Agency, Period, Workorder } from '../../../models'\nimport { LipheContractRequest } from '../contract_request/contractRequestClient'\nimport { LipheAssignment } from '../assignment/assignmentClient'\ninterface LipheContractRequestPeriods {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData[]\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriod {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriodData {\n id: number\n contract_request_id: number\n start_date: Date\n end_date: Date\n shift: 'morning' | 'afternoon' | 'evening' | 'night'\n start_time: Date\n end_time: Date\n departement_id: number\n note: string\n assignment_id: number\n assignment_parent_id: number | null\n created_at: Date\n updated_at: Date\n contract_request: LipheContractRequest\n department: string | null\n assignment: LipheAssignment\n assigned_employee_details: UserDetails\n assignment_employee: any\n}\n\ninterface UserDetails {\n id: number\n name: string\n email: string | null\n}\n\nexport class ContractRequestPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchAllContractRequestPeriods(\n agencyId: Agency,\n from?: Date,\n to?: Date,\n page: number = 1,\n activeAssignationsOnly: boolean = true,\n assignedPractitionerId?: string\n ): Promise<Workorder[]> {\n const url = `v2/contract-request-periods/agency/${agencyId}`\n const params = new URLSearchParams()\n const periods: Workorder[] = []\n let nextPage = true\n\n if (from) {\n params.append('from', from.toISOString().split('T')[0] + ' 00:00:00')\n }\n if (to) {\n params.append('to', to.toISOString().split('T')[0] + ' 23:59:59')\n }\n if (page) {\n params.append('page', page.toString())\n }\n if (activeAssignationsOnly) {\n params.append('active_assignations_only', activeAssignationsOnly ? '1' : '0')\n }\n\n if (assignedPractitionerId) {\n params.append('assigned_employee_id', assignedPractitionerId)\n }\n\n while (nextPage) {\n params.set('page', page.toString())\n\n const response = await this.axiosInstance.get<LipheContractRequestPeriods>(url, {\n params\n })\n\n for (const period of response.data.data) {\n periods.push({\n id: period.id.toString(),\n name: period.id.toString(),\n establishmentId: period.contract_request.community.id.toString(),\n region: period.contract_request.community.contact.address_state,\n establishmentName: period.contract_request.community.name,\n role: this.getRole(period),\n practitionerId: period.assignment.selected_client.id,\n startDate: new Date(period.start_date),\n endDate: new Date(period.end_date),\n createdAt: new Date(period.created_at),\n updatedAt: new Date(period.updated_at)\n })\n }\n\n nextPage = page < response.data.meta.last_page\n page++\n }\n\n return periods\n }\n\n async fetchContractRequestPeriod(workorderId: string) {\n const url = `v2/contract-request-periods/${workorderId}`\n const params = new URLSearchParams()\n const response = await this.axiosInstance.get<LipheContractRequestPeriod>(url, { params })\n\n return response.data.data\n }\n\n async getPayPeriodDatesForPayPeriodId(payPeriodId: string): Promise<Period[]> {\n const period = await this.fetchContractRequestPeriod(payPeriodId)\n const payPeriods: {\n payPeriodId: string\n startDate: string\n endDate: string\n workorderId: string\n }[] = []\n\n const firstPayPeriodDate = this.getPayPeriodDayBeforeStartDate(\n new Date(period.assignment.selected_client.agency.date_first_periode_paie),\n new Date(period.start_date)\n )\n\n const lastPayPeriodDate = this.getLastDayOfPayPeriod(\n new Date(firstPayPeriodDate),\n new Date(period.end_date)\n )\n\n // Calculate the number of weeks between lastPayPeriodDate and firstPayPeriodDate\n const weeksBetween = this.calculateWeeksBetween(firstPayPeriodDate, lastPayPeriodDate)\n\n for (let i = 0; i < weeksBetween; i++) {\n const tempDate = new Date(firstPayPeriodDate)\n\n const startDate = new Date(tempDate.setDate(tempDate.getDate() + 7 * i))\n const endDate = new Date(tempDate.setDate(tempDate.getDate() + 6))\n\n payPeriods.push({\n payPeriodId: '',\n startDate: startDate.toISOString().split('T')[0],\n endDate: endDate.toISOString().split('T')[0],\n workorderId: payPeriodId\n })\n }\n\n return payPeriods as unknown as Period[]\n }\n\n private getRole(period: LipheContractRequestPeriodData) {\n if (period.contract_request.job.translations.length === 0) {\n return ''\n }\n\n if (period.contract_request.job.translations.length > 1) {\n const roleTranslation = period.contract_request.job.translations.find(\n (translation: any) => translation.locale === 'en'\n )\n return roleTranslation?.content\n } else {\n return period.contract_request.job.translations[0].content\n }\n }\n\n /**\n * Calculates the pay period day of week that comes before the start date\n * @param firstPayPeriodDate The first pay period date from the agency\n * @param startDate The start date to find the pay period before\n * @returns The day of week (0-6, where 0 is Sunday) of the pay period before start_date\n */\n private getPayPeriodDayBeforeStartDate(firstPayPeriodDate: Date, startDate: Date): Date {\n const payPeriodDayOfWeek = firstPayPeriodDate.getDay()\n\n // Calculate the most recent pay period date that falls before start_date\n const tempDate = new Date(startDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (tempDate.getDay() !== payPeriodDayOfWeek) {\n tempDate.setDate(tempDate.getDate() - 1)\n }\n\n // If the calculated date is not before start_date, go back another week\n if (tempDate >= startDate) {\n tempDate.setDate(tempDate.getDate() - 7)\n }\n\n return tempDate\n }\n\n private getLastDayOfPayPeriod(firstPayPeriodDate: Date, endDate: Date): Date {\n const tempDate = new Date(firstPayPeriodDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (endDate > tempDate) {\n tempDate.setDate(tempDate.getDate() + 7)\n }\n\n return tempDate\n }\n\n private calculateWeeksBetween(startDate: Date, endDate: Date): number {\n const diffTime = Math.abs(endDate.getTime() - startDate.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n const weeks = Math.floor(diffDays / 7)\n return weeks\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { LipheAuthenticator } from './auth/authClient'\nimport { LiphePractitionerClient } from './practitioner/practitionerClient'\nimport { ContractRequestPeriodClient } from './contract_request_period/contractRequestPeriodClient'\nimport axiosRetry from 'axios-retry'\n\nexport class LipheApiClient {\n private instance: LipheApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: LipheAuthenticator\n public practitionerClient: LiphePractitionerClient\n public contractRequestPeriodClient: ContractRequestPeriodClient\n\n constructor(\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.axiosInstance.defaults.baseURL = baseUrl\n\n this.authenticator = new LipheAuthenticator(\n this.axiosInstance,\n baseUrl,\n email,\n password,\n type\n )\n\n axiosRetry(this.axiosInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n },\n onRetry: (retryCount, error) => {\n console.log(`Retry attempt ${retryCount} failed: ${error.message}`)\n }\n })\n\n this.practitionerClient = new LiphePractitionerClient(this.axiosInstance)\n this.contractRequestPeriodClient = new ContractRequestPeriodClient(this.axiosInstance)\n }\n async init() {\n await this.authenticator.initializeAuth()\n }\n\n setInstance(instance: LipheApiClient) {\n this.instance = instance\n }\n\n getInstance(): LipheApiClient {\n return this.instance\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.axiosInstance\n }\n}\n","export enum Agency {\n CHCA = \"7\",\n CodeBleu = \"5\",\n NordikOntario = \"6\",\n PHA = \"8\",\n PremierSoin = \"1\",\n PremierSoinNordik = \"3\",\n SolutionNursing = \"4\",\n SolutionsStaffing = \"9\",\n Transport = \"2\",\n SSI = \"99\"\n}\n\nexport * from './timesheet'\nexport * from './user'\nexport * from './workorder'\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","getTimesheetIds","_getTimesheetIds","workorderId","periodStartDate","periodEndDate","query","_yield$this$axiosInst","records","Date","toISOString","substring","get","params","q","map","record","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHours","_getTimesheetHours","_callee4","fields","timesheetIds","allHours","_iterator2","_step2","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","join","length","toTimesheetDayEntry","_x7","_x8","_x9","_x10","getPayPeriods","_getPayPeriods","_callee5","payPeriods","_iterator3","_step3","payPeriod","_callee5$","_context5","name","Name","startDate","StartDate__c","endDate","EndDate__c","uploadImageToTimesheet","_uploadImageToTimesheet","_callee6","file","filename","form","uploadRes","versionId","_yield$this$axiosInst3","contentDocumentId","_err$response","_callee6$","_context6","JSON","stringify","Title","PathOnClient","contentType","ContentDocumentId","LinkedEntityId","ShareType","Visibility","_x11","_x12","_x13","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","options","conditions","whereClause","limitClause","createdAt","limit","Math","floor","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","CreatedDate","replace","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","_options$provinces","filters","isoStart","isoEnd","_options$provinces2","provincesList","split","provinces","p","then","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startdate__c","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","EXPENSE_FIELD_MAP","Lodging","Other","Transportation","SFExpenseClient","fetchExpenseTotals","_fetchExpenseTotals","toExpense","patchTimesheet","_patchTimesheet","body","res","updateExpense","_updateExpense","expense","_this$patchTimesheet","amount","field","workorderPeriodId","Number","type","reimbursable","_raw$Reimburseable_Ex","Reimburseable_Expenses__c","perDiem","_raw$Per_Diem_Total__","Per_Diem_Total__c","lodging","_raw$StipendTotalOver","StipendTotalOverride__c","transportation","_raw$TaxiAmount__c","TaxiAmount__c","SFApiClient","init","_init","sfClientId","sfClientSecret","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","expenseClient","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value","LipheAuthenticator","password","axiosRetry","retries","retryDelay","retryCount","min","pow","login","_login","LiphePractitionerClient","fetchAllPractitioners","_fetchAllPractitioners","agencyId","practitioners","page","nextPage","agency_id","Array","isArray","pagePractitioners","firstname","lastname","communicationMode","Boolean","next_page_url","String","ContractRequestPeriodClient","fetchAllContractRequestPeriods","_fetchAllContractRequestPeriods","from","to","activeAssignationsOnly","assignedPractitionerId","periods","period","URLSearchParams","toString","set","contract_request","community","contact","address_state","getRole","assignment","selected_client","start_date","end_date","created_at","updated_at","meta","last_page","fetchContractRequestPeriod","_fetchContractRequestPeriod","getPayPeriodDatesForPayPeriodId","_getPayPeriodDatesForPayPeriodId","firstPayPeriodDate","lastPayPeriodDate","weeksBetween","i","tempDate","getPayPeriodDayBeforeStartDate","agency","date_first_periode_paie","getLastDayOfPayPeriod","calculateWeeksBetween","setDate","getDate","job","translations","roleTranslation","find","translation","locale","content","payPeriodDayOfWeek","getDay","diffTime","abs","getTime","diffDays","ceil","weeks","LipheApiClient","onRetry","log","contractRequestPeriodClient","getAxiosInstance","Agency"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pha-hermes.cjs.development.js","sources":["../src/api/salesforce/auth/auth.ts","../src/api/salesforce/timesheet/timesheetClient.ts","../src/api/salesforce/practitioner/practitionerClient.ts","../src/api/salesforce/workorder/workorderClient.ts","../src/api/salesforce/payperiod/payperiodClient.ts","../src/api/expenses/expenseClient.ts","../src/api/salesforce/apiClient.ts","../src/api/liphe_legacy/auth/authClient.ts","../src/api/liphe_legacy/practitioner/practitionerClient.ts","../src/api/liphe_legacy/contract_request_period/contractRequestPeriodClient.ts","../src/api/liphe_legacy/lipheApiClient.ts","../src/models/index.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 = baseUrl\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 const response = await this.axiosTokenInstance.post(\n '/services/oauth2/token',\n tokenFormRequestBody,\n {\n headers: tokenFormRequestBody.getHeaders()\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'\nimport FormData from 'form-data'\n\ninterface SFTimesheetHourField {\n Id: string\n Date__c: Date\n Callback__c: number\n HoursEBAdjusted__c: number\n Misc__c: number\n OT1__c: number\n OT2__c: number\n OnCall__c: number\n Misc1__c: number\n Misc_1_Hours__c: number\n Misc_2_Hours__c: number\n Misc_3_Hours__c: number\n Misc_4_Hours__c: number\n Stat1__c: number\n Stat2__c: number\n In_Charge__c: number\n Shift_Travel_Stipend__c: number\n LastModifiedDate: Date\n}\ntype SFTimesheetHourFieldKeys = (keyof SFTimesheetHourField)[]\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 getTimesheetIds(workorderId: string, periodStartDate?: Date, periodEndDate?: Date): Promise<string[]> {\n // Find all timesheet Ids that belong to this WO\n const url = `/services/data/${SF_API_VERSION}/query`\n let query = `SELECT Id\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderId}'`\n try {\n if (periodStartDate && periodEndDate) {\n query += `\n AND PayPeriodStartDate__c <= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND PayPeriodEndDate__c >= ${new Date(periodEndDate).toISOString().substring(0, 10)}\n `\n }\n }\n catch (error) {\n console.error('Invalid period dates', error)\n }\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n return records.map(record => record.Id)\n }\n\n async getTimesheetsForPractitioner(personnelID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT FIELDS(STANDARD), WorkOrder__c\n FROM TimeSheet__c\n WHERE WorkOrder__c IN (SELECT Id\n FROM WorkOrder__c\n WHERE Personnel__c = '${personnelID}')`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let timesheets = []\n\n for (const timesheet of data.data.records) {\n timesheets.push({\n workorderId: timesheet.WorkOrder__c,\n id: timesheet.Id,\n updatedAt: timesheet.LastModifiedDate\n })\n }\n\n return timesheets\n }\n\n async getTimesheetHours(workorderId: string, fields?: SFTimesheetHourFieldKeys[], periodStartDate?: Date, periodEndDate?: Date): Promise<TimesheetDayEntry[]> {\n const timesheetIds = await this.getTimesheetIds(workorderId, periodStartDate, periodEndDate)\n\n const allHours: SFTimesheetHourField[] = []\n const url = `/services/data/${SF_API_VERSION}/query`\n for (const timesheetId of timesheetIds) {\n let query = `\n SELECT ${fields?.join(',') || 'FIELDS(STANDARD)'}\n FROM TimesheetHour__c\n WHERE Timesheet__c = '${timesheetId}'`\n try {\n if (fields?.length) {\n query += `\n AND Date__c >= ${new Date(periodStartDate).toISOString().substring(0, 10)}\n AND Date__c <= ${new Date(periodEndDate).toISOString().substring(0, 10)}`\n }\n\n const {\n data: { records }\n } = await this.axiosInstance.get<{ records: SFTimesheetHourField[] }>(url, {\n params: { q: query }\n })\n allHours.push(...records)\n } catch (err) {\n console.error(`Failed to fetch`, err)\n }\n }\n return allHours.map(toTimesheetDayEntry)\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 async uploadImageToTimesheet(\n file: Buffer,\n filename: string,\n timesheetId: string\n ): Promise<void> {\n try {\n const form = new FormData()\n form.append(\n 'entity_content',\n JSON.stringify({\n Title: filename,\n PathOnClient: filename\n }),\n { contentType: 'application/json' }\n )\n\n form.append('VersionData', file, {\n filename,\n contentType: 'application/octet-stream'\n })\n const uploadRes = await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentVersion`,\n form,\n { headers: form.getHeaders() }\n )\n\n const versionId = uploadRes.data.id\n\n //get ContentDocumentId\n const { data } = await this.axiosInstance.get(\n `/services/data/${SF_API_VERSION}/query`,\n {\n params: {\n q: `SELECT ContentDocumentId FROM ContentVersion WHERE Id = '${versionId}'`\n }\n }\n )\n const contentDocumentId = data.records[0].ContentDocumentId\n\n await this.axiosInstance.post(\n `/services/data/${SF_API_VERSION}/sobjects/ContentDocumentLink`,\n {\n ContentDocumentId: contentDocumentId,\n LinkedEntityId: timesheetId,\n ShareType: 'V',\n Visibility: 'AllUsers'\n }\n )\n } catch (err) {\n console.error('Salesforce error response:', err?.response?.data)\n console.error('Error uploading and linking image:', err?.message)\n }\n }\n}\n\nfunction toTimesheetDayEntry(raw: SFTimesheetHourField): 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(options?: {\n createdAt?: string\n limit?: number\n }): Promise<Practitioner[]> {\n try {\n const conditions: string[] = [`Status__c = 'Active'`]\n if (options?.createdAt) {\n conditions.push(`CreatedDate > ${options.createdAt}`)\n }\n const whereClause = conditions.length ? `WHERE ${conditions.join(' AND ')}` : ''\n const limitClause =\n typeof options?.limit === 'number' && options.limit > 0\n ? `LIMIT ${Math.floor(options.limit)}`\n : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c, CreatedDate\n FROM Personnel__c\n ${whereClause}\n ORDER BY CreatedDate ASC, StaffID__c ASC\n ${limitClause}\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n\n return records.map(toPractitioner)\n } catch (error) {\n console.error('Error fetching practitioners: ', error.message)\n throw error\n }\n }\n\n async fetchPractitionerByEmail(email: string): Promise<Practitioner | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `\n SELECT Id, FirstName__c, LastName__c, Email__c, StaffID__c, CreatedDate\n FROM Personnel__c\n WHERE Status__c = 'Active' AND Email__c = '${email}'\n `\n const {\n data: { records }\n } = await this.axiosInstance.get(url, {\n params: { q: query }\n })\n if (records.length === 0) {\n return null\n }\n return toPractitioner(records[0])\n } catch (error) {\n console.error('Error fetching practitioner by email:', error)\n throw error\n }\n }\n}\n\nfunction toPractitioner(raw: any): Practitioner {\n return {\n id: raw.Id,\n firstName: raw.FirstName__c,\n lastName: raw.LastName__c,\n email: raw.Email__c,\n staffId: raw.StaffID__c,\n createdAt: raw.CreatedDate.replace(/\\+0000$/, 'Z')\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 async getWorkordersForPractitioner(\n practitionerId?: string,\n options?: { startDate?: Date; endDate?: Date; provinces?: string[] }\n ): Promise<Workorder[]> {\n try {\n const filters: string[] = []\n if (practitionerId) {\n filters.push(`Personnel__c = '${practitionerId}'`)\n }\n if (options?.startDate) {\n const isoStart = options.startDate.toISOString().split('T')[0]\n filters.push(`EndDate__c >= ${isoStart}`)\n }\n if (options?.endDate) {\n const isoEnd = options.endDate.toISOString().split('T')[0]\n filters.push(`startdate__c <= ${isoEnd}`)\n }\n\n if (options?.provinces?.length) {\n const provincesList = options?.provinces?.map(p => `'${p}'`).join(', ')\n filters.push(`Region__c IN (${provincesList})`)\n }\n const whereClause = filters.length ? `WHERE ${filters.join(' AND ')}` : ''\n const url = `/services/data/${SF_API_VERSION}/query`\n const query = `SELECT Id, Region__c, Name, HospitalID__c, HospitalName__c, ProfessionalDesignation__c, Personnel__c, startdate__c, EndDate__c, CreatedDate, LastModifiedDate, Unit__c FROM WorkOrder__c ${whereClause}`\n return await this.axiosInstance\n .get(url, {\n params: { q: query }\n })\n .then(({ data: { records } }) =>\n records.map(\n (record): Workorder => ({\n id: record.Id,\n name: record.Name,\n establishmentId: record.HospitalID__c,\n region: record.Region__c,\n establishmentName: record.HospitalName__c,\n role: record.ProfessionalDesignation__c,\n practitionerId: record.Personnel__c,\n startDate: new Date(record.startdate__c),\n endDate: new Date(record.EndDate__c),\n createdAt: new Date(record.CreatedDate),\n updatedAt: new Date(record.LastModifiedDate),\n unit: ((unformattedUnit: string) => {\n if (!unformattedUnit) return ''\n return unformattedUnit.replace(/<[^>]*>/g, '').trim()\n })(record.Unit__c)\n })\n )\n )\n } catch (error) {\n console.error('Error fetching work orders: ', error.message)\n throw error\n }\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { SF_API_VERSION } from '../apiClient'\nimport { Period } from '../../../models'\n\nexport class SFPayPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async getPayPeriodAndTimesheetIdsForWorkorder(workorderID: string) {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT PayPeriod__c, ID\n FROM Timesheet__c\n WHERE WorkOrder__c = '${workorderID}'`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodIds = []\n\n for (const payPeriods of data.data.records) {\n payPeriodIds.push({\n timesheetId: payPeriods.Id,\n payPeriodId: payPeriods.PayPeriod__c\n })\n }\n\n return payPeriodIds\n }\n\n async getPayPeriodDatesForPayPeriodIds(payPeriodIDs: string[]): Promise<Period[]> {\n const url = `/services/data/${SF_API_VERSION}/query`\n\n const query = `SELECT ID, StartDate__c, EndDate__c\n FROM PayPeriod__c\n WHERE id IN ${listOfIdsForQuery(payPeriodIDs)}`\n\n const data = await this.axiosInstance.get(url, { params: { q: query } })\n\n let payPeriodDates = []\n\n for (const payPeriod of data.data.records) {\n payPeriodDates.push({\n payPeriodId: payPeriod.Id,\n startDate: new Date(payPeriod.StartDate__c),\n endDate: new Date(payPeriod.EndDate__c)\n })\n }\n\n return payPeriodDates\n }\n}\n\nconst listOfIdsForQuery = (payPeriodIDs: string[]) => `('${payPeriodIDs.join('\\', \\'')}')`\n","import { AxiosInstance } from 'axios'\nimport { Expense } from '../../models/expense'\nimport { SF_API_VERSION } from '../salesforce/apiClient'\n\ntype FrontendExpense = {\n workorderPeriodId: string\n amount: string\n type: 'Other' | 'Lodging' | 'Transportation' | 'Travel (Hours)' | 'Per diem' | 'Meals'\n}\n\nconst EXPENSE_FIELD_MAP = {\n Lodging: 'StipendTotalOverride__c',\n 'Per diem': 'Per_Diem_Total__c',\n Other: 'Reimburseable_Expenses__c',\n Transportation: 'TaxiAmount__c'\n} as const\n\ntype SupportedExpenseType = keyof typeof EXPENSE_FIELD_MAP\n\nexport class SFExpenseClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchExpenseTotals(timesheetId: string): Promise<Expense | null> {\n try {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const { data } = await this.axiosInstance.get(url, {\n params: {\n fields: 'Reimburseable_Expenses__c,Per_Diem_Total__c,StipendTotalOverride__c,TaxiAmount__c'\n }\n })\n if (!data) return null\n return toExpense(data)\n } catch (err) {\n console.error('Failed to fetch expense totals', err)\n throw err\n }\n }\n\n private async patchTimesheet(timesheetId: string, body: Record<string, number>): Promise<void> {\n const url = `/services/data/${SF_API_VERSION}/sobjects/Timesheet__c/${timesheetId}`\n const res = await this.axiosInstance.patch(url, body)\n if (![200, 204, 304].includes(res.status)) {\n throw new Error(`Unexpected status ${res.status}`)\n }\n }\n\n async updateExpense(expense: FrontendExpense): Promise<void> {\n const timesheetId = expense.workorderPeriodId\n const amount = Number(expense.amount)\n const field = EXPENSE_FIELD_MAP[expense.type as SupportedExpenseType]\n if (!field) {\n throw new Error(`Unsupported expense type: ${expense.type}`)\n }\n\n await this.patchTimesheet(timesheetId, { [field]: amount })\n }\n}\n\nfunction toExpense(raw: any): Expense {\n return {\n reimbursable: Number(raw.Reimburseable_Expenses__c ?? 0),\n perDiem: Number(raw.Per_Diem_Total__c ?? 0),\n lodging: Number(raw.StipendTotalOverride__c ?? 0),\n transportation: Number(raw.TaxiAmount__c ?? 0)\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'\nimport { SFPayPeriodClient } from './payperiod/payperiodClient'\nimport { SFExpenseClient } from '../expenses/expenseClient'\n\nexport const SF_API_VERSION: string = 'v57.0'\n\nexport class SFApiClient {\n private instance: SFApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: SFAuthenticator\n private baseUrl: string\n timesheetClient: SFTimesheetClient\n workorderClient: SFWorkorderClient\n practitionerClient: SFPractitionerClient\n payPeriodClient: SFPayPeriodClient\n expenseClient: SFExpenseClient\n\n async init(\n baseUrl: string,\n sfClientId: string,\n sfClientSecret: string,\n onTokenRefresh?: () => Promise<{ clientId: string; clientSecret: string }>\n ) {\n this.baseUrl = baseUrl\n this.axiosInstance.defaults.baseURL = baseUrl\n this.authenticator = new SFAuthenticator(this.axiosInstance, this.baseUrl)\n this.timesheetClient = new SFTimesheetClient(this.axiosInstance)\n this.workorderClient = new SFWorkorderClient(this.axiosInstance)\n this.practitionerClient = new SFPractitionerClient(this.axiosInstance)\n this.payPeriodClient = new SFPayPeriodClient(this.axiosInstance)\n this.expenseClient = new SFExpenseClient(this.axiosInstance)\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 if (!this.instance) {\n throw new Error('Salesforce Api client not initialized')\n }\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","import axios, { AxiosInstance } from 'axios'\nimport axiosRetry from 'axios-retry'\nimport FormData from 'form-data'\n\nexport class LipheAuthenticator {\n axiosTokenInstance: AxiosInstance = axios.create()\n authenticatedAxiosInstance: AxiosInstance\n token: string | undefined = undefined\n private tokenRefreshPromise: Promise<string> | null = null\n private email: string\n private password: string\n private type: string\n\n constructor(\n authenticatedAxiosInstance: AxiosInstance,\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.authenticatedAxiosInstance = authenticatedAxiosInstance\n\n axiosRetry(this.axiosTokenInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n }\n })\n\n this.email = email\n this.password = password\n this.type = type\n this.axiosTokenInstance.defaults.baseURL = baseUrl\n }\n\n async initializeAuth() {\n const token = await this.login()\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] = 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 (error.response?.status === 401 && originalRequest._retryCount < 1) {\n originalRequest._retryCount++\n try {\n if (!this.tokenRefreshPromise) {\n this.tokenRefreshPromise = this.login()\n }\n const newToken = await this.tokenRefreshPromise\n this.tokenRefreshPromise = null\n\n this.authenticatedAxiosInstance.defaults.headers.common['X-Auth-Token'] =\n newToken\n\n return await this.authenticatedAxiosInstance(originalRequest)\n } catch (refreshError) {\n this.tokenRefreshPromise = null\n return Promise.reject(refreshError)\n }\n }\n return Promise.reject(error)\n }\n )\n }\n private async login(): Promise<string> {\n const form = new FormData()\n form.append('email', this.email)\n form.append('password', this.password)\n form.append('type', this.type)\n\n const response = await this.axiosTokenInstance.post('v2/signin', form, {\n headers: form.getHeaders()\n })\n const token = response?.data?.data?.token\n if (!token) {\n throw new Error('Authentication failed: no token return')\n }\n this.token = token\n return token\n }\n}\n","import type { AxiosInstance } from 'axios'\nimport { Practitioner } from '../../../models'\n\ninterface LiphePractitioner {\n id: number\n firstname: string\n lastname: string\n email: string\n communicationMode?: number\n}\n\nexport class LiphePractitionerClient {\n private axios: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axios = axiosInstance\n }\n async fetchAllPractitioners(agencyId: number = 1): Promise<Practitioner[]> {\n let practitioners: LiphePractitioner[] = []\n let page = 1\n let nextPage = true\n\n while (nextPage) {\n const response = await this.axios.get('v2/employees', {\n params: {\n agency_id: agencyId,\n page\n }\n })\n const data = response?.data?.data\n if (!data?.data || !Array.isArray(data.data)) {\n throw new Error('Unexpected responses.')\n }\n\n const pagePractitioners = data.data.map(\n (p: any): LiphePractitioner => ({\n id: p.id,\n firstname: p.firstname,\n lastname: p.lastname,\n email: p.email,\n communicationMode: p.communicationMode\n })\n )\n\n practitioners.push(...pagePractitioners)\n nextPage = Boolean(data.next_page_url)\n page++\n }\n return practitioners.map(p => ({\n id: String(p.id),\n firstName: p.firstname,\n lastName: p.lastname,\n email: p.email,\n staffId: String(p.id)\n }))\n }\n}\n","import { AxiosInstance } from 'axios'\nimport { Agency, Period, Workorder } from '../../../models'\nimport { LipheContractRequest } from '../contract_request/contractRequestClient'\nimport { LipheAssignment } from '../assignment/assignmentClient'\ninterface LipheContractRequestPeriods {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData[]\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriod {\n message: string\n status: boolean\n data: LipheContractRequestPeriodData\n meta: {\n current_page: number\n from: number\n last_page: number\n path: string\n per_page: number\n to: number\n total: number\n }\n}\n\ninterface LipheContractRequestPeriodData {\n id: number\n contract_request_id: number\n start_date: Date\n end_date: Date\n shift: 'morning' | 'afternoon' | 'evening' | 'night'\n start_time: Date\n end_time: Date\n departement_id: number\n note: string\n assignment_id: number\n assignment_parent_id: number | null\n created_at: Date\n updated_at: Date\n contract_request: LipheContractRequest\n department: string | null\n assignment: LipheAssignment\n assigned_employee_details: UserDetails\n assignment_employee: any\n}\n\ninterface UserDetails {\n id: number\n name: string\n email: string | null\n}\n\nexport class ContractRequestPeriodClient {\n private axiosInstance: AxiosInstance\n\n constructor(axiosInstance: AxiosInstance) {\n this.axiosInstance = axiosInstance\n }\n\n async fetchAllContractRequestPeriods(\n agencyId: Agency,\n from?: Date,\n to?: Date,\n page: number = 1,\n activeAssignationsOnly: boolean = true,\n assignedPractitionerId?: string\n ): Promise<Workorder[]> {\n const url = `v2/contract-request-periods/agency/${agencyId}`\n const params = new URLSearchParams()\n const periods: Workorder[] = []\n let nextPage = true\n\n if (from) {\n params.append('from', from.toISOString().split('T')[0] + ' 00:00:00')\n }\n if (to) {\n params.append('to', to.toISOString().split('T')[0] + ' 23:59:59')\n }\n if (page) {\n params.append('page', page.toString())\n }\n if (activeAssignationsOnly) {\n params.append('active_assignations_only', activeAssignationsOnly ? '1' : '0')\n }\n\n if (assignedPractitionerId) {\n params.append('assigned_employee_id', assignedPractitionerId)\n }\n\n while (nextPage) {\n params.set('page', page.toString())\n\n const response = await this.axiosInstance.get<LipheContractRequestPeriods>(url, {\n params\n })\n\n for (const period of response.data.data) {\n periods.push({\n id: period.id.toString(),\n name: period.id.toString(),\n establishmentId: period.contract_request.community.id.toString(),\n region: period.contract_request.community.contact.address_state,\n establishmentName: period.contract_request.community.name,\n role: this.getRole(period),\n practitionerId: period.assignment.selected_client.id,\n startDate: new Date(period.start_date),\n endDate: new Date(period.end_date),\n createdAt: new Date(period.created_at),\n updatedAt: new Date(period.updated_at)\n })\n }\n\n nextPage = page < response.data.meta.last_page\n page++\n }\n\n return periods\n }\n\n async fetchContractRequestPeriod(workorderId: string) {\n const url = `v2/contract-request-periods/${workorderId}`\n const params = new URLSearchParams()\n const response = await this.axiosInstance.get<LipheContractRequestPeriod>(url, { params })\n\n return response.data.data\n }\n\n async getPayPeriodDatesForPayPeriodId(payPeriodId: string): Promise<Period[]> {\n const period = await this.fetchContractRequestPeriod(payPeriodId)\n const payPeriods: {\n payPeriodId: string\n startDate: string\n endDate: string\n workorderId: string\n }[] = []\n\n const firstPayPeriodDate = this.getPayPeriodDayBeforeStartDate(\n new Date(period.assignment.selected_client.agency.date_first_periode_paie),\n new Date(period.start_date)\n )\n\n const lastPayPeriodDate = this.getLastDayOfPayPeriod(\n new Date(firstPayPeriodDate),\n new Date(period.end_date)\n )\n\n // Calculate the number of weeks between lastPayPeriodDate and firstPayPeriodDate\n const weeksBetween = this.calculateWeeksBetween(firstPayPeriodDate, lastPayPeriodDate)\n\n for (let i = 0; i < weeksBetween; i++) {\n const tempDate = new Date(firstPayPeriodDate)\n\n const startDate = new Date(tempDate.setDate(tempDate.getDate() + 7 * i))\n const endDate = new Date(tempDate.setDate(tempDate.getDate() + 6))\n\n payPeriods.push({\n payPeriodId: '',\n startDate: startDate.toISOString().split('T')[0],\n endDate: endDate.toISOString().split('T')[0],\n workorderId: payPeriodId\n })\n }\n\n return payPeriods as unknown as Period[]\n }\n\n private getRole(period: LipheContractRequestPeriodData) {\n if (period.contract_request.job.translations.length === 0) {\n return ''\n }\n\n if (period.contract_request.job.translations.length > 1) {\n const roleTranslation = period.contract_request.job.translations.find(\n (translation: any) => translation.locale === 'en'\n )\n return roleTranslation?.content\n } else {\n return period.contract_request.job.translations[0].content\n }\n }\n\n /**\n * Calculates the pay period day of week that comes before the start date\n * @param firstPayPeriodDate The first pay period date from the agency\n * @param startDate The start date to find the pay period before\n * @returns The day of week (0-6, where 0 is Sunday) of the pay period before start_date\n */\n private getPayPeriodDayBeforeStartDate(firstPayPeriodDate: Date, startDate: Date): Date {\n const payPeriodDayOfWeek = firstPayPeriodDate.getDay()\n\n // Calculate the most recent pay period date that falls before start_date\n const tempDate = new Date(startDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (tempDate.getDay() !== payPeriodDayOfWeek) {\n tempDate.setDate(tempDate.getDate() - 1)\n }\n\n // If the calculated date is not before start_date, go back another week\n if (tempDate >= startDate) {\n tempDate.setDate(tempDate.getDate() - 7)\n }\n\n return tempDate\n }\n\n private getLastDayOfPayPeriod(firstPayPeriodDate: Date, endDate: Date): Date {\n const tempDate = new Date(firstPayPeriodDate)\n\n // Go back one week at a time until we find a date that matches the pay period day of week\n while (endDate > tempDate) {\n tempDate.setDate(tempDate.getDate() + 7)\n }\n\n return tempDate\n }\n\n private calculateWeeksBetween(startDate: Date, endDate: Date): number {\n const diffTime = Math.abs(endDate.getTime() - startDate.getTime())\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24))\n const weeks = Math.floor(diffDays / 7)\n return weeks\n }\n}\n","import axios, { AxiosInstance } from 'axios'\nimport { LipheAuthenticator } from './auth/authClient'\nimport { LiphePractitionerClient } from './practitioner/practitionerClient'\nimport { ContractRequestPeriodClient } from './contract_request_period/contractRequestPeriodClient'\nimport axiosRetry from 'axios-retry'\n\nexport class LipheApiClient {\n private instance: LipheApiClient | undefined = undefined\n private axiosInstance: AxiosInstance = axios.create()\n private authenticator: LipheAuthenticator\n public practitionerClient: LiphePractitionerClient\n public contractRequestPeriodClient: ContractRequestPeriodClient\n\n constructor(\n baseUrl: string,\n email: string,\n password: string,\n type: 'user' | 'client' = 'user'\n ) {\n this.axiosInstance.defaults.baseURL = baseUrl\n\n this.authenticator = new LipheAuthenticator(\n this.axiosInstance,\n baseUrl,\n email,\n password,\n type\n )\n\n axiosRetry(this.axiosInstance, {\n retries: 10,\n retryDelay: retryCount => {\n return Math.min(1000 * Math.pow(2, retryCount - 1), 30000)\n },\n onRetry: (retryCount, error) => {\n console.log(`Retry attempt ${retryCount} failed: ${error.message}`)\n }\n })\n\n this.practitionerClient = new LiphePractitionerClient(this.axiosInstance)\n this.contractRequestPeriodClient = new ContractRequestPeriodClient(this.axiosInstance)\n }\n async init() {\n await this.authenticator.initializeAuth()\n }\n\n setInstance(instance: LipheApiClient) {\n this.instance = instance\n }\n\n getInstance(): LipheApiClient {\n return this.instance\n }\n\n getAxiosInstance(): AxiosInstance {\n return this.axiosInstance\n }\n}\n","export enum Agency {\n CHCA = \"7\",\n CodeBleu = \"5\",\n NordikOntario = \"6\",\n PHA = \"8\",\n PremierSoin = \"1\",\n PremierSoinNordik = \"3\",\n SolutionNursing = \"4\",\n SolutionsStaffing = \"9\",\n Transport = \"2\",\n SSI = \"99\"\n}\n\nexport * from './timesheet'\nexport * from './user'\nexport * from './workorder'\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","getTimesheetIds","_getTimesheetIds","workorderId","periodStartDate","periodEndDate","query","_yield$this$axiosInst","records","Date","toISOString","substring","get","params","q","map","record","Id","getTimesheetsForPractitioner","_getTimesheetsForPractitioner","personnelID","timesheets","_iterator","_step","_createForOfIteratorHelperLoose","done","value","push","WorkOrder__c","id","updatedAt","LastModifiedDate","getTimesheetHours","_getTimesheetHours","_callee4","fields","timesheetIds","allHours","_iterator2","_step2","timesheetId","_yield$this$axiosInst2","_callee4$","_context4","join","length","toTimesheetDayEntry","_x7","_x8","_x9","_x10","getPayPeriods","_getPayPeriods","_callee5","payPeriods","_iterator3","_step3","payPeriod","_callee5$","_context5","name","Name","startDate","StartDate__c","endDate","EndDate__c","uploadImageToTimesheet","_uploadImageToTimesheet","_callee6","file","filename","form","uploadRes","versionId","_yield$this$axiosInst3","contentDocumentId","_err$response","_callee6$","_context6","JSON","stringify","Title","PathOnClient","contentType","ContentDocumentId","LinkedEntityId","ShareType","Visibility","_x11","_x12","_x13","raw","lastModified","SFPractitionerClient","fetchPractitioners","_fetchPractitioners","options","conditions","whereClause","limitClause","createdAt","limit","Math","floor","toPractitioner","fetchPractitionerByEmail","_fetchPractitionerByEmail","email","firstName","FirstName__c","lastName","LastName__c","Email__c","staffId","StaffID__c","CreatedDate","replace","SFWorkorderClient","getWorkordersForPractitioner","_getWorkordersForPractitioner","practitionerId","_options$provinces","filters","isoStart","isoEnd","_options$provinces2","provincesList","split","provinces","p","then","establishmentId","HospitalID__c","region","Region__c","establishmentName","HospitalName__c","role","ProfessionalDesignation__c","Personnel__c","startdate__c","unit","unformattedUnit","trim","Unit__c","SFPayPeriodClient","getPayPeriodAndTimesheetIdsForWorkorder","_getPayPeriodAndTimesheetIdsForWorkorder","workorderID","payPeriodIds","payPeriodId","PayPeriod__c","getPayPeriodDatesForPayPeriodIds","_getPayPeriodDatesForPayPeriodIds","payPeriodIDs","payPeriodDates","listOfIdsForQuery","EXPENSE_FIELD_MAP","Lodging","Other","Transportation","SFExpenseClient","fetchExpenseTotals","_fetchExpenseTotals","toExpense","patchTimesheet","_patchTimesheet","body","res","updateExpense","_updateExpense","expense","_this$patchTimesheet","amount","field","workorderPeriodId","Number","type","reimbursable","_raw$Reimburseable_Ex","Reimburseable_Expenses__c","perDiem","_raw$Per_Diem_Total__","Per_Diem_Total__c","lodging","_raw$StipendTotalOver","StipendTotalOverride__c","transportation","_raw$TaxiAmount__c","TaxiAmount__c","SFApiClient","init","_init","sfClientId","sfClientSecret","authenticator","timesheetClient","workorderClient","practitionerClient","payPeriodClient","expenseClient","setInstance","instance","getInstance","fetchRoles","_fetchRoles","label","Label","Value","LipheAuthenticator","password","axiosRetry","retries","retryDelay","retryCount","min","pow","login","_login","LiphePractitionerClient","fetchAllPractitioners","_fetchAllPractitioners","agencyId","practitioners","page","nextPage","agency_id","Array","isArray","pagePractitioners","firstname","lastname","communicationMode","Boolean","next_page_url","String","ContractRequestPeriodClient","fetchAllContractRequestPeriods","_fetchAllContractRequestPeriods","from","to","activeAssignationsOnly","assignedPractitionerId","periods","period","URLSearchParams","toString","set","contract_request","community","contact","address_state","getRole","assignment","selected_client","start_date","end_date","created_at","updated_at","meta","last_page","fetchContractRequestPeriod","_fetchContractRequestPeriod","getPayPeriodDatesForPayPeriodId","_getPayPeriodDatesForPayPeriodId","firstPayPeriodDate","lastPayPeriodDate","weeksBetween","i","tempDate","getPayPeriodDayBeforeStartDate","agency","date_first_periode_paie","getLastDayOfPayPeriod","calculateWeeksBetween","setDate","getDate","job","translations","roleTranslation","find","translation","locale","content","payPeriodDayOfWeek","getDay","diffTime","abs","getTime","diffDays","ceil","weeks","LipheApiClient","onRetry","log","contractRequestPeriodClient","getAxiosInstance","Agency"],"mappings":"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"}
|