import { TipoPregunta, TiposValidacion } from "./create-formulario";

export interface GetEvento {
  id_evento: number;
  nombre_evento: string;
  descripcion_evento: string;
  tipo_evento: string;
  fecha_inicio: string; // formato ISO 8601
  fecha_fin: string; // formato ISO 8601
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  asistencias: any | null;
  banner: string | null;
}

export interface Cuestionario {
  id_cuestionario: number;
  nombre_form: string;
  banner: string | null;
  contador_secciones: number;
  descripcion: string;
  editable: boolean;
  fecha_inicio: string; // formato ISO 8601
  fecha_fin: string; // formato ISO 8601
  id_tipo_cuestionario: number;
  id_evento: number;
  cupo_maximo: number | null;
  tipoCuestionario: {
    id_tipo_cuestionario: number;
    tipo_cuestionario: string;
  };
}

export interface CuestionarioWithCupo extends Cuestionario {
  cupos_usados: number;
  cupos_disponibles: number;
}

export interface GetCuestionario {
  tipo_cuestionario: {
    id_tipo_cuestionario: number;
    tipo_cuestionario: string;
  };
  evento: GetEvento;
  cuestionario: CuestionarioWithSecciones;
}

export interface CuestionarioWithSecciones extends Cuestionario {
  secciones: {
    id_cuestionario_seccion: number;
    posicion: number;
    seccion: {
      id_seccion: number;
      titulo: string;
      contador_pregunta: number;
      descripcion: string;
    };
    preguntas: {
      id_seccion_pregunta: number;
      posicion: number;
      pregunta: {
        id_pregunta: number;
        pregunta: string;
        contador_opcion: number;
        obligatoria: boolean;
        id_tipo_pregunta: number;
        validacion: TiposValidacion;
        tipo_pregunta: {
          id_tipo: number;
          tipo_pregunta: TipoPregunta;
        };
        opciones: {
          id_pregunta_opcion: number;
          posicion: number;
          id_opcion: number;
          opcion: {
            id_opcion: number;
            opcion: string;
          };
        }[];
      };
    }[];
  }[];
}

export interface GetEventoWithCuestionarios extends GetEvento {
  cuestionarios: CuestionarioWithCupo[];
}

export interface GetEventoWithCuestionario extends GetEvento {
  cuestionario: Cuestionario;
}
