import React from "react";
import ResourceOvercomsumptionReportLoading from "./ResourceOverconsumptionReportLoading";
import ResourceOverconsumptionReport from "./ResourceOverconsumptionReport";
import { fetchTeam } from "@/app/api/team";
import { fetchAllCustomers } from "@/app/api/customer";
import { fetchAllSubsidiaries } from "@/app/api/subsidiary";
import { getServerSession } from "next-auth";
import { authOptions } from "@/config/authConfig";
import { TEAM_LEAD } from "@/middleware";

interface SubComponents {
  Loading: typeof ResourceOvercomsumptionReportLoading;
}

const ResourceOvercomsumptionReportWrapper: React.FC &
  SubComponents = async () => {
  const session: any = await getServerSession(authOptions);
  const teamId = session.staff?.team.id;
  const role = session.role;
  let needAll = true;
  let teams = await fetchTeam();
  const [customers, subsidiaries] = await Promise.all([
    fetchAllCustomers(),
    fetchAllSubsidiaries(),
  ]);

  if (role === TEAM_LEAD) {
    needAll = false;
    teams = teams.filter((team) => team.id === teamId);
  }

  return (
    <ResourceOverconsumptionReport
      team={teams}
      customer={customers}
      subsidiaries={subsidiaries}
      needAll={needAll}
    />
  );
};

ResourceOvercomsumptionReportWrapper.Loading =
  ResourceOvercomsumptionReportLoading;

export default ResourceOvercomsumptionReportWrapper;
