import HeroBanner from '@/components/home/HeroBanner';
import CompanyIntro from '@/components/home/CompanyIntro';
import FeaturedProducts from '@/components/home/FeaturedProducts';
import ProductCategories from '@/components/home/ProductCategories';
import LatestNews from '@/components/home/LatestNews';
import { PartnersSection, FeaturedClients, CertificationsSection } from '@/components/home/PartnersClients';
import { VideoSection, CTASection, RecruitmentSection, ContactFormSection } from '@/components/home/OtherSections';
import { organizationSchema } from '@/utils/seo';
import { productService } from '@/services/productService';
import { newsService } from '@/services/newsService';
import { coreService } from '@/services/coreService';
import { partnerService } from '@/services/partnerService';

export default async function Home() {
  const schema = organizationSchema();

  // Parallel fetching for performance; failures should degrade gracefully
  const [
    featuredProductsRes, latestNewsRes, categoriesRes,
    bannersRes, settingsRes, aboutRes,
    partnersRes, clientsRes, certificationsRes
  ] = await Promise.all([
    productService.getProducts({ is_featured: true }).catch(() => null),
    newsService.getNews({ is_featured: true }).catch(() => null),
    productService.getCategories().catch(() => null),
    coreService.getBanners().catch(() => null),
    coreService.getSettings().catch(() => null),
    coreService.getAbout().catch(() => null),
    partnerService.getPartners().catch(() => null),
    partnerService.getClients().catch(() => null),
    partnerService.getCertifications().catch(() => null),
  ]);

  const featuredProducts = featuredProductsRes?.results || [];
  const latestNews = latestNewsRes?.results || [];
  const categories = categoriesRes?.results || [];
  const banners = bannersRes || [];
  const settings = settingsRes || null;
  const about = aboutRes || null;
  const partners = partnersRes?.results || [];
  const clients = clientsRes?.results || [];
  const certifications = certificationsRes?.results || [];

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
      />
      
      <div className="flex flex-col w-full overflow-hidden">
        <HeroBanner initialBanners={banners} />
        <CompanyIntro aboutData={about} />
        <ProductCategories initialCategories={categories} />
        <FeaturedProducts initialProducts={featuredProducts} />
        <VideoSection aboutData={about} />
        <FeaturedClients initialClients={clients} />
        <CTASection contactInfo={settings} />
        <LatestNews initialNews={latestNews} />
        <RecruitmentSection />
        <CertificationsSection initialCertifications={certifications} />
        <PartnersSection initialPartners={partners} />
        <ContactFormSection contactInfo={settings} />
      </div>
    </>
  );
}
