diff --git a/src/pages/DoctorEditPage.jsx b/src/pages/DoctorEditPage.jsx
index f6467bf..6fd3a6a 100644
--- a/src/pages/DoctorEditPage.jsx
+++ b/src/pages/DoctorEditPage.jsx
@@ -1,12 +1,12 @@
import React from 'react'
-
import DoctorForm from '../components/doctors/DoctorForm'
-
+import handleApiResponse from '../assets/utils/apiHandler';
import {useEffect, useState} from 'react'
const DoctorEditPage = ( {id}) => {
-
const [PatientToPUT, setPatientPUT] = useState({})
+ const [errorMessage, setErrorMessage] = useState("");
+ const [fieldErrors, setFieldErrors] = useState({});
var requestOptions = {
method: 'GET',
@@ -14,15 +14,51 @@ const DoctorEditPage = ( {id}) => {
};
useEffect(() => {
-
-
fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}`, requestOptions)
.then(response => response.json())
- .then(result => result.data)
- .then(data => console.log(data))
- .catch(error => console.log('error', error));
-
+ // .then(result => result.data)
+ // .then(data => console.log(data))
+ // .catch(error => console.log('error', error));
+ .then(handleApiResponse)
+ .then((data) => {
+ setPaciente(data);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
+
+ // .then(async (response) => {
+ // const data = await response.json();
+ // if (!response.ok) {
+ // // response is 400, 401, 500 etc.
+ // throw data; // throw the parsed JSON error so it goes to catch
+ // }
+
+ // return data; // return success data
+ // })
+ // .then((result) => {
+ // console.log("Success data:", result);
+ // // here you would setState with result
+ // })
+ // .catch((error) => {
+ // // error is the parsed JSON from the API
+ // console.error("API error:", error);
+
+ // // Example: show main message
+ // alert(error.message);
+
+ // // Example: show field errors if available
+ // if (error.details) {
+ // Object.entries(error.details).forEach(([field, messages]) => {
+ // console.log(`${field}:`, messages);
+ // });
+ // }
+ // });
}, [])
+
const HandlePutPatient = () => {
console.log('médico atualizado')
@@ -33,7 +69,27 @@ fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}`, requestOpt
return (
-
+ {errorMessage && (
+
+ {errorMessage}
+
+ )}
+
+ {/* Mensagens de erro específicas */}
+ {Object.keys(fieldErrors).length > 0 && (
+
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => (
+
+
{campo}:
+
+ {mensagens.map((msg, idx) => (
+ - {msg}
+ ))}
+
+
+ ))}
+
+ )}
diff --git a/src/pages/DoctorTable.jsx b/src/pages/DoctorTable.jsx
index b834137..1ee7ec1 100644
--- a/src/pages/DoctorTable.jsx
+++ b/src/pages/DoctorTable.jsx
@@ -1,9 +1,12 @@
import React, { useState, useEffect } from "react";
+import handleApiResponse from '../assets/utils/apiHandler';
function TableDoctor({ setCurrentPage, setPatientID }) {
const [medicos, setMedicos] = useState([]);
const [search, setSearch] = useState("");
const [filtroAniversariante, setFiltroAniversariante] = useState(false);
+ const [errorMessage, setErrorMessage] = useState("");
+ const [fieldErrors, setFieldErrors] = useState({});
// Função para excluir médicos
const deleteDoctor = async (id) => {
@@ -16,8 +19,18 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
requestOptionsDelete
)
.then((response) => response.text())
- .then((mensage) => console.log(mensage))
- .catch((error) => console.log("Deu problema", error));
+ // .then((mensage) => console.log(mensage))
+ // .catch((error) => console.log("Deu problema", error));
+ .then(handleApiResponse)
+ .then((data) => {
+ setPaciente(data);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
};
// Função para verificar se hoje é aniversário
@@ -36,10 +49,20 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
useEffect(() => {
fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes")
.then((response) => response.json())
- .then((result) => setMedicos(result["data"]))
- .catch((error) =>
- console.log("Erro para encontrar médicos no banco de dados", error)
- );
+ // .then((result) => setMedicos(result["data"]))
+ // .catch((error) =>
+ // console.log("Erro para encontrar médicos no banco de dados", error)
+ // );
+ .then(handleApiResponse)
+ .then((data) => {
+ setMedicos(result[data]);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
}, []);
// Filtrar médicos pelo campo de pesquisa e aniversariantes
@@ -53,6 +76,27 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
return (
<>
+ {errorMessage && (
+
+ {errorMessage}
+
+ )}
+
+ {/* Mensagens de erro específicas */}
+ {Object.keys(fieldErrors).length > 0 && (
+
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => (
+
+
{campo}:
+
+ {mensagens.map((msg, idx) => (
+ - {msg}
+ ))}
+
+
+ ))}
+
+ )}
Lista de Médicos
diff --git a/src/pages/EditPage.jsx b/src/pages/EditPage.jsx
index b204fd9..09263e0 100644
--- a/src/pages/EditPage.jsx
+++ b/src/pages/EditPage.jsx
@@ -1,11 +1,11 @@
import React from 'react'
-
-import PatientForm from '../components/patients/PatientForm'
-
import {useEffect, useState} from 'react'
+import PatientForm from '../components/patients/PatientForm'
+import handleApiResponse from '../assets/utils/apiHandler';
const EditPage = ( {id}) => {
-
+ const [errorMessage, setErrorMessage] = useState("");
+ const [fieldErrors, setFieldErrors] = useState({});
const [PatientToPUT, setPatientPUT] = useState({})
var requestOptions = {
@@ -18,9 +18,19 @@ useEffect(() => {
fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}`, requestOptions)
.then(response => response.json())
- .then(result => result.data)
- .then(data => setPatientPUT(data))
- .catch(error => console.log('error', error));
+ // .then(result => result.data)
+ // .then(data => setPatientPUT(data))
+ // .catch(error => console.log('error', error));
+ .then(handleApiResponse)
+ .then((data) => {
+ setPaciente(data);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
}, [])
@@ -43,8 +53,18 @@ var requestOptions = {
fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes/", requestOptions)
.then(response => response.text())
- .then(result => console.log('ATUALIZADO COM SUCESSO',result))
- .catch(error => console.log('error', error));
+ // .then(result => console.log('ATUALIZADO COM SUCESSO',result))
+ // .catch(error => console.log('error', error));
+ .then(handleApiResponse)
+ .then((data) => {
+ setPaciente(data);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
}
@@ -52,7 +72,27 @@ fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes/", requestOptions)
return (
+ {errorMessage && (
+
+ {errorMessage}
+
+ )}
+ {/* Mensagens de erro específicas */}
+ {Object.keys(fieldErrors).length > 0 && (
+
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => (
+
+
{campo}:
+
+ {mensagens.map((msg, idx) => (
+ - {msg}
+ ))}
+
+
+ ))}
+
+ )}
{
const fetchPacientes = async () => {
try {
const res = await fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes");
+ if (!response.ok) {
+ const errorData = await response.json();
+ setErrorMessage(errorData.message || "Erro desconhecido");
+ if (errorData.details) {
+ setFieldErrors(errorData.details);
+ }
+ return;
+ }
const data = await res.json();
setPacientes(data.data);
+ setErrorMessage("");
+ setFieldErrors({});
} catch (error) {
console.error("Erro ao buscar pacientes:", error);
+ setErrorMessage("Falha na comunicação com o servidor");
}
};
const fetchAgendamentos = async () => {
try {
const res = await fetch();
+ if (!response.ok) {
+ const errorData = await response.json();
+ setErrorMessage(errorData.message || "Erro desconhecido");
+ if (errorData.details) {
+ setFieldErrors(errorData.details);
+ }
+ return;
+ }
const data = await res.json();
setAgendamentos(data.data);
} catch (error) {
console.error("Erro ao buscar agendamentos:", error);
+ setErrorMessage("Falha na comunicação com o servidor");
}
};
@@ -48,6 +70,28 @@ function Inicio({ setCurrentPage }) {
+ {errorMessage && (
+
+ {errorMessage}
+
+ )}
+
+ {/* Mensagens de erro específicas */}
+ {Object.keys(fieldErrors).length > 0 && (
+
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => (
+
+
{campo}:
+
+ {mensagens.map((msg, idx) => (
+ - {msg}
+ ))}
+
+
+ ))}
+
+ )}
+
diff --git a/src/pages/Table.jsx b/src/pages/Table.jsx
index 1ad96dd..745aa1f 100644
--- a/src/pages/Table.jsx
+++ b/src/pages/Table.jsx
@@ -1,4 +1,5 @@
import React, { useState, useEffect } from "react";
+import handleApiResponse from '../assets/utils/apiHandler';
function TablePaciente({ setCurrentPage, setPatientID }) {
const [pacientes, setPacientes] = useState([]);
@@ -6,8 +7,9 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
const [filtroConvenio, setFiltroConvenio] = useState("Todos");
const [filtroVIP, setFiltroVIP] = useState(false);
const [filtroAniversariante, setFiltroAniversariante] = useState(false);
-
-
+ const [errorMessage, setErrorMessage] = useState("");
+ const [fieldErrors, setFieldErrors] = useState({});
+
const GetAnexos = async (id) => {
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer
");
@@ -20,29 +22,32 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
try {
const response = await fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${id}/anexos`, requestOptions);
const result = await response.json();
-
+ if (!response.ok) {
+ const errorData = await response.json();
+ setErrorMessage(errorData.message || "Erro desconhecido");
+ if (errorData.details) {
+ setFieldErrors(errorData.details);
+ }
+ return;
+ }
+ setErrorMessage("");
+ setFieldErrors({});
return result.data; // agora retorna corretamente
} catch (error) {
console.log('error', error);
+ setErrorMessage("Falha na comunicação com o servidor");
return [];
}
-
}
-
-
const DeleteAnexo = async (patientID) => {
-
-
- const RespostaGetAnexos = await GetAnexos(patientID)
+ const RespostaGetAnexos = await GetAnexos(patientID)
for(let i = 0; i < RespostaGetAnexos.length; i++){
const idAnexo = RespostaGetAnexos[i].id;
console.log('anexos',RespostaGetAnexos)
-
-
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer ");
@@ -69,9 +74,6 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
DeleteAnexo(id)
-
-
-
const requestOptionsDelete = { method: "DELETE", redirect: "follow" };
if (!window.confirm("Tem certeza que deseja excluir este paciente?")) return;
@@ -117,22 +119,40 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
}
)
.then((response) => response.json())
+ .then(handleApiResponse)
.then(() => {
setPacientes((prev) =>
prev.map((p) => (p.id === id ? { ...p, convenio } : p))
);
+ setErrorMessage("");
+ setFieldErrors({});
})
- .catch((error) => console.log("Erro ao atualizar convênio:", error));
+ // .catch((error) => console.log("Erro ao atualizar convênio:", error));
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
};
// Requisição inicial para buscar pacientes
useEffect(() => {
fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes")
- .then((response) => response.json())
- .then((result) => setPacientes(result["data"]))
- .catch((error) =>
- console.log("Erro para encontrar pacientes no banco de dados", error)
- );
+ // .then((response) => response.json())
+ // .then((result) => setPacientes(result["data"]))
+ // .catch((error) =>
+ // console.log("Erro para encontrar pacientes no banco de dados", error)
+ // );
+ .then(handleApiResponse)
+ .then((data) => {
+ setPaciente(data);
+ setErrorMessage("");
+ setFieldErrors({});
+ })
+ .catch((error) => {
+ setErrorMessage(error.message || "Erro desconhecido");
+ setFieldErrors(error.details || {});
+ });
+
}, []);
// Função para verificar se hoje é aniversário do paciente
@@ -167,6 +187,27 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
Lista de Pacientes
+ {errorMessage && (
+
+ {errorMessage}
+
+ )}
+
+ {/* Mensagens de erro específicas */}
+ {Object.keys(fieldErrors).length > 0 && (
+
+ {Object.entries(fieldErrors).map(([campo, mensagens]) => (
+
+
{campo}:
+
+ {mensagens.map((msg, idx) => (
+ - {msg}
+ ))}
+
+
+ ))}
+
+ )}