53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { api } from "@/lib/api";
|
|
|
|
export interface ApiService {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
duration_minutes: number;
|
|
price: number;
|
|
}
|
|
|
|
export function formatDuration(minutes: number): string {
|
|
if (minutes < 60) return `${minutes} min`;
|
|
const h = Math.floor(minutes / 60);
|
|
const m = minutes % 60;
|
|
return m > 0 ? `${h}h ${m}min` : `${h}h`;
|
|
}
|
|
|
|
export async function listServices(): Promise<ApiService[]> {
|
|
return api.get<ApiService[]>("/services");
|
|
}
|
|
|
|
// ── Admin ─────────────────────────────────────────────────────────────────────
|
|
|
|
export interface AdminServiceApi extends ApiService {
|
|
is_active: boolean;
|
|
created_at: string;
|
|
updated_at: string;
|
|
}
|
|
|
|
export interface ServicePayload {
|
|
name: string;
|
|
description?: string;
|
|
duration_minutes: number;
|
|
price: number;
|
|
is_active: boolean;
|
|
}
|
|
|
|
export async function adminListServices(): Promise<AdminServiceApi[]> {
|
|
return api.get<AdminServiceApi[]>("/admin/services");
|
|
}
|
|
|
|
export async function adminCreateService(payload: ServicePayload): Promise<AdminServiceApi> {
|
|
return api.post<AdminServiceApi>("/admin/services", payload);
|
|
}
|
|
|
|
export async function adminUpdateService(id: string, payload: Partial<ServicePayload>): Promise<AdminServiceApi> {
|
|
return api.put<AdminServiceApi>(`/admin/services/${id}`, payload);
|
|
}
|
|
|
|
export async function adminDeleteService(id: string): Promise<void> {
|
|
await api.del(`/admin/services/${id}`);
|
|
}
|