"use client";
import React from "react";
import { Container } from "react-bootstrap";
import YourVehicleData from "../YourVehicleData";
import TaxedMot from "../TaxedMot";
import MotMileageSummary from "../MotMileageSummary";
import MotTestList from "../MotTestList";
import MileageHistory from "../MileageHistory";
import MileageChart from "../MileageChart";
import VehicleInformation from "../VehicleInformation";
import GeneralInformation from "../GeneralInformation";
import CertificateIssueDetails from "../CertificateIssueDetails";
import EmissionsGraph from "../EmissionsGraph";
import { useApp } from "@/components/App";
import Can from "@/components/default/render/Can";
import { ROAD_TAX_MOT_types, VehicleDetails } from "@/types/api";
import HalfValuationCard from "../HalfValuationCard/details";

function FullValuationCard() {
  const { state } = useApp();
  const VEHICLE_AND_MOT_DATA = state?.VEHICLE_AND_MOT_DATA as VehicleDetails;
  const ROAD_TAX_MOT_DATA = state?.ROAD_TAX_MOT_DATA as ROAD_TAX_MOT_types;

  if (!VEHICLE_AND_MOT_DATA || Object.keys(VEHICLE_AND_MOT_DATA).length === 0) {
    return <div></div>;
  }

  return (
    <>
      <Can condition={!!VEHICLE_AND_MOT_DATA}>
        <HalfValuationCard />
        <Container className="bigContainer">
          <Can condition={!!VEHICLE_AND_MOT_DATA?.vehicleData}>
            <YourVehicleData
              vehicleData={VEHICLE_AND_MOT_DATA?.vehicleData ?? {}}
            />
          </Can>

          <Can condition={!!ROAD_TAX_MOT_DATA}>
            <TaxedMot motdata={ROAD_TAX_MOT_DATA} />
          </Can>

          <Can condition={!!VEHICLE_AND_MOT_DATA?.motMileageSummary}>
            <MotMileageSummary
              motMileageSummary={VEHICLE_AND_MOT_DATA?.motMileageSummary ?? {}}
            />
          </Can>

          <Can condition={!!VEHICLE_AND_MOT_DATA?.motTestList}>
            <MotTestList
              motTestList={VEHICLE_AND_MOT_DATA?.motTestList ?? {}}
            />
          </Can>

          <Can condition={!!VEHICLE_AND_MOT_DATA?.mileageHistory}>
            <MileageHistory
              mileageHistory={VEHICLE_AND_MOT_DATA?.mileageHistory}
            />
          </Can>

          <Can condition={!!VEHICLE_AND_MOT_DATA?.chartGraph}>
            <MileageChart chartGraph={VEHICLE_AND_MOT_DATA?.chartGraph} />
          </Can>

          <Can condition={!!VEHICLE_AND_MOT_DATA?.vehicleInformation}>
            <VehicleInformation
              vehicleInformation={VEHICLE_AND_MOT_DATA?.vehicleInformation}
            />
          </Can>
          
          <Can condition={!!VEHICLE_AND_MOT_DATA?.general}>
            <GeneralInformation general={VEHICLE_AND_MOT_DATA?.general} />
          </Can>
          

          <Can
            condition={
              !!VEHICLE_AND_MOT_DATA?.consumption ||
              !!VEHICLE_AND_MOT_DATA?.importExport ||
              !!VEHICLE_AND_MOT_DATA?.vehicleInformation ||
              !!VEHICLE_AND_MOT_DATA?.colourChange ||
              !!VEHICLE_AND_MOT_DATA?.vehicleTaxCo2Emissions ||
              !!VEHICLE_AND_MOT_DATA?.performance ||
              !!VEHICLE_AND_MOT_DATA?.dimensions 
            }
          >
            <CertificateIssueDetails
              consumption={VEHICLE_AND_MOT_DATA?.consumption}
              previousKeepers={
                VEHICLE_AND_MOT_DATA?.motTestList?.keepersChange ?? {}
              }
              safety={VEHICLE_AND_MOT_DATA?.safety}
              classificationDetails={
                VEHICLE_AND_MOT_DATA?.classificationDetails
              }
              smmtDetails={VEHICLE_AND_MOT_DATA?.smmtDetails}
              importExport={VEHICLE_AND_MOT_DATA?.importExport}
              scrapDestruction={VEHICLE_AND_MOT_DATA?.scrapDestruction}
              colourChange={VEHICLE_AND_MOT_DATA?.colourChange}
              vehicleTaxCo2Emissions={
                VEHICLE_AND_MOT_DATA?.vehicleTaxCo2Emissions
              }
              motTestList={VEHICLE_AND_MOT_DATA?.motTestList ?? {}}
              V5CCertificates={VEHICLE_AND_MOT_DATA?.V5CCertificates ?? {}}
              performanceInformation={VEHICLE_AND_MOT_DATA?.performance ?? {}}
              dimensions={VEHICLE_AND_MOT_DATA?.dimensions ?? {}}        
              vehicleData={VEHICLE_AND_MOT_DATA?.vehicleData ?? {}}  

            />
          </Can>         

          <Can condition={!!VEHICLE_AND_MOT_DATA?.motTestList}>
            <EmissionsGraph
              vehicleInformation={
                VEHICLE_AND_MOT_DATA?.vehicleInformation ?? {}
              }
              co2emission={VEHICLE_AND_MOT_DATA?.co2emission ?? 0}
              motTestList={VEHICLE_AND_MOT_DATA?.motTestList ?? {}}
            />
          </Can>
        </Container>
      </Can>
    </>
  );
}

export default FullValuationCard;
