Skip to content
Snippets Groups Projects
Commit e12ee8bb authored by AdrianBeilharz's avatar AdrianBeilharz
Browse files

Empfänger Tabelle hinzugefügt zu Nutzer einstellungen

parent ceda05e3
No related branches found
No related tags found
No related merge requests found
......@@ -9,6 +9,7 @@ import ArztTabelle from './tabellen/ArztTabelle';
import BtmTabelle from './tabellen/BtmTabelle';
import LieferantTabelle from './tabellen/LieferantTabelle';
import PersonalTabelle from './tabellen/PersonalTabelle';
import EmpfaengerTabelle from './tabellen/EmpfaengerTabelle';
import ApothekeEditModal from '../../../modals/ApothekeEditModal';
import './ApothekeEinstellungen.scss'
......@@ -80,6 +81,8 @@ function ApothekeEinstellungen(props) {
return <ArztTabelle {...props} />
} else if (activeMenuItem === 'lieferanten') {
return <LieferantTabelle {...props} />
} else if (activeMenuItem === 'empfaenger') {
return <EmpfaengerTabelle {...props} aktiveRolle={aktiveRolle} />
}
}
......@@ -91,7 +94,7 @@ function ApothekeEinstellungen(props) {
return (
<Fragment>
<ApothekeEditModal {...props} show={showApothekeEditModal} onHide={() => setShowApothekeEditModal(false)} apotheke={apotheke} updateApothekeData={getCurrentApotheke} />
<StatusHeader aktiveRolle={aktiveRolle} />
{aktiveRolle.toLowerCase() !== 'benutzer' ? <StatusHeader aktiveRolle={aktiveRolle} /> : null}
<Header />
<Row className="details-list">
<Col md={{ span: 6, offset: 6 }}>
......@@ -116,6 +119,7 @@ function ApothekeEinstellungen(props) {
<ListGroup.Item as="li" onClick={() => setActiveMenuItem('btm')} active={activeMenuItem === 'btm'}>Betäubungsmittel</ListGroup.Item>
<ListGroup.Item as="li" onClick={() => setActiveMenuItem('aerzte')} active={activeMenuItem === 'aerzte'}>Ärzte</ListGroup.Item>
<ListGroup.Item as="li" onClick={() => setActiveMenuItem('lieferanten')} active={activeMenuItem === 'lieferanten'}>Lieferanten</ListGroup.Item>
<ListGroup.Item as="li" onClick={() => setActiveMenuItem('empfaenger')} active={activeMenuItem === 'empfaenger'}>Empfänger</ListGroup.Item>
</ListGroup>
</Col>
<Col sm={8}>
......
import React, { Fragment, useState, useEffect } from 'react';
import { useParams } from 'react-router-dom';
import { AddBox, Edit, DeleteForever } from '@material-ui/icons';
import { Table, Button } from 'react-bootstrap';
import { useSnackbar } from 'notistack';
import EmpfaengerAddModal from '../../../../modals/EmpfaengerAddModal';
import EmpfaengerEditModal from '../../../../modals/EmpfaengerEditModal';
import DeleteModal from '../../../../modals/DeleteModal';
function EmpfaengerTabelle(props) {
const { apoId } = useParams();
const [empfaengeren, setEmpfaenger] = useState([]);
const { enqueueSnackbar } = useSnackbar();
const [selectedEmpfaenger, setSelectedEmpfaenger] = useState(null);
const [showEmpfaengerAddModal, setShowEmpfaengerAddModal] = useState(false);
const [showEmpfaengerEditModal, setShowEmpfaengerEditModal] = useState(false);
const [showDeleteModal, setShowDeleteModal] = useState(false);
const getEmpfaengerData = () => {
fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/empfaenger`, {
method: 'GET',
headers: {
'Authorization': 'Bearer ' + window.sessionStorage.getItem("edbapo-jwt"),
}
}).then((res) => {
if (res.status === 200) {
return res.json()
} else if (res.status === 403) {
props.history.push('forbidden');
} else if (res.status === 400) {
props.history.push('badrequest');
}
}).then((data) => setEmpfaenger(data)).catch((err) => {
//SHOW ERROR
return;
});
}
const deleteEmpfaenger = () => {
fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/empfaenger/${selectedEmpfaenger.id}`, {
method: 'DELETE',
headers: {
'Authorization': 'Bearer ' + window.sessionStorage.getItem("edbapo-jwt"),
},
}).then((res) => {
if (res.status === 200) {
getEmpfaengerData()
enqueueSnackbar('Empfaenger erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });
} else {
//SHOW ERROR
console.log(res);
}
}).catch((err) => {
//SHOW ERROR
console.log(err);
});
}
const edit = empfaenger => {
setSelectedEmpfaenger(empfaenger);
setShowEmpfaengerEditModal(true);
}
const del = empfaenger => {
setSelectedEmpfaenger(empfaenger);
setShowDeleteModal(true);
}
useEffect(() => {
getEmpfaengerData()
}, [])
return (
<Fragment>
<EmpfaengerAddModal {...props} show={showEmpfaengerAddModal} onHide={() => setShowEmpfaengerAddModal(false)} updateEmpfaengerData={getEmpfaengerData} />
{selectedEmpfaenger ? <EmpfaengerEditModal {...props} empfaenger={selectedEmpfaenger} show={showEmpfaengerEditModal} onHide={() => setShowEmpfaengerEditModal(false)} updateEmpfaengerData={getEmpfaengerData} /> : null}
<DeleteModal {...props} headertext={'Empfaenger löschen'}
maintext={'Möchtest du diesen Empfaenger wirklich löschen?'} onSubmit={deleteEmpfaenger} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}
show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />
<Table striped bordered hover>
<thead>
<tr>
<th>Name</th>
<th>Vorname</th>
<th>Strasse</th>
<th>Ort</th>
<th style={{ textAlign: 'center', verticalAlign: 'middle' }}>
<Button onClick={() => setShowEmpfaengerAddModal(true)} >Hinzufügen <AddBox /></Button>
</th>
</tr>
</thead>
<tbody>
{props.aktiveRolle.toLowerCase() === 'admin' ? empfaengeren.map(empfaenger =>
<tr key={empfaenger.id}>
<td>{empfaenger.name}</td>
<td>{empfaenger.vorname}</td>
<td>{empfaenger.anschrift.strasse} {empfaenger.anschrift.nummer}</td>
<td>{empfaenger.anschrift.plz} {empfaenger.anschrift.ort}</td>
<td style={{ textAlign: 'center', verticalAlign: 'middle' }}>
<Button onClick={() => edit(empfaenger)}><Edit /></Button>
<Button onClick={() => del(empfaenger)}><DeleteForever /></Button>
</td>
</tr>
) : null}
</tbody>
</Table>
{props.aktiveRolle.toLowerCase() !== 'admin' ? <label>Nur Admins ist es erlaubt die Empfänger Tabelle zu sehen aus Datenschutzrechtlichen Gründen. Es können trotzdem neue Nutzer hinzugefügt werden.</label> : null}
</Fragment>
)
}
export default EmpfaengerTabelle;
import React from 'react';
import { useParams } from 'react-router-dom';
import { Modal, Col, Button, Form } from 'react-bootstrap';
import { useSnackbar } from 'notistack';
function NeuesEmpfaengerenModal(props) {
const { apoId } = useParams();
const { enqueueSnackbar } = useSnackbar();
const updateDetails = async event => {
event.preventDefault();
let { name, vorname, plz, ort, strasse, nummer } = event.target;
let body = {
name: name.value,
vorname: vorname.value,
anschrift: {
ort: ort.value,
plz: plz.value,
strasse: strasse.value,
nummer: nummer.value
}
}
fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/empfaenger`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + window.sessionStorage.getItem("edbapo-jwt"),
},
body: JSON.stringify(body)
}).then((res) => {
if (res.status === 201) {
props.onHide();
props.updateEmpfaengerData();
enqueueSnackbar('Empfaenger aktualisiert', { variant: 'success', autoHideDuration: 3000 });
} else if (res.status === 400) {
enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });
}
}).catch((err) => {
console.log(err);
return;
});
}
return (
<Modal
{...props}
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
onExiting={props.onHide}
backdrop="static"
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Liefernat hinzufügen
</Modal.Title>
</Modal.Header>
<Form onSubmit={updateDetails}>
<Modal.Body>
<Form.Row>
<Form.Group as={Col} controlId="name">
<Form.Label>Name</Form.Label>
<Form.Control name="name" required type="text" />
</Form.Group>
<Form.Group as={Col} controlId="vorname">
<Form.Label>Vorname</Form.Label>
<Form.Control name="vorname" required type="text" />
</Form.Group>
</Form.Row>
<Form.Row>
<Form.Group as={Col} sm={9} controlId="strasse">
<Form.Label>Straße</Form.Label>
<Form.Control name="strasse" required type="text" />
</Form.Group>
<Form.Group as={Col} sm={3} controlId="nummer">
<Form.Label>Nummer</Form.Label>
<Form.Control name="nummer" required type="text" />
</Form.Group>
</Form.Row>
<Form.Row>
<Form.Group as={Col} sm={3} controlId="plz">
<Form.Label>PLZ</Form.Label>
<Form.Control name="plz" required type="text" />
</Form.Group>
<Form.Group as={Col} sm={9} controlId="ort">
<Form.Label>Ort</Form.Label>
<Form.Control name="ort" required type="text" />
</Form.Group>
</Form.Row>
</Modal.Body>
<Modal.Footer>
<Button autofocus variant="" onClick={props.onHide}>Abbrechen</Button>
<Button variant="primary" type="submit" >Bestätigen</Button>
</Modal.Footer>
</Form>
</Modal>
)
}
export default NeuesEmpfaengerenModal;
import React from 'react';
import { useParams } from 'react-router-dom';
import { Modal, Col, Button, Form } from 'react-bootstrap';
import { useSnackbar } from 'notistack';
function EmpfaengerUpdateModal(props) {
const { apoId } = useParams();
const { enqueueSnackbar } = useSnackbar();
let { id, name, vorname, anschrift } = props.empfaenger;
const updateDetails = async event => {
event.preventDefault();
let { name, vorname, plz, ort, strasse, nummer } = event.target;
let body = {
name: name.value,
vorname: vorname.value,
apotheke: apoId,
anschrift: {
ort: ort.value,
plz: plz.value,
strasse: strasse.value,
nummer: nummer.value
}
}
fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/empfaenger/${id}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + window.sessionStorage.getItem("edbapo-jwt"),
},
body: JSON.stringify(body)
}).then((res) => {
if (res.status === 200) {
props.onHide();
props.updateEmpfaengerData();
enqueueSnackbar('Empfaenger aktualisiert', { variant: 'success', autoHideDuration: 3000 });
} else if (res.status === 400) {
enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });
} else if (res.status === 403) {
enqueueSnackbar('Falsches Passwort', { variant: 'error', autoHideDuration: 3000 });
}
}).catch((err) => {
console.log(err);
return;
});
}
return (
<Modal
{...props}
size="lg"
aria-labelledby="contained-modal-title-vcenter"
centered
onExiting={props.onHide}
backdrop="static"
>
<Modal.Header closeButton>
<Modal.Title id="contained-modal-title-vcenter">
Empfaenger bearbeiten
</Modal.Title>
</Modal.Header>
<Form onSubmit={updateDetails}>
<Modal.Body>
<Form.Row>
<Form.Group as={Col} controlId="name">
<Form.Label>Name</Form.Label>
<Form.Control name="name" required defaultValue={name} type="text" />
</Form.Group>
<Form.Group as={Col} controlId="vorname">
<Form.Label>Vorname</Form.Label>
<Form.Control name="vorname" required defaultValue={vorname} type="text" />
</Form.Group>
</Form.Row>
<Form.Row>
<Form.Group as={Col} sm={9} controlId="strasse">
<Form.Label>Straße</Form.Label>
<Form.Control name="strasse" required type="text" defaultValue={anschrift.strasse} />
</Form.Group>
<Form.Group as={Col} sm={3} controlId="nummer">
<Form.Label>Nummer</Form.Label>
<Form.Control name="nummer" required type="text" defaultValue={anschrift.nummer} />
</Form.Group>
</Form.Row>
<Form.Row>
<Form.Group as={Col} sm={3} controlId="plz">
<Form.Label>PLZ</Form.Label>
<Form.Control name="plz" required type="text" defaultValue={anschrift.plz} />
</Form.Group>
<Form.Group as={Col} sm={9} controlId="ort">
<Form.Label>Ort</Form.Label>
<Form.Control name="ort" required type="text" defaultValue={anschrift.ort} />
</Form.Group>
</Form.Row>
</Modal.Body>
<Modal.Footer>
<Button autofocus variant="" onClick={props.onHide}>Abbrechen</Button>
<Button variant="primary" type="submit" >Bestätigen</Button>
</Modal.Footer>
</Form>
</Modal>
)
}
export default EmpfaengerUpdateModal;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment