Added authFetch currently getting access toke for all request as health check api is not available on sf ye
This commit is contained in:
parent
166cf4db45
commit
320d44f4b5
|
|
@ -71,7 +71,7 @@ async function project_add_sf(req, res) {
|
||||||
hourlyRate: hourlyRate || '0',
|
hourlyRate: hourlyRate || '0',
|
||||||
clientId: clientObjectId,
|
clientId: clientObjectId,
|
||||||
vaAssigned: vaAssigned,
|
vaAssigned: vaAssigned,
|
||||||
dedicatedHours: dedicatedHours ? parseFloat(dedicatedHours) : 0,
|
dedicatedHours: dedicatedHours || ["0", "0", "0", "0", "0", "0", "0"],
|
||||||
vaWorkingScheduleStart: vaWorkingScheduleStart || null,
|
vaWorkingScheduleStart: vaWorkingScheduleStart || null,
|
||||||
vaWorkingScheduleEnd: vaWorkingScheduleEnd || null,
|
vaWorkingScheduleEnd: vaWorkingScheduleEnd || null,
|
||||||
isFlexibleAllowed: isFlexibleAllowed || true,
|
isFlexibleAllowed: isFlexibleAllowed || true,
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ async function update_project_sf(req, res) {
|
||||||
|
|
||||||
// Update dedicated hours if provided
|
// Update dedicated hours if provided
|
||||||
if (dedicatedHours !== undefined) {
|
if (dedicatedHours !== undefined) {
|
||||||
updateData.dedicatedHours = parseFloat(dedicatedHours) || 0;
|
updateData.dedicatedHours = dedicatedHours || ["0", "0", "0", "0", "0", "0", "0"];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update total logged hours if provided
|
// Update total logged hours if provided
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import bcrypt from "bcrypt";
|
import bcrypt from "bcrypt";
|
||||||
import jwt from "jsonwebtoken";
|
import jwt from "jsonwebtoken";
|
||||||
import { VAModel, LoggedModel, WorkTrackModel } from "../../../models/vaModel.js";
|
import { VAModel, LoggedModel, WorkTrackModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// function to close open work tracks and create logout
|
// function to close open work tracks and create logout
|
||||||
async function closePreviousSession(vaId, lastLog) {
|
async function closePreviousSession(vaId, lastLog) {
|
||||||
|
|
@ -53,7 +54,7 @@ async function closePreviousSession(vaId, lastLog) {
|
||||||
"time": logoutLog.time,
|
"time": logoutLog.time,
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import jwt from "jsonwebtoken";
|
import jwt from "jsonwebtoken";
|
||||||
import { VAModel, LeavesModel } from "../../../models/vaModel.js";
|
import { VAModel, LeavesModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// Apply for leave
|
// Apply for leave
|
||||||
async function va_leave_apply_function(req, res) {
|
async function va_leave_apply_function(req, res) {
|
||||||
|
|
@ -164,7 +165,7 @@ async function va_leave_apply_function(req, res) {
|
||||||
"rejectionReason": ""
|
"rejectionReason": ""
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { VAModel } from "../../../models/vaModel.js";
|
import { VAModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
async function va_payslip_data_function(req, res) {
|
async function va_payslip_data_function(req, res) {
|
||||||
try {
|
try {
|
||||||
|
|
@ -11,7 +12,7 @@ async function va_payslip_data_function(req, res) {
|
||||||
|
|
||||||
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/va-payslip/${vaId}`;
|
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/va-payslip/${vaId}`;
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ async function va_payroll_schedule_function(req, res) {
|
||||||
try {
|
try {
|
||||||
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/payroll-schedule`;
|
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/payroll-schedule`;
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import bcrypt from "bcrypt";
|
import bcrypt from "bcrypt";
|
||||||
import { VAModel } from "../../../models/vaModel.js";
|
import { VAModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// Register a new VA
|
// Register a new VA
|
||||||
async function va_register(req, res) {
|
async function va_register(req, res) {
|
||||||
|
|
@ -53,7 +54,7 @@ async function va_register(req, res) {
|
||||||
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/virtualassistant`;
|
const salesforceUrl = `${process.env.SF_DOCTRACKER_API_URL}services/apexrest/docva/api/virtualassistant`;
|
||||||
delete created.userDetails._id;
|
delete created.userDetails._id;
|
||||||
created.userDetails._id = created._id; // Include VA's MongoDB ID
|
created.userDetails._id = created._id; // Include VA's MongoDB ID
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { LoggedModel, WorkTrackModel, ProjectModel, VAModel } from "../../../models/vaModel.js";
|
import { LoggedModel, WorkTrackModel, ProjectModel, VAModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// Helper function to get start and end of day in UTC
|
// Helper function to get start and end of day in UTC
|
||||||
function getDayRange(date = new Date()) {
|
function getDayRange(date = new Date()) {
|
||||||
|
|
@ -197,7 +198,7 @@ async function closePreviousSession(vaId, lastLog, logTime = new Date()) {
|
||||||
"time": logoutLog.time,
|
"time": logoutLog.time,
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
@ -373,7 +374,7 @@ async function va_project_log_callback(req, res) {
|
||||||
"time": createdLog.time,
|
"time": createdLog.time,
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
@ -471,7 +472,7 @@ async function va_project_log_callback(req, res) {
|
||||||
"time": createdLog.time,
|
"time": createdLog.time,
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
@ -533,7 +534,7 @@ async function va_project_log_callback(req, res) {
|
||||||
"time": createdLog.time,
|
"time": createdLog.time,
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import jwt from "jsonwebtoken";
|
import jwt from "jsonwebtoken";
|
||||||
import { VAModel, ProjectModel, AdjustedHoursModel } from "../../../models/vaModel.js";
|
import { VAModel, ProjectModel, AdjustedHoursModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// Adjust missing hours by creating new records
|
// Adjust missing hours by creating new records
|
||||||
async function va_timesheet_adjustment_function(req, res) {
|
async function va_timesheet_adjustment_function(req, res) {
|
||||||
|
|
@ -155,7 +156,7 @@ async function va_timesheet_adjustment_function(req, res) {
|
||||||
"adjustedHours": formatTime(adjustedSeconds)
|
"adjustedHours": formatTime(adjustedSeconds)
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { VAModel, TipsModel, ClientModel } from "../../../models/vaModel.js";
|
import { VAModel, TipsModel, ClientModel } from "../../../models/vaModel.js";
|
||||||
|
import authFetch from "../../../utils/authFetch.js";
|
||||||
|
|
||||||
// Approve or reject leave
|
// Approve or reject leave
|
||||||
async function va_tips_manage_function(req, res) {
|
async function va_tips_manage_function(req, res) {
|
||||||
|
|
@ -38,7 +39,7 @@ async function va_tips_manage_function(req, res) {
|
||||||
"tipAmount": Number(parseFloat(createdTip.amount).toFixed(2)), // Convert to cents
|
"tipAmount": Number(parseFloat(createdTip.amount).toFixed(2)), // Convert to cents
|
||||||
}
|
}
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
@ -116,7 +117,7 @@ async function va_tips_delete(req, res) {
|
||||||
// "tipAmount": Number(parseFloat(createdTip.amount).toFixed(2)), // Convert to cents
|
// "tipAmount": Number(parseFloat(createdTip.amount).toFixed(2)), // Convert to cents
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const response = await fetch(salesforceUrl, {
|
const response = await authFetch(salesforceUrl, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,8 @@ const projectSchema = new Schema({
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
dedicatedHours: {
|
dedicatedHours: {
|
||||||
type: String,
|
type: Array,
|
||||||
default: "0"
|
default: ["0", "0", "0", "0", "0", "0", "0"]
|
||||||
},
|
},
|
||||||
status: {
|
status: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
import fetch from "node-fetch"; // or global fetch in Node 18+
|
||||||
|
|
||||||
|
let options = {
|
||||||
|
token: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const getAccessToken = async () => {
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
const response = await fetch(`${process.env.SF_DOCTRACKER_API_URL}services/oauth2/token`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
},
|
||||||
|
body: new URLSearchParams({
|
||||||
|
grant_type: 'client_credentials',
|
||||||
|
client_id: process.env.SF_CLIENT_ID,
|
||||||
|
client_secret: process.env.SF_CLIENT_SECRET,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
console.log(response)
|
||||||
|
options.token = (await response.json()).access_token;
|
||||||
|
return options.token;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error fetching access token:', error);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
export const authFetch = async (url, options = {}) => {
|
||||||
|
const token = await getAccessToken();
|
||||||
|
|
||||||
|
return fetch(url, {
|
||||||
|
...options,
|
||||||
|
headers: {
|
||||||
|
...(options.headers || {}),
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Authorization: `Bearer ${token}`,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export default authFetch;
|
||||||
|
export { getAccessToken }
|
||||||
Loading…
Reference in New Issue