mirror of
http://88.130.71.182:3000/BlitTech/badoHair_fe.git
synced 2026-06-13 10:41:11 +00:00
Update May 12 by Elvis
This commit is contained in:
52
lib/api/services.ts
Normal file
52
lib/api/services.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
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}`);
|
||||
}
|
||||
Reference in New Issue
Block a user