Update May 12 by Elvis

This commit is contained in:
belviskhoremk
2026-05-12 00:28:37 +00:00
parent b32a70cd0e
commit c4450c993b
37 changed files with 3749 additions and 600 deletions

52
lib/api/services.ts Normal file
View 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}`);
}