diff --git a/src/components/AgendarConsulta/FormDisponibilidade.jsx b/src/components/AgendarConsulta/FormDisponibilidade.jsx
deleted file mode 100644
index 86ba6cec..00000000
--- a/src/components/AgendarConsulta/FormDisponibilidade.jsx
+++ /dev/null
@@ -1,177 +0,0 @@
-import InputMask from "react-input-mask";
-import "./style/formagendamentos.css";
-import { useState, useEffect } from "react";
-
-const FormNovaDisponibilidade = ({ onCancel, doctorID }) => {
-
- const [dadosAtendimento, setDadosAtendimento] = useState({
- profissional: '',
- tipoAtendimento: '',
- dataAtendimento: '',
- inicio: '',
- termino: '',
- motivo: ''
- });
-
- const handleAtendimentoChange = (e) => {
- const { value, name } = e.target;
- setDadosAtendimento(prev => ({
- ...prev,
- [name]: value
- }));
- };
-
- const handleSubmitExcecao = async (e) => {
- e.preventDefault();
- console.log("Modo Emergência Ativado: Tentando criar Exceção com novo endpoint.");
-
- const { profissional, dataAtendimento, tipoAtendimento, inicio, termino, motivo } = dadosAtendimento;
-
- if (!profissional || !dataAtendimento || !tipoAtendimento) {
- alert("Por favor, preencha o Profissional, Data, e Tipo da exceção.");
- return;
- }
-
- const payload = {
- doctor_id: profissional,
- date: dataAtendimento,
- start_time: inicio + ":00" || null, // Adiciona ":00" se o input type="time" retornar apenas HH:MM
- end_time: termino + ":00" || null, // Adiciona ":00"
- kind: tipoAtendimento,
- reason: motivo,
- };
-
- var myHeaders = new Headers();
- myHeaders.append("Content-Type", "application/json");
-
- var requestOptions = {
- method: 'POST',
- headers: myHeaders,
- body: JSON.stringify(payload),
- redirect: 'follow'
- };
-
- try {
- const response = await fetch("https://mock.apidog.com/m1/1053378-0-default/rest/v1/doctor_exceptions", requestOptions);
- const result = await response.json();
-
- if (response.ok || response.status === 201) {
- console.log("Exceção de emergência criada com sucesso:", result);
- alert(`Consulta de emergência agendada como exceção! Detalhes: ${JSON.stringify(result)}`);
- } else {
- console.error("Erro ao criar exceção de emergência:", result);
- alert(`Erro ao agendar exceção. Status: ${response.status}. Detalhes: ${result.message || JSON.stringify(result)}`);
- }
- } catch (error) {
- console.error("Erro na requisição para criar exceção:", error);
- alert("Erro de comunicação com o servidor ou formato de resposta inválido.");
- }
- };
-
- return (
-
- );
-};
-
-export default FormNovaDisponibilidade;
\ No newline at end of file
diff --git a/src/components/FormCriarExcecao.jsx b/src/components/FormCriarExcecao.jsx
new file mode 100644
index 00000000..dcfbfcf0
--- /dev/null
+++ b/src/components/FormCriarExcecao.jsx
@@ -0,0 +1,184 @@
+// src/components/FormCriarExcecao.jsx
+
+import React, { useState } from "react";
+// Assumindo que você usa o mesmo estilo
+import "./AgendarConsulta/style/formagendamentos.css";
+
+const ENDPOINT_CRIAR_EXCECAO = "https://mock.apidog.com/m1/1053378-0-default/rest/v1/doctor_exceptions";
+
+const FormCriarExcecao = ({ onCancel, doctorID }) => {
+
+ const [dadosAtendimento, setDadosAtendimento] = useState({
+ profissional: doctorID || '',
+ tipoAtendimento: '',
+ dataAtendimento: '',
+ inicio: '',
+ termino: '',
+ motivo: ''
+ });
+
+ const handleAtendimentoChange = (e) => {
+ const { value, name } = e.target;
+ setDadosAtendimento(prev => ({
+ ...prev,
+ [name]: value
+ }));
+ };
+
+ const handleSubmitExcecao = async (e) => {
+ e.preventDefault();
+ console.log("Tentando criar Exceção.");
+
+ const { profissional, dataAtendimento, tipoAtendimento, inicio, termino, motivo } = dadosAtendimento;
+
+ // Validação
+ if (!profissional || !dataAtendimento || !tipoAtendimento || !motivo) {
+ alert("Por favor, preencha o ID do Profissional, Data, Tipo e Motivo.");
+ return;
+ }
+
+ // Adiciona ":00" se o campo de hora estiver preenchido
+ const startTime = inicio ? inicio + ":00" : undefined;
+ const endTime = termino ? termino + ":00" : undefined;
+
+ const payload = {
+ doctor_id: profissional,
+ date: dataAtendimento,
+ start_time: startTime,
+ end_time: endTime,
+ kind: tipoAtendimento,
+ reason: motivo,
+ };
+
+ var myHeaders = new Headers();
+ myHeaders.append("Content-Type", "application/json");
+
+ var requestOptions = {
+ method: 'POST',
+ headers: myHeaders,
+ body: JSON.stringify(payload),
+ redirect: 'follow'
+ };
+
+ try {
+ const response = await fetch(ENDPOINT_CRIAR_EXCECAO, requestOptions);
+ const resultText = await response.text();
+ let result;
+ try {
+ result = JSON.parse(resultText);
+ } catch {
+ result = { message: resultText || 'Sucesso, mas resposta não é JSON.' };
+ }
+
+ if (response.ok || response.status === 201) {
+ console.log("Exceção criada com sucesso:", result);
+ alert(`Exceção criada! Detalhes: ${result.id || JSON.stringify(result)}`);
+ onCancel(true); // Indica sucesso para o componente pai recarregar
+ } else {
+ console.error("Erro ao criar exceção:", result);
+ alert(`Erro ao criar exceção. Status: ${response.status}. Detalhes: ${result.message || JSON.stringify(result)}`);
+ }
+ } catch (error) {
+ console.error("Erro na requisição para criar exceção:", error);
+ alert("Erro de comunicação com o servidor.");
+ }
+ };
+
+ return (
+
+
+
+ );
+};
+
+export default FormCriarExcecao;
\ No newline at end of file
diff --git a/src/pages/Agendamento.jsx b/src/pages/Agendamento.jsx
index 9d2f0de8..8be99eef 100644
--- a/src/pages/Agendamento.jsx
+++ b/src/pages/Agendamento.jsx
@@ -248,8 +248,9 @@ const handleSearchMedicos = (term) => {
Agendar nova consulta
-