Files
plane/web/ee/services/workspace-worklog.service.ts
guru_sainath 65d4bee539 [WEB-1846] feat: time tracking (#608)
* chore: integrated time traking enabled/disabled feature on project settings and updated the pro icon as a component

* chore: Showing the toggle and disabled to make any operations on project features

* chore: default exports in constants

* chore: seperated isEnabled and isPro

* chore: updated time traking key

* chore: issue worklog endpoint

* chore: added work log issue

* chore: csv worklog downloads

* chore: acitvity listing

* chore: added workspace in export issues

* chore: initialised services, contants, and store

* chore: integrated worklog hooks

* chore: changed types in worklog type

* chore: worklog response changes

* chore: serializer changes

* chore: corrected the import statement

* chore: Worklog components and page updates

* fix: download csv and excel

* chore: implemented pagination for table and updated worklog downloads

* chore: updated pagination and updated the api for worklog download filter param

* chore: download response change

* chore: import errors resolved in issue worklog

* chore: handled loaders and empty states in worklog settings

* chore: ui, typos and cleanup

* chore: resolved merge conflicts

* chore: updating the time tracking on issue detail page

* chore: updated the ui worklog issue property button

* chore: removed create from the worklog header

* chore: updated default filters from constants

* chore: resolved ce code updates

* chore: ce cleanup

* chore: worklogs in issue activity

* ui: updated UI for peek overview and issue detail for worklog property

* fix: exporter type

* ui: handled the typos

* ui: loader ui height changes

* chore: resolved merge conflicts

* chore: handled the project worklogs enabled/disabled in the issues

* chore: handled empty screen for worklog

* chore: typo

---------

Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
Co-authored-by: Satish Gandham <satish.iitg@gmail.com>
2024-07-22 19:43:49 +05:30

196 lines
5.3 KiB
TypeScript

/* eslint-disable no-useless-catch */
// helpers
import { API_BASE_URL } from "@/helpers/common.helper";
// plane web types
import {
TWorklog,
TWorklogDownload,
TWorklogDownloadPaginatedInfo,
TWorklogIssueTotalCount,
TWorklogPaginatedInfo,
TWorklogQueryParams,
} from "@/plane-web/types";
// services
import { APIService } from "@/services/api.service";
export class WorklogService extends APIService {
constructor() {
super(API_BASE_URL);
}
/**
* @description fetching workspace worklogs
* @param { string } workspaceSlug
* @param { TWorklogQueryParams } params
* @returns { TWorklogPaginatedInfo | undefined }
*/
async fetchWorkspaceWorklogs(
workspaceSlug: string,
params: TWorklogQueryParams
): Promise<TWorklogPaginatedInfo | undefined> {
try {
const { data } = await this.get(`/api/workspaces/${workspaceSlug}/worklogs/`, { params });
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description fetching issue worklogs by issueId
* @param { string } workspaceSlug
* @param { string } projectId
* @param { string } issueId
* @returns { TWorklog[] | undefined }
*/
async fetchWorklogsByIssueId(
workspaceSlug: string,
projectId: string,
issueId: string
): Promise<TWorklog[] | undefined> {
try {
const { data } = await this.get(
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/`
);
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description fetching issue worklogs by issueId
* @param { string } workspaceSlug
* @param { string } projectId
* @param { string } issueId
* @returns { TWorklogIssueTotalCount | undefined }
*/
async fetchWorklogCountByIssueId(
workspaceSlug: string,
projectId: string,
issueId: string
): Promise<TWorklogIssueTotalCount | undefined> {
try {
const { data } = await this.get(
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/total-worklogs/`
);
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description create issue worklog
* @param { string } workspaceSlug
* @param { string } projectId
* @param { string } issueId
* @param { Partial<TWorklog> } payload
* @returns { TWorklog | undefined }
*/
async createWorklog(
workspaceSlug: string,
projectId: string,
issueId: string,
payload: Partial<TWorklog>
): Promise<TWorklog | undefined> {
try {
const { data } = await this.post(
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/`,
payload
);
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description update issue worklog
* @param { string } workspaceSlug
* @param { string } projectId
* @param { string } issueId
* @param { string } worklogId
* @param { Partial<TWorklog> } payload
* @returns { TWorklog | undefined }
*/
async updateWorklogById(
workspaceSlug: string,
projectId: string,
issueId: string,
worklogId: string,
payload: Partial<TWorklog>
): Promise<TWorklog | undefined> {
try {
const { data } = await this.patch(
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/${worklogId}/`,
payload
);
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description update issue worklog
* @param { string } workspaceSlug
* @param { string } projectId
* @param { string } issueId
* @param { string } worklogId
* @returns { void }
*/
async deleteWorklogById(workspaceSlug: string, projectId: string, issueId: string, worklogId: string): Promise<void> {
try {
const { data } = await this.delete(
`/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/${issueId}/worklogs/${worklogId}/`
);
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description fetching workspace worklog downloads
* @param { string } workspaceSlug
* @param { string } params
* @returns { TWorklogDownloadPaginatedInfo | undefined }
*/
async fetchWorkspaceWorklogDownloads(
workspaceSlug: string,
params: TWorklogQueryParams
): Promise<TWorklogDownloadPaginatedInfo | undefined> {
try {
const { data } = await this.get(`/api/workspaces/${workspaceSlug}/export-worklogs/`, { params });
return data || undefined;
} catch (error) {
throw error;
}
}
/**
* @description create worklog download
* @param { string } workspaceSlug
* @param { Partial<TWorklogDownload> } payload
* @param { TWorklogQueryParams } params
* @returns { TWorklogDownload | undefined }
*/
async createWorklogDownload(
workspaceSlug: string,
payload: Partial<TWorklogDownload>,
params: TWorklogQueryParams
): Promise<TWorklogDownload | undefined> {
try {
const { data } = await this.post(`/api/workspaces/${workspaceSlug}/export-worklogs/`, payload, { params });
return data || undefined;
} catch (error) {
throw error;
}
}
}
const worklogService = new WorklogService();
export default worklogService;