import { z } from 'zod'

import { CATEGORY_OPTIONS, type ExtendedSupportCategories } from './Support.constants'
import { PLAN_REQUEST_EMPTY_PLACEHOLDER } from '@/components/ui/UpgradePlanButton'

export const SupportFormSchema = z
  .object({
    organizationSlug: z.string().min(1, 'Please select an organization'),
    projectRef: z.string().min(1, 'Please select a project'),
    category: z.enum(
      CATEGORY_OPTIONS.map((opt) => opt.value) as [
        ExtendedSupportCategories,
        ...ExtendedSupportCategories[],
      ]
    ),
    severity: z.string(),
    library: z.string().optional(),
    subject: z.string().min(1, 'Please add a subject heading'),
    message: z.string().min(1, "Please add a message about the issue that you're facing"),
    affectedServices: z.string(),
    allowSupportAccess: z.boolean(),
    attachDashboardLogs: z.boolean(),
    dashboardSentryIssueId: z.string().optional(),
  })
  .refine(
    (data) => {
      return !data.message.includes(PLAN_REQUEST_EMPTY_PLACEHOLDER)
    },
    {
      message: `Please let us know which plan you'd like to upgrade to for your organization`,
      path: ['message'],
    }
  )

export type SupportFormValues = z.infer<typeof SupportFormSchema>
