import { z } from 'zod';

export const createDonationPageSchema = z.object({
  title: z.string().min(1).max(200),
  description: z.string().max(5000).nullable().optional(),
  status: z.enum(['DRAFT', 'ACTIVE', 'PAUSED', 'ARCHIVED']).default('DRAFT'),
  suggestedAmounts: z.array(z.number().int().min(100)).optional(),
  minimumAmount: z.number().int().min(100).default(500),
  thankYouMessage: z.string().max(2000).optional(),
  coverPhoto: z.string().max(500).nullable().optional(),
  coverVideoId: z.number().int().positive().nullable().optional(),
  highlightPage: z.boolean().optional(),
  showDonorCount: z.boolean().optional(),
  showTotalRaised: z.boolean().optional(),
  goalAmount: z.number().int().min(100).nullable().optional(),
});

export type CreateDonationPageInput = z.infer<typeof createDonationPageSchema>;

export const updateDonationPageSchema = createDonationPageSchema.partial();

export type UpdateDonationPageInput = z.infer<typeof updateDonationPageSchema>;

export const listDonationPagesSchema = z.object({
  page: z.coerce.number().int().min(1).default(1),
  limit: z.coerce.number().int().min(1).max(100).default(20),
  search: z.string().optional(),
  status: z.enum(['DRAFT', 'ACTIVE', 'PAUSED', 'ARCHIVED']).optional(),
});

export type ListDonationPagesInput = z.infer<typeof listDonationPagesSchema>;

export const donationPageCheckoutSchema = z.object({
  amountCents: z.number().int().min(100).max(10000000), // max $100,000
  email: z.string().email(),
  name: z.string().max(200).optional(),
  message: z.string().max(2000).optional(),
  isAnonymous: z.boolean().optional(),
});
