/**
 * 일정 관련 공개 API
 */
import { fetchApi } from "../index";
import { getTodayKST } from "../../utils/date";

// 일정 목록 조회 (월별)
export async function getSchedules(year, month) {
  const data = await fetchApi(`/api/schedules?year=${year}&month=${month}`);

  // 날짜별 그룹화된 응답을 플랫 배열로 변환
  const schedules = [];
  for (const [date, dayData] of Object.entries(data)) {
    for (const schedule of dayData.schedules) {
      const category = schedule.category || {};
      schedules.push({
        ...schedule,
        date,
        category_id: category.id,
        category_name: category.name,
        category_color: category.color,
      });
    }
  }
  return schedules;
}

// 다가오는 일정 조회 (오늘 이후)
export async function getUpcomingSchedules(limit = 3) {
  const todayStr = getTodayKST();
  return fetchApi(`/api/schedules?startDate=${todayStr}&limit=${limit}`);
}

// 일정 검색 (Meilisearch)
export async function searchSchedules(query, { offset = 0, limit = 20 } = {}) {
  return fetchApi(
    `/api/schedules?search=${encodeURIComponent(
      query
    )}&offset=${offset}&limit=${limit}`
  );
}

// 일정 상세 조회
export async function getSchedule(id) {
  return fetchApi(`/api/schedules/${id}`);
}

// X 프로필 정보 조회
export async function getXProfile(username) {
  return fetchApi(`/api/schedules/x-profile/${encodeURIComponent(username)}`);
}
