import { z } from 'zod';

export const createBundleSchema = z.object({
  title: z.string().min(2, 'Bundle title is required'),
  description: z.string().optional(),
  coverImage: z.string().url().optional(),
  originalPrice: z.number().positive(),
  bundlePrice: z.number().positive(),
  discountPercentage: z.number().min(0).max(100).optional(),
  badgeText: z.string().optional(),
  isCombo: z.boolean().optional(),
  items: z.array(
    z.object({
      bookId: z.string().min(1),
      quantity: z.number().int().positive().default(1),
      sortOrder: z.number().int().optional(),
    })
  ).min(2, 'A bundle or combo must contain at least 2 books'),
});

export const createFlashDealSchema = z.object({
  bookId: z.string().min(1, 'Book ID is required'),
  dealPrice: z.number().positive(),
  originalPrice: z.number().positive(),
  discountPercentage: z.number().min(1).max(99),
  stockLimit: z.number().int().positive().default(50),
  badgeText: z.string().optional(),
  startsAt: z.string().datetime().optional(),
  endsAt: z.string().datetime(),
});

export const createCampaignSchema = z.object({
  title: z.string().min(2, 'Campaign title is required'),
  description: z.string().optional(),
  bannerUrl: z.string().url().optional(),
  themeColor: z.string().optional(),
  couponCode: z.string().optional(),
  discountPercent: z.number().min(1).max(100).optional(),
  targetCategory: z.string().optional(),
  startsAt: z.string().datetime().optional(),
  endsAt: z.string().datetime(),
});

export const tierDiscountQuerySchema = z.object({
  quantity: z.coerce.number().int().positive().default(1),
  subtotal: z.coerce.number().positive().default(0),
});
