bug: detalhes e editar do doctor

This commit is contained in:
joao_pedro 2025-11-15 19:03:36 -03:00
parent 815ce759cd
commit 1d048023b1
4 changed files with 44 additions and 51 deletions

View File

@ -52,6 +52,8 @@ function PatientForm({ onSave, onCancel, formData, setFormData, isLoading }) {
})); }));
}; };
useEffect(() => { useEffect(() => {
const peso = parseFloat(formData.weight_kg); const peso = parseFloat(formData.weight_kg);
const altura = parseFloat(formData.height_m); const altura = parseFloat(formData.height_m);
@ -63,9 +65,20 @@ function PatientForm({ onSave, onCancel, formData, setFormData, isLoading }) {
} }
}, [formData.weight_kg, formData.height_m, setFormData]); }, [formData.weight_kg, formData.height_m, setFormData]);
const handleCep = (value) => {
if(value.length === 8){
fetch(`https://viacep.com.br/ws/${value}/json/`)
.then(response => response.json())
.then(result => {setFormData(prev => ({...prev, street:result.logradouro,neighborhood:result.bairro,city:result.localidade,
state:result.estado
}))})
}
}
const handleChange = (e) => { const handleChange = (e) => {
const { name, value, type, checked, files } = e.target; const { name, value, type, checked, files } = e.target;
console.log(name, value)
if (value && emptyFields.includes(name)) { if (value && emptyFields.includes(name)) {
setEmptyFields(prev => prev.filter(field => field !== name)); setEmptyFields(prev => prev.filter(field => field !== name));
} }
@ -102,7 +115,10 @@ function PatientForm({ onSave, onCancel, formData, setFormData, isLoading }) {
setFormData(prev => ({ ...prev, [name]: FormatPeso(value) })); setFormData(prev => ({ ...prev, [name]: FormatPeso(value) }));
} else if (name === 'rn_in_insurance' || name === 'vip' || name === 'validadeIndeterminada') { } else if (name === 'rn_in_insurance' || name === 'vip' || name === 'validadeIndeterminada') {
setFormData(prev => ({ ...prev, [name]: checked })); setFormData(prev => ({ ...prev, [name]: checked }));
} else { } else if(name === 'cep'){
handleCep(value)
setFormData(prev => ({...prev, [name]: value}))
}else {
setFormData(prev => ({ ...prev, [name]: value })); setFormData(prev => ({ ...prev, [name]: value }));
} }
}; };
@ -189,9 +205,6 @@ function PatientForm({ onSave, onCancel, formData, setFormData, isLoading }) {
} }
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(formData.email)) {
throw new Error('Email inválido. Por favor, verifique o email digitado.');
}
await onSave({ ...formData, bmi: parseFloat(formData.bmi) || null }); await onSave({ ...formData, bmi: parseFloat(formData.bmi) || null });
}; };

View File

