Merge branch 'release-v2.1.4' into feature/task-activities-by-user
This commit is contained in:
@@ -0,0 +1,92 @@
|
||||
import { API_BASE_URL } from '@/shared/constants';
|
||||
import { toQueryString } from '@/utils/toQueryString';
|
||||
import apiClient from '../api-client';
|
||||
import { IServerResponse } from '@/types/common.types';
|
||||
import { IAllocationViewModel } from '@/types/reporting/reporting-allocation.types';
|
||||
import {
|
||||
IProjectLogsBreakdown,
|
||||
IRPTTimeMember,
|
||||
IRPTTimeProject,
|
||||
ITimeLogBreakdownReq,
|
||||
} from '@/types/reporting/reporting.types';
|
||||
|
||||
const rootUrl = `${API_BASE_URL}/reporting`;
|
||||
|
||||
// Helper function to get user's timezone
|
||||
const getUserTimezone = () => {
|
||||
return Intl.DateTimeFormat().resolvedOptions().timeZone;
|
||||
};
|
||||
|
||||
export const reportingTimesheetApiService = {
|
||||
getTimeSheetData: async (
|
||||
body = {},
|
||||
archived = false
|
||||
): Promise<IServerResponse<IAllocationViewModel>> => {
|
||||
const q = toQueryString({ archived });
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/allocation/${q}`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getAllocationProjects: async (body = {}) => {
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/allocation/allocation-projects`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getProjectTimeSheets: async (
|
||||
body = {},
|
||||
archived = false
|
||||
): Promise<IServerResponse<IRPTTimeProject[]>> => {
|
||||
const q = toQueryString({ archived });
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/time-reports/projects/${q}`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getMemberTimeSheets: async (
|
||||
body = {},
|
||||
archived = false
|
||||
): Promise<IServerResponse<IRPTTimeMember[]>> => {
|
||||
const q = toQueryString({ archived });
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/time-reports/members/${q}`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getProjectTimeLogs: async (
|
||||
body: ITimeLogBreakdownReq
|
||||
): Promise<IServerResponse<IProjectLogsBreakdown[]>> => {
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/project-timelogs`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
getProjectEstimatedVsActual: async (
|
||||
body = {},
|
||||
archived = false
|
||||
): Promise<IServerResponse<IRPTTimeProject[]>> => {
|
||||
const q = toQueryString({ archived });
|
||||
const bodyWithTimezone = {
|
||||
...body,
|
||||
timezone: getUserTimezone()
|
||||
};
|
||||
const response = await apiClient.post(`${rootUrl}/time-reports/estimated-vs-actual${q}`, bodyWithTimezone);
|
||||
return response.data;
|
||||
},
|
||||
};
|
||||
27
worklenz-frontend/src/api/survey/survey.api.service.ts
Normal file
27
worklenz-frontend/src/api/survey/survey.api.service.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { IServerResponse } from '@/types/common.types';
|
||||
import { ISurvey, ISurveySubmissionRequest, ISurveyResponse } from '@/types/account-setup/survey.types';
|
||||
import apiClient from '../api-client';
|
||||
|
||||
const API_BASE_URL = '/api/v1';
|
||||
|
||||
export const surveyApiService = {
|
||||
async getAccountSetupSurvey(): Promise<IServerResponse<ISurvey>> {
|
||||
const response = await apiClient.get<IServerResponse<ISurvey>>(`${API_BASE_URL}/surveys/account-setup`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async submitSurveyResponse(data: ISurveySubmissionRequest): Promise<IServerResponse<{ response_id: string }>> {
|
||||
const response = await apiClient.post<IServerResponse<{ response_id: string }>>(`${API_BASE_URL}/surveys/responses`, data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async getUserSurveyResponse(surveyId: string): Promise<IServerResponse<ISurveyResponse>> {
|
||||
const response = await apiClient.get<IServerResponse<ISurveyResponse>>(`${API_BASE_URL}/surveys/responses/${surveyId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
async checkAccountSetupSurveyStatus(): Promise<IServerResponse<{ is_completed: boolean; completed_at?: string }>> {
|
||||
const response = await apiClient.get<IServerResponse<{ is_completed: boolean; completed_at?: string }>>(`${API_BASE_URL}/surveys/account-setup/status`);
|
||||
return response.data;
|
||||
}
|
||||
};
|
||||
@@ -2,6 +2,7 @@ import { API_BASE_URL } from '@/shared/constants';
|
||||
import apiClient from '../api-client';
|
||||
import { IServerResponse } from '@/types/common.types';
|
||||
import { ITaskLogViewModel } from '@/types/tasks/task-log-view.types';
|
||||
import { getUserSession } from '@/utils/session-helper';
|
||||
|
||||
const rootUrl = `${API_BASE_URL}/task-time-log`;
|
||||
|
||||
@@ -17,7 +18,11 @@ export interface IRunningTimer {
|
||||
|
||||
export const taskTimeLogsApiService = {
|
||||
getByTask: async (id: string): Promise<IServerResponse<ITaskLogViewModel[]>> => {
|
||||
const response = await apiClient.get(`${rootUrl}/task/${id}`);
|
||||
const session = getUserSession();
|
||||
const timezone = session?.timezone_name || 'UTC';
|
||||
const response = await apiClient.get(`${rootUrl}/task/${id}`, {
|
||||
params: { time_zone_name: timezone }
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user