diff --git a/susconecta/app/(main-routes)/consultas/page.tsx b/susconecta/app/(main-routes)/consultas/page.tsx
index ac76758..6d0ccaa 100644
--- a/susconecta/app/(main-routes)/consultas/page.tsx
+++ b/susconecta/app/(main-routes)/consultas/page.tsx
@@ -111,8 +111,11 @@ export default function ConsultasPage() {
const baseDate = scheduledBase ? new Date(scheduledBase) : new Date();
const duration = appointment.duration_minutes ?? appointment.duration ?? 30;
- // compute start and end times (HH:MM)
- const appointmentDateStr = baseDate.toISOString().split("T")[0];
+ // compute start and end times (HH:MM) and date using local time to avoid timezone issues
+ const year = baseDate.getFullYear();
+ const month = String(baseDate.getMonth() + 1).padStart(2, '0');
+ const day = String(baseDate.getDate()).padStart(2, '0');
+ const appointmentDateStr = `${year}-${month}-${day}`;
const startTime = `${String(baseDate.getHours()).padStart(2, '0')}:${String(baseDate.getMinutes()).padStart(2, '0')}`;
const endDate = new Date(baseDate.getTime() + duration * 60000);
const endTime = `${String(endDate.getHours()).padStart(2, '0')}:${String(endDate.getMinutes()).padStart(2, '0')}`;
@@ -811,7 +814,7 @@ export default function ConsultasPage() {
- {capitalize(viewingAppointment?.type || "")}
+ {capitalize(viewingAppointment?.appointment_type || viewingAppointment?.type || "")}
diff --git a/susconecta/app/(main-routes)/doutores/page.tsx b/susconecta/app/(main-routes)/doutores/page.tsx
index 1b6098d..72373f0 100644
--- a/susconecta/app/(main-routes)/doutores/page.tsx
+++ b/susconecta/app/(main-routes)/doutores/page.tsx
@@ -131,6 +131,7 @@ export default function DoutoresPage() {
const [availabilityOpenFor, setAvailabilityOpenFor] = useState
(null);
const [availabilityViewingFor, setAvailabilityViewingFor] = useState(null);
const [availabilities, setAvailabilities] = useState([]);
+ const [availabilitiesForCreate, setAvailabilitiesForCreate] = useState([]);
const [availLoading, setAvailLoading] = useState(false);
const [editingAvailability, setEditingAvailability] = useState(null);
const [exceptions, setExceptions] = useState([]);
@@ -633,7 +634,17 @@ export default function DoutoresPage() {
Ver pacientes atribuídos
- setAvailabilityOpenFor(doctor)}>
+ {
+ try {
+ const list = await listarDisponibilidades({ doctorId: doctor.id, active: true });
+ setAvailabilitiesForCreate(list || []);
+ setAvailabilityOpenFor(doctor);
+ } catch (e) {
+ console.warn('Erro ao carregar disponibilidades:', e);
+ setAvailabilitiesForCreate([]);
+ setAvailabilityOpenFor(doctor);
+ }
+ }}>
Criar disponibilidade
@@ -869,6 +880,7 @@ export default function DoutoresPage() {
open={!!availabilityOpenFor}
onOpenChange={(open) => { if (!open) setAvailabilityOpenFor(null); }}
doctorId={availabilityOpenFor?.id}
+ existingAvailabilities={availabilitiesForCreate}
onSaved={(saved) => { console.log('Disponibilidade salva', saved); setAvailabilityOpenFor(null); /* optionally reload list */ reloadAvailabilities(availabilityOpenFor?.id); }}
/>
)}
@@ -890,6 +902,7 @@ export default function DoutoresPage() {
doctorId={editingAvailability?.doctor_id ?? availabilityViewingFor?.id}
availability={editingAvailability}
mode="edit"
+ existingAvailabilities={availabilities}
onSaved={(saved) => { console.log('Disponibilidade atualizada', saved); setEditingAvailability(null); reloadAvailabilities(editingAvailability?.doctor_id ?? availabilityViewingFor?.id); }}
/>
)}
@@ -910,14 +923,35 @@ export default function DoutoresPage() {
Carregando disponibilidades…
) : availabilities && availabilities.length ? (
- {availabilities.map((a) => (
+ {availabilities
+ .sort((a, b) => {
+ // Define a ordem dos dias da semana (Segunda a Domingo)
+ const weekdayOrder: Record
= {
+ 'segunda': 1, 'segunda-feira': 1, 'mon': 1, 'monday': 1, '1': 1,
+ 'terca': 2, 'terça': 2, 'terça-feira': 2, 'tue': 2, 'tuesday': 2, '2': 2,
+ 'quarta': 3, 'quarta-feira': 3, 'wed': 3, 'wednesday': 3, '3': 3,
+ 'quinta': 4, 'quinta-feira': 4, 'thu': 4, 'thursday': 4, '4': 4,
+ 'sexta': 5, 'sexta-feira': 5, 'fri': 5, 'friday': 5, '5': 5,
+ 'sabado': 6, 'sábado': 6, 'sat': 6, 'saturday': 6, '6': 6,
+ 'domingo': 7, 'dom': 7, 'sun': 7, 'sunday': 7, '0': 7, '7': 7
+ };
+
+ const getWeekdayOrder = (weekday: any) => {
+ if (typeof weekday === 'number') return weekday === 0 ? 7 : weekday;
+ const normalized = String(weekday).toLowerCase().normalize('NFD').replace(/\p{Diacritic}/gu, '');
+ return weekdayOrder[normalized] || 999;
+ };
+
+ return getWeekdayOrder(a.weekday) - getWeekdayOrder(b.weekday);
+ })
+ .map((a) => (
{translateWeekday(a.weekday)} • {a.start_time} — {a.end_time}
Duração: {a.slot_minutes} min • Tipo: {a.appointment_type || '—'} • {a.active ? 'Ativa' : 'Inativa'}
-
+