//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.
//Copyright (C) 2024 HTWKalender support@htwkalender.de

//This program is free software: you can redistribute it and/or modify
//it under the terms of the GNU Affero General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.

//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU Affero General Public License for more details.

//You should have received a copy of the GNU Affero General Public License
//along with this program.  If not, see <https://www.gnu.org/licenses/>.

import { AnonymizedEventDTO } from "../model/event.ts";

export async function fetchRoom(): Promise<string[]> {
  if (import.meta.env.SSR) {
    return [];
  }
  const rooms: string[] = [];
  await fetch("/api/rooms")
    .then((response) => {
      return response.json();
    })
    .then((roomsResponse: [] | null) => {
      roomsResponse?.forEach((room: string) => rooms.push(room));
    });
  return rooms;
}

export async function fetchEventsByRoomAndDuration(
  room: string,
  from_date: string,
  to_date: string,
): Promise<AnonymizedEventDTO[]> {
  if (import.meta.env.SSR) {
    return [];
  }
  const events: AnonymizedEventDTO[] = [];
  await fetch(
    "/api/schedule?room=" + room + "&from=" + from_date + "&to=" + to_date,
  )
    .then((response) => {
      return response.json();
    })
    .then((eventsResponse: [] | null) => {
      eventsResponse?.forEach((event: AnonymizedEventDTO) =>
        events.push(event),
      );
    })
    .catch((error) => {
      return Promise.reject(error);
    });
  return events;
}
