import { Guest } from '@/app/lib/definitions';
import { getCsrfToken } from '@/app/lib/utils';

export function loadGuests(onLoad?: (guests: Guest[]) => void) {
  fetch("/api/guests.json")
    .then((response) => response.json())
    .then((data) => {
      onLoad && onLoad(data.map((record: any) => {
        return ({
          id: record.id,
          name: record.name,
          status: record.status,
          group_name: record.group.name,
        });
      }));
    }, (error) => {
      return [];
    });
};

export function updateGuestStatus(id: string, status: string) {
  fetch("/api/guests/bulk_update.json",
    {
      method: 'POST',
      body: JSON.stringify({ properties: { status: status }, guest_ids: [id] }),
      headers: {
        'Content-Type': 'application/json',
        'X-CSRF-TOKEN': getCsrfToken(),
      }
    })
    .then(() => loadGuests((guests) => null))
    .catch((error) => console.error(error));
}

export function createGuest(name: string, group_id: string, onCreate?: () => void) {
  fetch("/api/guests", {
    method: 'POST',
    body: JSON.stringify({ name: name, group_id: group_id }),
    headers: {
      'Content-Type': 'application/json',
      'X-CSRF-TOKEN': getCsrfToken(),
    }
  })
    .then((response) => response.json())
    .then((data) => {
      onCreate && onCreate();
    })
    .catch((error) => console.error(error));
}