import Link from "next/link";
import type { Metadata } from "next";
import { notFound } from "next/navigation";
import { db } from "@/lib/db";
import { getPublicTenant, tenantUrl } from "@/lib/public-tenant";
import { BannerCarousel } from "@/components/banner-carousel";

export async function generateMetadata({params}:{params:Promise<{host:string}>}):Promise<Metadata>{const {host}=await params;const tenant=await getPublicTenant(host);if(!tenant)return{};const url=tenantUrl(tenant);return{title:tenant.name,description:`Conheça os produtos e serviços de ${tenant.name}.`,alternates:{canonical:url},openGraph:{title:tenant.name,description:`Conheça ${tenant.name}.`,url,type:"website",images:tenant.theme?.bannerUrl?[{url:tenant.theme.bannerUrl,alt:`Banner de ${tenant.name}`}]:[]}}}

export default async function StoreHome({params}:{params:Promise<{host:string}>}){
  const {host}=await params;const tenant=await getPublicTenant(host);const base=`/site/${encodeURIComponent(host)}`;if(!tenant)notFound();
  const [products,services,savedBanners]=await Promise.all([db.product.findMany({where:{tenantId:tenant.id,active:true,featured:true,deletedAt:null},include:{images:{where:{deletedAt:null},take:1,orderBy:{sortOrder:"asc"}}},take:4,orderBy:{createdAt:"desc"}}),db.service.findMany({where:{tenantId:tenant.id,active:true,featured:true,deletedAt:null},include:{images:{where:{deletedAt:null},take:1,orderBy:{sortOrder:"asc"}}},take:4,orderBy:{createdAt:"desc"}}),db.siteBanner.findMany({where:{tenantId:tenant.id,active:true},orderBy:[{sortOrder:"asc"},{createdAt:"asc"}]})]);
  const banners=savedBanners.length?savedBanners:tenant.theme?.bannerUrl?[{id:"legacy",imageUrl:tenant.theme.bannerUrl,linkUrl:null,altText:`Banner de ${tenant.name}`}]:[];
  const boxes=[{title:tenant.feature1Title,description:tenant.feature1Description},{title:tenant.feature2Title,description:tenant.feature2Description},{title:tenant.feature3Title,description:tenant.feature3Description}].filter(box=>box.title||box.description);
  return <main>
    {banners.length?<BannerCarousel banners={banners} base={base}/>:<section className="store-hero"><div className="store-hero-copy"><p className="eyebrow">BEM-VINDO</p><h1>{tenant.name}</h1><p>{tenant.description||"Produtos e serviços selecionados para você, com atendimento próximo e confiança."}</p><div>{tenant.businessModel!=="SERVICES"&&<Link className="store-button" href={`${base}/produtos`}>Ver produtos</Link>}{tenant.businessModel!=="PRODUCTS"&&<Link className="store-button outline" href={`${base}/servicos`}>Conhecer serviços</Link>}</div></div><div className="store-hero-art"><span>{tenant.name.slice(0,1).toUpperCase()}</span></div></section>}
    {boxes.length>0&&<section className={`store-feature-boxes count-${boxes.length}`}>{boxes.map((box,index)=><article key={index}><span>{String(index+1).padStart(2,"0")}</span>{box.title&&<h2>{box.title}</h2>}{box.description&&<p>{box.description}</p>}</article>)}</section>}
    {products.length>0&&<section className="store-section"><div className="store-section-head"><div><p className="eyebrow">DESTAQUES</p><h2>Produtos</h2></div><Link href={`${base}/produtos`}>Ver todos →</Link></div><div className="store-grid">{products.map(p=><Link className="store-item" href={`${base}/produto/${p.slug}`} key={p.id}><div className="featured-media" style={p.images[0]?{backgroundImage:`url(${p.images[0].url})`}:undefined}>{p.images[0]?null:p.name.slice(0,1)}</div><span>{p.categoryId?"Produto":"Novidade"}</span><h3>{p.name}</h3><strong>{new Intl.NumberFormat("pt-BR",{style:"currency",currency:"BRL"}).format((p.promoPriceCents??p.priceCents)/100)}</strong></Link>)}</div></section>}
    {services.length>0&&<section className="store-section muted"><div className="store-section-head"><div><p className="eyebrow">O QUE FAZEMOS</p><h2>Serviços</h2></div><Link href={`${base}/servicos`}>Ver todos →</Link></div><div className="store-grid">{services.map(s=><Link className="store-item service" href={`${base}/servico/${s.slug}`} key={s.id}><div className="featured-media" style={s.images[0]?{backgroundImage:`url(${s.images[0].url})`}:undefined}>{s.images[0]?null:s.name.slice(0,1)}</div><span>Serviço</span><h3>{s.name}</h3><p>{s.shortDescription||"Saiba mais sobre este serviço."}</p><b>Conhecer →</b></Link>)}</div></section>}
  </main>;
}
