import Layout from "@/components/layouts/Layout";
import CreateQuote from "@/components/dashboard/CreateQuote";
import RecentSpotQuotes from "@/components/dashboard/RecentSpotQuotes";
import DaysOutAvgCapacity from "@/components/dashboard/DaysOutAvgCapacity";
import SpotRateAvg from "@/components/dashboard/SpotRateAvg";
import DashboardGraph from "../components/dashboard/DashboardGraph/DashboardGraph";
import Head from "next/head";
import { getServerSession } from "next-auth/next";
import { authOptions } from "@/pages/api/auth/[...nextauth]";
import { getAveragePortRamp } from "@/services/dashboard";
import ProtectedRoute from "@/ProtectedRoute";
import { useState, useEffect } from "react";
import { useCollapsed } from "@/components/Context/CollapsedContext"; // Import the hook

interface Props {
  breadcrumbs: {
    title: string;
    path: string;
  }[];
  daysOutAvgCapacity: {
    name: string;
    value: number;
  }[];
  cordinates: any;
  getRateQuotesdata: any;
  session: any;
}

function Dashboard(props: Props) {
  const [daysOutAvgCapacity, setdaysOutAvgCapacity] = useState<any>([]);
  const [newCreated, setNewCreated] = useState<string>("");
  const [getUpdate, setGetUpdate] = useState<boolean>(false);
  const { isCollapsed } = useCollapsed(); // Use the hook to access `isCollapsed`


  useEffect(() => {
    const fetchData = async () => {
      let res = await getAveragePortRamp(props?.session?.user?.image);
      setdaysOutAvgCapacity(res?.data);
    };
    fetchData();
  }, [newCreated]);

  function funcNewlyCreated(arg1: string): void {
    setNewCreated(arg1);
  }

  return (
    <div>
      <Layout>
        <Head>
          <title>Dashboard - Draydex</title>
        </Head>
        <div className={` ${isCollapsed ? 'collapsed-body-dashboard' : 'content-body'}`}> 
          <div className="row my-2">
            <div className="col-xl-4">
              <CreateQuote
                funcNewlyCreated={funcNewlyCreated}
                update={setGetUpdate}
              />
            </div>
            <div className="col-xl-8">
              <RecentSpotQuotes getUpdates={getUpdate} />
            </div>
          </div>
          <div className="row">
            <div className="col-lg-4">
              <DashboardGraph />
            </div>
            <div className="col-lg-4">
              <SpotRateAvg />
            </div>
            <div className="col-lg-4">
              <DaysOutAvgCapacity avgData={daysOutAvgCapacity as any} />
            </div>
          </div>
        </div>
      </Layout>
    </div>
  );
}

export async function getServerSideProps(context: any) {
  const session = await getServerSession(context.req, context.res, authOptions);

  return {
    props: {
      session: session,
    },
  };
}

export default ProtectedRoute(Dashboard);
