import { MedusaContainer } from "@medusajs/framework"
import { ContainerRegistrationKeys } from "@medusajs/framework/utils"

export default async function seed_homepage_cms({
  container,
}: {
  container: MedusaContainer
}) {
  const logger = container.resolve(ContainerRegistrationKeys.LOGGER)
  const homepageCmsService = (await import("../modules/homepage-cms")).default

  const service = container.resolve("homepageCms") as any

  const logger_ = logger

  // Check if homepage already exists
  const existing = await service.listHomepages()
  if (existing.length > 0) {
    logger_.info("Homepage CMS already seeded, skipping.")
    return
  }

  logger_.info("Seeding homepage CMS data...")

  // 1. Create homepage row
  const [homepage] = await service.createHomepages({
    headline: "Play.\nLearn.\nGrow.",
    subtitle: "Curated toys that spark imagination and build skills — from construction to sensory play.",
    badge_1_text: "Educational Toys",
    badge_2_text: "🚚 Gratis ongkir 500k+",
    cta_1_label: "Shop All",
    cta_1_link: "/store",
    cta_2_label: "Rent a Toy",
    cta_2_link: "/categories/toys-for-rent",
    rent_banner_title: "🔄 Toys for Rent",
    rent_banner_text: "Try before you buy. Swap anytime.",
    rent_banner_cta: "Rent now",
    section_best_deals_heading: "Best Deals",
    section_new_arrivals_heading: "New Arrivals",
    section_partners_heading: "Partners & Friends",
  })

  logger_.info(`Homepage row created: ${homepage.id}`)

  // 2. Create hero photos
  const heroPhotos = [
    { image_url: "/images/product-jungle-gym.webp", label: "Movement", rotate: "-rotate-2", sort_order: 0 },
    { image_url: "/images/categories/construction.webp", label: "Construction", rotate: "rotate-1", sort_order: 1 },
    { image_url: "/images/product-little-chef.webp", label: "Fine Motor", rotate: "rotate-2", sort_order: 2 },
    { image_url: "/images/categories/sensory.webp", label: "Sensory", rotate: "-rotate-1", sort_order: 3 },
  ]

  await service.createHeroPhotos(
    heroPhotos.map((p) => ({
      homepage_id: homepage.id,
      ...p,
    }))
  )
  logger_.info(`Created ${heroPhotos.length} hero photos.`)

  // 3. Create category cards
  const categoryCards = [
    {
      label: "Construction & Open-Ended",
      sub: "Build & create",
      image_url: "/images/categories/construction.webp",
      handle: "/categories/construction-and-open-ended",
      badge: "🧱",
      bg_color: "bg-orange-400",
      sort_order: 0,
    },
    {
      label: "Fine Motor Toys",
      sub: "Strengthen skills",
      image_url: "/images/categories/fine-motor.webp",
      handle: "/categories/fine-motor-toys",
      badge: "✂️",
      bg_color: "bg-pink-400",
      sort_order: 1,
    },
    {
      label: "Movement Toys",
      sub: "Jump & explore",
      image_url: "/images/categories/movement.webp",
      handle: "/categories/movement-toys",
      badge: "🏃",
      bg_color: "bg-sky-400",
      sort_order: 2,
    },
    {
      label: "Sensory Toys",
      sub: "Touch & discover",
      image_url: "/images/categories/sensory.webp",
      handle: "/categories/sensory-toys",
      badge: "🌈",
      bg_color: "bg-green-400",
      sort_order: 3,
    },
  ]

  await service.createCategoryCards(
    categoryCards.map((c) => ({
      homepage_id: homepage.id,
      ...c,
    }))
  )
  logger_.info(`Created ${categoryCards.length} category cards.`)

  // 4. Create partners
  const partners = [
    { name: "Kidzooona", image_url: "/images/partners/kidzooona.webp", link: "", sort_order: 0 },
    { name: "Jumma", image_url: "/images/partners/jumma.webp", link: "", sort_order: 1 },
    { name: "Kejora", image_url: "/images/partners/kejora.webp", link: "", sort_order: 2 },
    { name: "Edokko", image_url: "/images/partners/edokko.webp", link: "", sort_order: 3 },
    { name: "Group 152", image_url: "/images/partners/group-152.webp", link: "", sort_order: 4 },
    { name: "Tentang Anak", image_url: "/images/partners/tentang-anak.webp", link: "", sort_order: 5 },
    { name: "BCA", image_url: "/images/partners/bca.webp", link: "", sort_order: 6 },
    { name: "Blibli", image_url: "/images/partners/blibli.webp", link: "", sort_order: 7 },
    { name: "Tokopedia", image_url: "/images/partners/tokopedia.webp", link: "", sort_order: 8 },
    { name: "Buumi", image_url: "/images/partners/buumi.webp", link: "", sort_order: 9 },
    { name: "Dekoruma", image_url: "/images/partners/dekoruma.webp", link: "", sort_order: 10 },
    { name: "Fanpekka", image_url: "/images/partners/fanpekka.webp", link: "", sort_order: 11 },
    { name: "Juniordept", image_url: "/images/partners/jundept.webp", link: "", sort_order: 12 },
  ]

  await service.createPartners(
    partners.map((p) => ({
      homepage_id: homepage.id,
      ...p,
    }))
  )
  logger_.info(`Created ${partners.length} partners.`)

  logger_.info("Homepage CMS seed completed.")
}
