import { z } from 'zod';

export const uploadDocSchema = z
  .object({

    doc_type: z.string().min(1, 'Document type is required'),

    upload_as: z.string(),

    description: z.string().optional(),

    type: z.string(),
    id: z.number().optional()
  })
  .superRefine((data, ctx) => {
    const { doc_type, upload_as, type, description } = data;

    // CASE 1: ID Document
    if (doc_type === 'id_document') {
      if (!upload_as) {
        ctx.addIssue({
          path: ['upload_as'],
          message: 'Please select a sub type',
          code: 'custom',
        });
      }

      if (!type) {
        ctx.addIssue({
          path: ['type'],
          message: 'Document type is required',
          code: 'custom',
        });
      }
    }

    // CASE 2: Other documents
    if (doc_type !== 'id_document') {
      if (!type) {
        ctx.addIssue({
          path: ['type'],
          message: 'Document type is required',
          code: 'custom',
        });
      }

      if (type === 'other' && (!description || description.trim() === '')) {
        ctx.addIssue({
          path: ['description'],
          message: 'Description is required when type is Other',
          code: 'custom',
        });
      }
    }
  });

export type UploadDocSchema = z.infer<typeof uploadDocSchema>;
