/* Copyright (C) 2024-2025 LibreWeddingPlanner contributors*/

'use client';

import { AbstractApi } from '@/app/api/abstract-api';
import { TableSimulation, TableSimulationSerializer } from '@/app/lib/tableSimulation';
import Arrangement from '@/app/ui/arrangements/arrangement';
import ArrangementsTable from '@/app/ui/arrangements/arrangements-table';
import { classNames } from '@/app/ui/components/button';
import { Toast } from 'primereact/toast';
import React, { useRef, useState } from 'react';

export default function Page() {
  const toast = useRef<Toast>(null);

  const show = () => {
    toast.current?.show({
      severity: 'success',
      summary: 'Simulation created',
      detail: 'Table distributions will be calculated shortly, please come back in some minutes'
    });
  };

  const [currentArrangement, setCurrentArrangement] = useState<string | null>(null);

  function createSimulation() {
    const api = new AbstractApi<TableSimulation>();
    const serializer = new TableSimulationSerializer();
    api.create(serializer, new TableSimulation(), show);
  }

  return (
    <>

      <div className="flex flex-col w-full items-center justify-between">
        <Toast ref={toast} />
        <button onClick={createSimulation} className={classNames('primary')}>Add new</button>
      </div>

      <ArrangementsTable onArrangementSelected={setCurrentArrangement} />
      {currentArrangement && <Arrangement key={currentArrangement} id={currentArrangement} />}
    </>
  )
}