diff --git a/public/index.html b/public/index.html index e345be4..c964584 100644 --- a/public/index.html +++ b/public/index.html @@ -6,7 +6,6 @@ - @@ -21,8 +20,8 @@
- + diff --git a/public/manifest.json b/public/manifest.json index 2f2be64..45b8cb8 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -6,16 +6,6 @@ "src": "favicon.ico", "sizes": "64x64 32x32 24x24 16x16", "type": "image/x-icon" - }, - { - "src": "logo192.png", - "type": "image/png", - "sizes": "192x192" - }, - { - "src": "logo512.png", - "type": "image/png", - "sizes": "512x512" } ], "start_url": ".", diff --git a/src/components/AgendarConsulta/FormNovaConsulta.jsx b/src/components/AgendarConsulta/FormNovaConsulta.jsx index 6723e6c..0ab474d 100644 --- a/src/components/AgendarConsulta/FormNovaConsulta.jsx +++ b/src/components/AgendarConsulta/FormNovaConsulta.jsx @@ -1,8 +1,53 @@ -import React from "react"; +import React, { useState, useEffect } from "react"; import InputMask from "react-input-mask"; import "./style/styleagendamentos.css"; -const FormNovaConsulta = ({ onCancel }) => { +const FormNovaConsulta = ({ onCancel, patientID }) => { + const [selectedFile, setSelectedFile] = useState(null); + const [anexos, setAnexos] = useState([]); + const [loadingAnexos, setLoadingAnexos] = useState(false); + useEffect(() => { + if (!patientID) return; + + const fetchAnexos = async () => { + setLoadingAnexos(true); + try { + const res = await fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos`); + const data = await res.json(); + setAnexos(data.data || []); + } catch (err) { + console.error("Erro ao buscar anexos:", err); + } finally { + setLoadingAnexos(false); + } + }; + + fetchAnexos(); + }, [patientID]); + + const handleUpload = async () => { + if (!selectedFile) return; + + const formData = new FormData(); + formData.append("file", selectedFile); + + try { + const res = await fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos`, { + method: "POST", + body: formData + }); + if (res.ok) { + const novoAnexo = await res.json(); + setAnexos(prev => [...prev, novoAnexo]); + setSelectedFile(null); + } else { + console.error("Erro ao enviar anexo"); + } + } catch (err) { + console.error("Erro ao enviar anexo:", err); + } + }; + const handleSubmit = (e) => { e.preventDefault(); alert("Agendamento salvo!"); @@ -55,7 +100,29 @@ const FormNovaConsulta = ({ onCancel }) => {

Informações adicionais

- + + setSelectedFile(e.target.files[0])} + /> + {selectedFile && ( + + )} +
+ {loadingAnexos ? ( +

Carregando anexos...

+ ) : ( + anexos.map((anexo, index) => ( +
+ {anexo.nome || anexo.fileName} +
+ )) + )} +

Informações do atendimento

diff --git a/src/components/Sidebar.js b/src/components/Sidebar.js index 23bb80b..095b41e 100644 --- a/src/components/Sidebar.js +++ b/src/components/Sidebar.js @@ -56,7 +56,7 @@ function Sidebar(props) { props.setCurrentPage('dashboard'); }} > - MediConnect +

MediConnect

diff --git a/src/components/patients/PatientForm.jsx b/src/components/patients/PatientForm.jsx index 4a788e0..0b500cc 100644 --- a/src/components/patients/PatientForm.jsx +++ b/src/components/patients/PatientForm.jsx @@ -261,9 +261,17 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) { } } }; +<<<<<<< HEAD const handleSubmit = async () => { if (!formData.nome || !formData.cpf || !formData.sexo || !formData.data_nascimento) { alert('Por favor, preencha Nome, CPF, Gênero e data de nascimento.'); +======= + + const handleSubmit = async (e) => { + e.preventDefault(); + if (!formData.nome || !formData.cpf || !formData.sexo || !formData.data_nascimento){ + alert('Por favor, preencha Nome ,CPF, Gênero e data de nascimento.'); +>>>>>>> ecae83cf4cc5cac2487d7fbd9cb61a8d706b01a3 return; } @@ -281,7 +289,7 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) { return; } - onSave({ + const pacienteSalvo = await onSave({ ...formData, endereco: { cep: enderecoData.cep, @@ -314,7 +322,55 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) { pacienteVip: formData.pacienteVip, }, }); +<<<<<<< HEAD }; +======= + + const pacienteId = pacienteSalvo.id; + + try{ + if (formData.foto) await uploadFotoPaciente(pacienteId, formData.foto); + if (formData.anexos) await uploadAnexoPaciente(pacienteId, formData.anexos); + alert("Paciente salvo com sucesso!"); + } catch (error) { + console.error(error); + alert("Erro ao salvar paciente ou enviar arquivos."); + } + }; + const uploadFotoPaciente = async (pacienteId, foto) => { + const formDataUpload = new FormData(); + formDataUpload.append('foto', foto); + + try { + const res = await fetch(`https://suaapi.com/pacientes/${pacienteId}/foto`, { + method: 'POST', + headers: { 'Authorization': 'Bearer ' }, + body: formDataUpload + }); + if (!res.ok) throw new Error('Erro ao enviar foto'); + alert('Foto enviada com sucesso!'); + } catch (err) { + console.error(err); + alert('Falha ao enviar foto'); + } + }; + const uploadAnexoPaciente = async (pacienteId, anexo) => { + const formDataUpload = new FormData(); + formDataUpload.append('anexo', anexo); + try { + const res = await fetch(`https://suaapi.com/pacientes/${pacienteId}/anexos`, { + method: 'POST', + headers: { 'Authorization': 'Bearer ' }, + body: formDataUpload + }); + if (!res.ok) throw new Error('Erro ao enviar anexo'); + alert('Anexo enviado com sucesso!'); + } catch (err) { + console.error(err); + alert('Falha ao enviar anexo'); + } + }; +>>>>>>> ecae83cf4cc5cac2487d7fbd9cb61a8d706b01a3 return (
diff --git a/src/index.js b/src/index.js index a98e326..3eb62a0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,12 +1,13 @@ import React from 'react'; -import ReactDOM from 'react-dom'; +import ReactDOM from 'react-dom/client'; import './assets/scss/bootstrap.scss'; import './assets/scss/app.scss'; import App from './App'; -ReactDOM.render( +const root = ReactDOM.createRoot(document.getElementById('root')); +root.render( , - document.getElementById('root') + ); diff --git a/src/pages/Details.jsx b/src/pages/Details.jsx index 59cf032..1f6b317 100644 --- a/src/pages/Details.jsx +++ b/src/pages/Details.jsx @@ -3,17 +3,69 @@ import avatarPlaceholder from '../assets/images/avatar_placeholder.png'; const Details = ({ patientID, setCurrentPage }) => { const [paciente, setPaciente] = useState({}); + const [anexos, setAnexos] = useState([]); + const [selectedFile, setSelectedFile] = useState(null); useEffect(() => { if (!patientID) return; fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}`) .then(res => res.json()) - + .then(result => {setPaciente(result.data)}) .catch(err => console.error("Erro ao buscar paciente:", err)); + + fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos`) + .then(res => res.json()) + .then(data => setAnexos(data.data || [])) + .catch(err => console.error("Erro ao buscar anexos:", err)); + }, [patientID]); + const handleUpload = async () => { + if (!selectedFile) return; + + const formData = new FormData(); + formData.append('file', selectedFile); + + try { + const response = await fetch(`https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos`, { + method: 'POST', + body: formData, + }); + + if (response.ok) { + const newAnexo = await response.json(); + setAnexos(prev => [...prev, newAnexo]); + setSelectedFile(null); + } else { + console.error('Erro ao enviar anexo'); + } + } catch (err) { + console.error('Erro ao enviar anexo:', err); + } + }; + + const handleDelete = async (anexoId) => { + try { + const response = await fetch( + `https://mock.apidog.com/m1/1053378-0-default/pacientes/${patientID}/anexos/${anexoId}`, + { + method: "DELETE", + } + ); + + if (response.ok) { + setAnexos((prev) => prev.filter((a) => a.id !== anexoId)); + } else { + console.error("Erro ao deletar anexo"); + } + } catch (err) { + console.error("Erro ao deletar anexo:", err); + } + }; + + return ( @@ -137,7 +189,29 @@ const Details = ({ patientID, setCurrentPage }) => {
-

{ "-"}

+ {anexos.length > 0 ?( +
    + {anexos.map((anexo) => ( +
  • + + {anexo.nome} + + +
  • + ))} +
+ ) : ( +

-

+ )} +
+
+ + setSelectedFile(e.target.files[0])} accept="image/*"/> + {selectedFile && {selectedFile.name}} +
diff --git a/src/pages/Inicio.jsx b/src/pages/Inicio.jsx index 543650d..2edcfe0 100644 --- a/src/pages/Inicio.jsx +++ b/src/pages/Inicio.jsx @@ -18,13 +18,14 @@ function Inicio({ setCurrentPage }) { }; const fetchAgendamentos = async () => { - try { - const res = await fetch(); - const data = await res.json(); - setAgendamentos(data.data); - } catch (error) { - console.error("Erro ao buscar agendamentos:", error); - } + return; // <===serve para que nao cause erro + // try { + // const res = await fetch(); + // const data = await res.json(); + // setAgendamentos(data.data); + // } catch (error) { + // console.error("Erro ao buscar agendamentos:", error); + // } }; fetchPacientes();