From a71b90046f774019f0c214ac2a516fd823240fb4 Mon Sep 17 00:00:00 2001 From: Henrique-Sousa <29417378+Henrique-Sousa@users.noreply.github.com> Date: Mon, 6 Apr 2026 21:32:13 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20quando=20adiciona=20um=20m=C3=A9dico,?= =?UTF-8?q?=20atualiza=20a=20lista=20em=20tempo=20real?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/components/CadastrarMedicosModal.jsx | 34 ++----- ui/src/components/ListaMedicos.jsx | 22 +---- .../containers/DashboardContainer/index.jsx | 88 ++++++++++++++++--- 3 files changed, 82 insertions(+), 62 deletions(-) diff --git a/ui/src/components/CadastrarMedicosModal.jsx b/ui/src/components/CadastrarMedicosModal.jsx index 75daec4..9f9ae6e 100644 --- a/ui/src/components/CadastrarMedicosModal.jsx +++ b/ui/src/components/CadastrarMedicosModal.jsx @@ -2,7 +2,12 @@ import { Modal, Form, Input, Button } from 'antd'; import _service from '@netuno/service-client'; -function CadastrarMedicosModal({isCadastrarMedicosModalOpen, setIsCadastrarMedicosModalOpen}) { +function CadastrarMedicosModal({isCadastrarMedicosModalOpen, + setIsCadastrarMedicosModalOpen, + onFinish, + onFinishFailed, +}) { + const handleCadastrarMedicosOk = () => { setIsCadastrarMedicosModalOpen(false); }; @@ -10,33 +15,6 @@ function CadastrarMedicosModal({isCadastrarMedicosModalOpen, setIsCadastrarMedic setIsCadastrarMedicosModalOpen(false); }; - const onFinish = values => { - console.log('Values:', values); - _service({ - url: "/services/medicos", - method: "POST", - data: {...values, especialidades: [], convenios: [] }, - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - 'Authorization': `Bearer ${localStorage.getItem('access_token')}` - }, - success: (response) => { - if (response.json) { - console.log("Service Response", response.json); - } - setIsCadastrarMedicosModalOpen(false); - }, - fail: (e) => { - console.log("Service Error", e); - } - }); - }; - - const onFinishFailed = errorInfo => { - console.log('Failed:', errorInfo); - }; - return ( <> diff --git a/ui/src/components/ListaMedicos.jsx b/ui/src/components/ListaMedicos.jsx index d3e7b90..282a60a 100644 --- a/ui/src/components/ListaMedicos.jsx +++ b/ui/src/components/ListaMedicos.jsx @@ -8,27 +8,7 @@ import { Popconfirm, Button, Table } from 'antd'; import _service from '@netuno/service-client'; -function ListaMedicos() { - const [medicos, setMedicos] = useState([]); - - useEffect(() => { - carregarMedicos(); - }, []); - - const carregarMedicos = () => { - setMedicos([]); - _service({ - url: "/services/medicos", - success: (response) => { - setMedicos(response.json); - }, - fail: (e) => { - console.error("Serviço de medicos falhou.", e); - message.error("Serviço de medicos falhou.", e); - } - }); - }; - +function ListaMedicos({ medicos, setMedicos }) { const handleDelete = record => { _service({ url: `/services/medicos?uid=${record.uid}`, diff --git a/ui/src/containers/DashboardContainer/index.jsx b/ui/src/containers/DashboardContainer/index.jsx index 1afc166..11ead18 100644 --- a/ui/src/containers/DashboardContainer/index.jsx +++ b/ui/src/containers/DashboardContainer/index.jsx @@ -2,6 +2,8 @@ import { useState, useEffect } from "react"; import { Button, Tabs } from 'antd'; +import _service from '@netuno/service-client'; + import ListaMedicos from "../../components/ListaMedicos.jsx"; import ListaPacientes from "../../components/ListaPacientes.jsx"; import CadastrarMedicosModal from "../../components/CadastrarMedicosModal.jsx"; @@ -9,22 +11,41 @@ import LoginModal from "../../components/LoginModal.jsx"; import "./index.less"; -const items = [ - { - key: '1', - label: 'Lista de pacientes', - children: - }, - { - key: '2', - label: 'Lista de médicos', - children: - }, -]; - function DashboardContainer() { const [isCadastrarMedicosModalOpen, setIsCadastrarMedicosModalOpen] = useState(false); const [isLoginModalOpen, setIsLoginModalOpen] = useState(false); + const [medicos, setMedicos] = useState([]); + + useEffect(() => { + carregarMedicos(); + }, []); + + const carregarMedicos = () => { + setMedicos([]); + _service({ + url: "/services/medicos", + success: (response) => { + setMedicos(response.json); + }, + fail: (e) => { + console.error("Serviço de medicos falhou.", e); + message.error("Serviço de medicos falhou.", e); + } + }); + }; + + const items = [ + { + key: '1', + label: 'Lista de pacientes', + children: + }, + { + key: '2', + label: 'Lista de médicos', + children: + }, + ]; const showCadastrarMedicosModal = () => { setIsCadastrarMedicosModalOpen(true); @@ -34,6 +55,45 @@ function DashboardContainer() { setIsLoginModalOpen(true); }; + const onFinish = values => { + _service({ + url: "/services/medicos", + method: "POST", + data: {...values, especialidades: [], convenios: [] }, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Authorization': `Bearer ${localStorage.getItem('access_token')}` + }, + success: (response) => { + if (response.json) { + console.log("Service Response", response.json); + } + + _service({ + url: `/services/medicos?crm=${values.crm}`, + success: (response) => { + values.uid = response.json[0].uid; + setMedicos([...medicos, values]); + setIsCadastrarMedicosModalOpen(false); + }, + fail: (e) => { + console.error("Serviço de medicos falhou.", e); + message.error("Serviço de medicos falhou.", e); + } + }); + + }, + fail: (e) => { + console.log("Service Error", e); + } + }); + }; + + const onFinishFailed = errorInfo => { + console.log('Failed:', errorInfo); + }; + return ( <>