import type { FC } from 'react';
import { useEffect, useState } from 'react';
import { Save, Smile } from 'lucide-react';
import { Button, Input, TextArea, toast } from './ui';
import {
odooApi, ENCUESTAS_DEFAULT, type ClinicSettings, type EncuestasSettings,
} from '../services/odoo';
interface Props {
settings: ClinicSettings;
onSaved: (settings: ClinicSettings) => void;
}
const Toggle: FC<{ label: string; checked: boolean; onChange: (v: boolean) => void; ayuda?: string }> = ({ label, checked, onChange, ayuda }) => (
);
// Configuración → Encuestas: bloque `encuestas`. Apagado (default) no se envía
// ninguna encuesta tras completar una cita.
const EncuestasPanel: FC = ({ settings, onSaved }) => {
const [form, setForm] = useState(settings.encuestas || ENCUESTAS_DEFAULT);
const [plantillas, setPlantillas] = useState<{ id: number; name: string; activo: boolean; tiene_nps: boolean }[]>([]);
const [saving, setSaving] = useState(false);
useEffect(() => setForm(settings.encuestas || ENCUESTAS_DEFAULT), [settings.encuestas]);
useEffect(() => {
odooApi.getEncuestasConfig()
.then((res) => { if (res.status === 'success') setPlantillas(res.plantillas || []); })
.catch(() => {});
}, []);
const set = (k: K, v: EncuestasSettings[K]) =>
setForm((prev) => ({ ...prev, [k]: v }));
const guardar = async () => {
setSaving(true);
try {
const res = await odooApi.putClinicSettings({
encuestas: { ...form }, motivo: 'Configuración de encuestas',
});
if (res.status === 'success') {
onSaved(res.settings);
toast.success('Configuración de encuestas guardada');
}
} catch (err) {
const msg = (err as { response?: { data?: { message?: string } } })?.response?.data?.message;
toast.error(msg || 'No se pudo guardar la configuración de encuestas');
} finally {
setSaving(false);
}
};
return (
Encuestas de salida (NPS)
Apagado (default) no se envía ninguna encuesta al completar una cita. Crea la plantilla
(tipo Encuesta) con una pregunta de recomendación (0-10) en Formularios.
set('activo', v)}
ayuda="Envía la encuesta tras completarse una cita y habilita el reporte de Satisfacción." />
set('solo_primera_visita', v)}
ayuda="Solo se envía a quien tiene una única visita completada." />