// types import { IEstimate, IEstimateFormData, IEstimatePoint } from "@plane/types"; // helpers import { API_BASE_URL } from "@/helpers/common.helper"; // services import { APIService } from "@/services/api.service"; class EstimateService extends APIService { constructor() { super(API_BASE_URL); } async fetchWorkspaceEstimates(workspaceSlug: string): Promise { try { const { data } = await this.get(`/api/workspaces/${workspaceSlug}/estimates/`); return data || undefined; } catch (error) { throw error; } } async fetchProjectEstimates(workspaceSlug: string, projectId: string): Promise { try { const { data } = await this.get(`/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/`); return data || undefined; } catch (error) { throw error; } } async fetchEstimateById( workspaceSlug: string, projectId: string, estimateId: string ): Promise { try { const { data } = await this.get( `/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/` ); return data || undefined; } catch (error) { throw error; } } async createEstimate( workspaceSlug: string, projectId: string, payload: IEstimateFormData ): Promise { try { const { data } = await this.post(`/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/`, payload); return data || undefined; } catch (error) { throw error; } } async updateEstimate( workspaceSlug: string, projectId: string, estimateId: string, payload: Partial ): Promise { try { const { data } = await this.patch( `/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/`, payload ); return data || undefined; } catch (error) { throw error; } } async deleteEstimate(workspaceSlug: string, projectId: string, estimateId: string): Promise { try { await this.delete(`/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/`); } catch (error) { throw error; } } async createEstimatePoint( workspaceSlug: string, projectId: string, estimateId: string, payload: Partial ): Promise { try { const { data } = await this.post( `/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/estimate-points/`, payload ); return data || undefined; } catch (error) { throw error; } } async updateEstimatePoint( workspaceSlug: string, projectId: string, estimateId: string, estimatePointId: string, payload: Partial ): Promise { try { const { data } = await this.patch( `/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/estimate-points/${estimatePointId}/`, payload ); return data || undefined; } catch (error) { throw error; } } async removeEstimatePoint( workspaceSlug: string, projectId: string, estimateId: string, estimatePointId: string, params?: { new_estimate_id: string | undefined } ): Promise { return this.delete( `/api/workspaces/${workspaceSlug}/projects/${projectId}/estimates/${estimateId}/estimate-points/${estimatePointId}/`, params ) .then((response) => response?.data) .catch((error) => { throw error?.response?.data; }); } } const estimateService = new EstimateService(); export default estimateService;