configuração do envio de sms

This commit is contained in:
Lucas Deiró Rodrigues 2025-11-10 15:36:00 -03:00
parent 6daa0d247f
commit 0fcc7ae97b
2 changed files with 91 additions and 33 deletions

View File

@ -207,7 +207,11 @@ export default function ScheduleForm() {
}, [selectedDoctor, selectedDate, fetchAvailableSlots]);
// 🔹 Submeter agendamento
const handleSubmit = async (e: React.FormEvent) => {
// 🔹 Submeter agendamento
// 🔹 Submeter agendamento
// 🔹 Submeter agendamento
// 🔹 Submeter agendamento
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
const isSecretaryLike = ["secretaria", "admin", "gestor"].includes(role);
@ -228,8 +232,11 @@ export default function ScheduleForm() {
appointment_type: tipoConsulta,
};
// ✅ mantém o fluxo original de criação (funcional)
await appointmentsService.create(body);
const dateFormatted = selectedDate.split("-").reverse().join("/");
toast({
title: "Consulta agendada!",
description: `Consulta marcada para ${dateFormatted} às ${selectedTime} com o(a) médico(a) ${
@ -237,16 +244,64 @@ export default function ScheduleForm() {
}.`,
});
// 📞 busca o telefone corretamente
let phoneNumber = "+5511999999999"; // fallback
try {
if (isSecretaryLike) {
// se for secretária/admin → usa paciente selecionado
const patient = patients.find((p: any) => p.id === patientId);
if (patient?.phone_number) phoneNumber = patient.phone_number;
} else {
// se for paciente → usa o service do próprio user
const me = await usersService.getMe();
if (me?.profile?.phone) phoneNumber = me.profile.phone;
}
// padroniza número para formato internacional (+55)
if (phoneNumber) {
phoneNumber = phoneNumber.replace(/\D/g, ""); // remove caracteres não numéricos
if (!phoneNumber.startsWith("55")) phoneNumber = `55${phoneNumber}`;
phoneNumber = `+${phoneNumber}`;
}
} catch (err) {
console.warn("Não foi possível obter telefone do paciente:", err);
}
// 💬 envia o SMS de confirmação
// 💬 Envia o SMS de lembrete (sem mostrar nada ao paciente)
try {
const smsRes = await appointmentsService.send_sms({
phone_number: phoneNumber,
message: `Lembrete: sua consulta é em ${dateFormatted} às ${selectedTime} na Clínica MediConnect.`,
patient_id: patientId,
});
if (smsRes?.success) {
console.log("✅ SMS enviado com sucesso:", smsRes.message_sid || smsRes.sid || "(sem SID retornado)");
} else {
console.warn("⚠️ Falha no envio do SMS:", smsRes);
}
} catch (smsErr) {
console.error("❌ Erro ao enviar SMS:", smsErr);
}
// 🧹 limpa os campos
setSelectedDoctor("");
setSelectedDate("");
setSelectedTime("");
setNotes("");
setSelectedPatient("");
} catch (err) {
console.error(err);
console.error("❌ Erro ao agendar consulta:", err);
toast({ title: "Erro", description: "Falha ao agendar consulta." });
}
};
};
// 🔹 Tooltip no calendário
useEffect(() => {

View File

@ -45,4 +45,7 @@ export const appointmentsService = {
* @returns {Promise<object>} - Uma promessa que resolve com a resposta da API.
*/
delete: (id) => api.delete(`/rest/v1/appointments?id=eq.${id}`),
send_sms: (data) => api.post("/functions/v1/send-sms", data)
};