import { getApiBaseUrl } from '$lib/api';
import { authenticatedFetch } from '$lib/auth';
import type { ScheduleSlot } from './schedule';

export interface ChildScheduleSummary {
	childId: string;
	firstName: string;
	lastName: string;
	todaySlots: ScheduleSlot[];
	nextClass: ScheduleSlot | null;
}

/**
 * Récupère l'EDT du jour d'un enfant pour le parent connecté.
 */
export async function fetchChildDaySchedule(childId: string, date: string): Promise<ScheduleSlot[]> {
	const apiUrl = getApiBaseUrl();
	const response = await authenticatedFetch(`${apiUrl}/me/children/${childId}/schedule/day/${date}`);

	if (!response.ok) {
		throw new Error(`Erreur lors du chargement de l'EDT (${response.status})`);
	}

	const json = await response.json();
	return json.data ?? [];
}

/**
 * Récupère l'EDT de la semaine d'un enfant pour le parent connecté.
 */
export async function fetchChildWeekSchedule(childId: string, date: string): Promise<ScheduleSlot[]> {
	const apiUrl = getApiBaseUrl();
	const response = await authenticatedFetch(`${apiUrl}/me/children/${childId}/schedule/week/${date}`);

	if (!response.ok) {
		throw new Error(`Erreur lors du chargement de l'EDT (${response.status})`);
	}

	const json = await response.json();
	return json.data ?? [];
}

/**
 * Récupère le résumé EDT du jour pour tous les enfants du parent connecté.
 */
export async function fetchChildrenScheduleSummary(): Promise<ChildScheduleSummary[]> {
	const apiUrl = getApiBaseUrl();
	const response = await authenticatedFetch(`${apiUrl}/me/children/schedule/summary`);

	if (!response.ok) {
		throw new Error(`Erreur lors du chargement du résumé EDT (${response.status})`);
	}

	const json = await response.json();
	return json.data ?? [];
}
