/**
 * Exceptions Module Types
 *
 * Tipos para gerenciamento de exceções na agenda dos médicos
 */

/**
 * Tipo de exceção
 * bloqueio = bloquear horários
 * liberacao = liberar horários fora da disponibilidade normal
 */
export type ExceptionKind = "bloqueio" | "liberacao";

/**
 * Interface para exceção na agenda do médico
 */
export interface DoctorException {
  id?: string;
  doctor_id?: string;
  date?: string; // Formato: YYYY-MM-DD
  start_time?: string | null; // Formato: HH:MM:SS
  end_time?: string | null; // Formato: HH:MM:SS
  kind?: ExceptionKind;
  reason?: string | null;
  created_at?: string;
  created_by?: string;
}

/**
 * Filtros para listagem de exceções
 */
export interface ListExceptionsFilters {
  select?: string;
  doctor_id?: string;
  date?: string; // Formato: YYYY-MM-DD
}

/**
 * Input para criar exceção
 */
export interface CreateExceptionInput {
  doctor_id: string; // required
  date: string; // required - Formato: YYYY-MM-DD (ex: "2025-10-10")
  start_time?: string; // optional - Formato: HH:MM:SS (ex: "09:00:00") - se não informado, bloqueia/libera o dia todo
  end_time?: string; // optional - Formato: HH:MM:SS (ex: "12:00:00") - se não informado, bloqueia/libera o dia todo
  kind: ExceptionKind; // required - 'bloqueio' ou 'liberacao'
  reason?: string; // optional
}
