import { z } from 'zod'

export const paginationSchema = z.object({
  page:     z.coerce.number().int().min(1).max(10000).default(1),
  pageSize: z.coerce.number().int().min(1).max(100).default(20),
})

export const customerSchema = z.object({
  firstName:       z.string().min(1).max(100).trim(),
  lastName:        z.string().min(1).max(100).trim(),
  email:           z.string().email().max(255).trim().toLowerCase(),
  phone:           z.string().max(30).trim().optional(),
  driverLicense:   z.string().max(50).trim().optional(),
  dateOfBirth:     z.string().datetime().optional(),
  nationality:     z.string().max(100).trim().optional(),
  address:         z.record(z.unknown()).optional(),
  notes:           z.string().max(2000).trim().optional(),
  licenseExpiry:   z.string().datetime().optional(),
  licenseIssuedAt: z.string().datetime().optional(),
  licenseCountry:  z.string().max(100).trim().optional(),
  licenseNumber:   z.string().max(50).trim().optional(),
  licenseCategory: z.string().max(20).trim().optional(),
})

export const listQuerySchema = paginationSchema.extend({
  q:       z.string().max(100).optional(),
  flagged: z.enum(['true', 'false']).optional(),
})

export const approveLicenseSchema = z.object({
  decision: z.enum(['APPROVE', 'DENY']),
  note:     z.string().optional(),
})

export const flagSchema = z.object({
  reason: z.string().optional(),
})

export const idParamSchema = z.object({ id: z.string() })
