Files
gg-backend/frontend/src/api/facility.ts
T

94 lines
2.3 KiB
TypeScript
Raw Normal View History

2026-06-25 16:59:11 +05:30
import apiClient from '@/api/client';
import toast from 'react-hot-toast';
export interface SeoData {
seoTitle?: string;
metaDescription?: string;
focusKeyphrase?: string;
slug?: string;
tags?: string[];
ogTitle?: string;
ogDescription?: string;
ogImage?: string;
}
export interface FacilityImage {
id?: number;
url: string;
altText?: string;
description?: string;
}
export interface Facility {
id?: number;
facilityId: string;
name: string;
slug: string;
shortDescription?: string;
description?: string;
videoUrl?: string;
isActive: boolean;
isFeatured: boolean;
sortOrder: number;
departmentId?: number | null;
department?: {
id: number;
departmentId: string;
name: string;
} | null;
images?: FacilityImage[];
seo?: SeoData | null;
}
export const getAllFacilitiesApi = async () => {
const res = await apiClient.get('/facilities/getAll?admin=true');
return res.data;
};
export const getFacilityByIdApi = async (facilityId: string) => {
const res = await apiClient.get(`/facilities/${facilityId}`);
return res.data;
};
export const getFeaturedFacilitiesApi = async () => {
const res = await apiClient.get('/facilities/featured');
return res.data;
};
export const createFacilityApi = async (data: Partial<Facility> & SeoData) => {
try {
const res = await apiClient.post('/facilities', data);
toast.success('Facility created successfully');
return res.data;
} catch (error: any) {
toast.error(error?.response?.data?.message || 'Failed to create facility');
throw error;
}
};
export const updateFacilityApi = async (
facilityId: string,
data: Partial<Facility> & SeoData,
action: 'toggleStatus' | 'toggleFeatured' | 'updateDetails' = 'updateDetails'
) => {
try {
const res = await apiClient.patch(`/facilities/${facilityId}/${action}`, data);
toast.success('Facility updated successfully');
return res.data;
} catch (error: any) {
toast.error(error?.response?.data?.message || 'Failed to update facility');
throw error;
}
};
export const deleteFacilityApi = async (facilityId: string) => {
try {
const res = await apiClient.delete(`/facilities/${facilityId}`);
toast.success('Facility deleted successfully');
return res.data;
} catch (error: any) {
toast.error(error?.response?.data?.message || 'Failed to delete facility');
throw error;
}
};