@ -4,23 +4,19 @@ import { useParams,Link, useNavigate, useLocation } from "react-router-dom";
import { GetDoctorByID } from "../components/utils/Functions-Endpoints/Doctor"; import { GetDoctorByID } from "../components/utils/Functions-Endpoints/Doctor";
import { useAuth } from "../components/utils/AuthProvider"; import { useAuth } from "../components/utils/AuthProvider";
const DoctorDetails = ({doctor}) => { const DoctorDetails = ({DictInfo}) => {
const {getAuthorizationHeader} = useAuth(); const {getAuthorizationHeader} = useAuth();
const Parametros = useParams() const Parametros = useParams()
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation(); const location = useLocation();
const Voltar = () => { const Voltar = () => {
const prefixo = location.pathname.split("/")[1]; const prefixo = location.pathname.split("/")[1];
navigate(`/${prefixo}/medicos`); navigate(`/${prefixo}/medicos`);
} }
return ( return (
<> <>
<div className="card p-3 shadow-sm"> <div className="card p-3 shadow-sm">
@ -36,12 +32,12 @@ const Voltar = () => {
<img src={avatarPlaceholder} alt="" /> <img src={avatarPlaceholder} alt="" />
</div> </div>
<div className="media-body ms-3 font-extrabold"> <div className="media-body ms-3 font-extrabold">
<span>{doctor.nome || "Nome Completo"}</span> <span>{DictInfo.full_name || "Nome Completo"}</span>
<p>{doctor.cpf || "CPF"}</p> <p>{DictInfo.cpf || "CPF"}</p>
</div> </div>
</div> </div>
<Link to={`edit`}> <Link to={`edit`}>
<button className="btn btn-light" onClick={() => {console.log(doctor.id)}} > <button className="btn btn-light" onClick={() => {console.log(DictInfo.id)}} >
<i className="bi bi-pencil-square"></i> Editar <i className="bi bi-pencil-square"></i> Editar
</button> </button>
</Link> </Link>
@ -55,29 +51,29 @@ const Voltar = () => {
<div className="row"> <div className="row">
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Nome:</label> <label className="font-extrabold">Nome:</label>
<p>{doctor.full_name || "-"}</p> <p>{DictInfo.full_name || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Data de nascimento:</label> <label className="font-extrabold">Data de nascimento:</label>
<p>{doctor.birth_date || "-"}</p> <p>{DictInfo.birth_date || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">CPF:</label> <label className="font-extrabold">CPF:</label>
<p>{doctor.cpf || "-"}</p> <p>{DictInfo.cpf || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">CRM:</label> <label className="font-extrabold">CRM:</label>
<p>{doctor.crm || "-"}</p> <p>{DictInfo.crm || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Estado do CRM:</label> <label className="font-extrabold">Estado do CRM:</label>
<p>{doctor.crm_uf || "-"}</p> <p>{DictInfo.crm_uf || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Especialização:</label> <label className="font-extrabold">Especialização:</label>
<p>{doctor.specialty || "-"}</p> <p>{DictInfo.specialty || "-"}</p>
</div> </div>
</div> </div>
</div> </div>
@ -89,31 +85,31 @@ const Voltar = () => {
<div className="row"> <div className="row">
<div className="col-md-4 mb-3"> <div className="col-md-4 mb-3">
<label className="font-extrabold">CEP:</label> <label className="font-extrabold">CEP:</label>
<p>{doctor.cep || "-"}</p> <p>{DictInfo.cep || "-"}</p>
</div> </div>
<div className="col-md-8 mb-3"> <div className="col-md-8 mb-3">
<label className="font-extrabold">Rua:</label> <label className="font-extrabold">Rua:</label>
<p>{doctor.street || "-"}</p> <p>{DictInfo.street || "-"}</p>
</div> </div>
<div className="col-md-4 mb-3"> <div className="col-md-4 mb-3">
<label className="font-extrabold">Bairro:</label> <label className="font-extrabold">Bairro:</label>
<p>{doctor.neighborhood || "-"}</p> <p>{DictInfo.neighborhood || "-"}</p>
</div> </div>
<div className="col-md-4 mb-3"> <div className="col-md-4 mb-3">
<label className="font-extrabold">Cidade:</label> <label className="font-extrabold">Cidade:</label>
<p>{doctor.city || "-"}</p> <p>{DictInfo.city || "-"}</p>
</div> </div>
<div className="col-md-2 mb-3"> <div className="col-md-2 mb-3">
<label className="font-extrabold">Estado:</label> <label className="font-extrabold">Estado:</label>
<p>{doctor.state || "-"}</p> <p>{DictInfo.state || "-"}</p>
</div> </div>
<div className="col-md-4 mb-3"> <div className="col-md-4 mb-3">
<label className="font-extrabold">Número:</label> <label className="font-extrabold">Número:</label>
<p>{doctor.number || "-"}</p> <p>{DictInfo.number || "-"}</p>
</div> </div>
<div className="col-md-8 mb-3"> <div className="col-md-8 mb-3">
<label className="font-extrabold">Complemento:</label> <label className="font-extrabold">Complemento:</label>
<p>{doctor.complement || "-"}</p> <p>{DictInfo.complement || "-"}</p>
</div> </div>
</div> </div>
</div> </div>
@ -125,15 +121,15 @@ const Voltar = () => {
<div className="row"> <div className="row">
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Email:</label> <label className="font-extrabold">Email:</label>
<p>{doctor.email || "-"}</p> <p>{DictInfo.email || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Telefone:</label> <label className="font-extrabold">Telefone:</label>
<p>{doctor.phone_mobile || "-"}</p> <p>{DictInfo.phone_mobile || "-"}</p>
</div> </div>
<div className="col-md-6 mb-3"> <div className="col-md-6 mb-3">
<label className="font-extrabold">Telefone 2:</label> <label className="font-extrabold">Telefone 2:</label>
<p>{doctor.phone2 || "-"}</p> <p>{DictInfo.phone2 || "-"}</p>
</div> </div>
</div> </div>

View File

@ -45,18 +45,8 @@ const DoctorEditPage = ({DictInfo}) => {
redirect: "follow", redirect: "follow",
}; };
try { fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctors?id=eq.${DictInfo.id}`,requestOptions)
const response = await fetch( .then(response => console.log(response))
`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/doctors?id=eq.${DoctorID}`,
requestOptions
);
console.log("Resposta PUT Doutor:", response);
alert("Dados do médico atualizados com sucesso!");
} catch (error) {
console.error("Erro ao atualizar médico:", error);
alert("Erro ao atualizar dados do médico.");
throw error;
}
}; };
// 2. Função para Atualizar DISPONIBILIDADE (PATCH) // 2. Função para Atualizar DISPONIBILIDADE (PATCH)
@ -97,12 +87,6 @@ const DoctorEditPage = ({DictInfo}) => {
return ( return (
<div> <div>
<h1 className="text-2xl font-bold mb-4">
{mode === "availability"
? `Editar Horário Disponível (ID: ${availabilityId.substring(0, 8)})`
: `Editar Médico (ID: ${DoctorID})`}
</h1>
<DoctorForm <DoctorForm
onSave={ onSave={
mode === "availability" ? HandlePatchAvailability : HandlePutDoctor mode === "availability" ? HandlePatchAvailability : HandlePutDoctor

View File

@ -37,7 +37,7 @@ const HandlePutPatient = async () => {
}; };
fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?id=eq.${PatientToPUT.id}`,requestOptions) fetch(`https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients?id=eq.${PatientToPUT.id}`,requestOptions)
.then(response => response.json) .then(response => console.log(response))
.then(result => console.log(result)) .then(result => console.log(result))
.catch(console.log("erro")) .catch(console.log("erro"))