Files
tm_panel/src/lib/api/services/tenders-service.ts
T
AmirReza Jamali a238edc563 feat(dashboard): refactor home page to utilize TenderDashboard component
- Replaced the previous home page structure with a simplified TenderDashboard component for improved clarity and maintainability.
- Updated the .gitignore file to include IDE-specific files, ensuring a cleaner repository.
- Enhanced the useTenderListPresenter to support new parsing logic for cpv_codes in search parameters.
- Introduced a new utility function, buildQueryString, for better handling of query parameters in API requests.
2026-05-18 10:59:16 +03:30

83 lines
2.3 KiB
TypeScript

import { serializeAxiosParams } from "@/utils/shared";
import api from "../axios";
import { API_ENDPOINTS } from "../endpoints";
import { ApiResponse } from "../types";
import {
TTenderDetails,
TTenderDocumentsResponse,
TTenderResponse,
TTenderTranslationResponse,
} from "../types/Tenders";
export const tendersService = {
tendersList: async (
params?: Record<string, any>,
): Promise<ApiResponse<TTenderResponse>> => {
try {
return (
await api.get(API_ENDPOINTS.TENDERS.READ_ALL, {
params,
paramsSerializer: serializeAxiosParams,
})
).data;
} catch (error) {
console.error("ERROR caught in Tenders Services Read all:", error);
throw error;
}
},
tenderDetails: async (
id: string,
params?: Record<string, any>,
): Promise<ApiResponse<TTenderDetails>> => {
try {
return (await api.get(API_ENDPOINTS.TENDERS.DETAILS(id), { params })).data;
} catch (error) {
console.error(
"ERROR caught in Tender Service => tender details: ",
error,
);
throw error;
}
},
translateTender: async ({
id,
language,
}: {
id: string;
language: string;
}): Promise<ApiResponse<TTenderTranslationResponse>> => {
try {
return (
await api.post(API_ENDPOINTS.TENDERS.AI_TRANSLATE(id), {
language,
})
).data;
} catch (error) {
console.error("ERROR caught in Tender Service => translate tender: ", error);
throw error;
}
},
getDocuments: async (id: string): Promise<ApiResponse<TTenderDocumentsResponse[]>> => {
try {
return (await api.get(API_ENDPOINTS.TENDERS.DOCUMENTS(id))).data;
} catch (error) {
console.error("ERROR caught in Tender Service => get documents: ", error);
throw error;
}
},
/** Single file — backend expects `filename` matching the list entry. */
downloadTenderDocument: (tenderId: string, filename: string) =>
api.get<Blob>(API_ENDPOINTS.TENDERS.DOCUMENTS_DOWNLOAD(tenderId), {
params: { filename },
responseType: "blob",
}),
/** Optional bulk archive when the API returns a zip without extra params. */
downloadTenderDocumentsArchive: (tenderId: string) =>
api.get<Blob>(API_ENDPOINTS.TENDERS.DOCUMENTS_DOWNLOAD(tenderId), {
responseType: "blob",
}),
};