import { z } from 'zod';

export const createModifierGroupSchema = z.object({
  menu_item_id: z.string().uuid('menu_item_id must be a valid UUID'),
  branch_id: z.string().uuid().optional().nullable(),
  name: z.string().min(1, 'Group name is required'),
  type: z.enum(['radio', 'checkbox']).optional().default('checkbox'),
  is_required: z.boolean().optional(),
  min_selections: z.number().int().nonnegative().optional(),
  max_selections: z.number().int().positive().optional().nullable(),
  display_order: z.number().int().nonnegative().optional(),
});

export const updateModifierGroupSchema = z.object({
  name: z.string().min(1).optional(),
  type: z.enum(['radio', 'checkbox']).optional(),
  is_required: z.boolean().optional(),
  min_selections: z.number().int().nonnegative().optional(),
  max_selections: z.number().int().positive().optional().nullable(),
  display_order: z.number().int().nonnegative().optional(),
});

export const createModifierOptionSchema = z.object({
  name: z.string().min(1, 'Option name is required'),
  price_delta: z.number().optional().default(0),
  is_default: z.boolean().optional(),
  is_available: z.boolean().optional(),
  display_order: z.number().int().nonnegative().optional(),
});

export const updateModifierOptionSchema = z.object({
  name: z.string().min(1).optional(),
  price_delta: z.number().optional(),
  is_default: z.boolean().optional(),
  is_available: z.boolean().optional(),
  display_order: z.number().int().nonnegative().optional(),
});

export type CreateModifierGroupInput = z.infer<typeof createModifierGroupSchema>;
export type UpdateModifierGroupInput = z.infer<typeof updateModifierGroupSchema>;
export type CreateModifierOptionInput = z.infer<typeof createModifierOptionSchema>;
export type UpdateModifierOptionInput = z.infer<typeof updateModifierOptionSchema>;
