diff --git a/frontend/.eslintcache b/frontend/.eslintcache index e5cec056b0229b68ab5aa590d803994d6910da4c..fb3024e88ac77e09344fbe748459adbfab32b7a5 100644 --- a/frontend/.eslintcache +++ b/frontend/.eslintcache @@ -1 +1 @@ -[{"D:\\dev\\EDB-Apo\\frontend\\src\\index.js":"1","D:\\dev\\EDB-Apo\\frontend\\src\\App.js":"2","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js":"3","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js":"4","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js":"5","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js":"6","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js":"7","D:\\dev\\EDB-Apo\\frontend\\src\\user\\UserDetails.js":"8","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js":"9","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js":"10","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js":"11","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js":"12","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js":"13","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js":"14","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js":"15","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js":"16","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js":"17","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js":"18","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js":"19","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js":"20","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js":"21","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js":"22","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js":"23","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js":"24","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js":"25","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js":"26","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js":"27","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js":"28","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js":"29","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js":"30","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\useForm.js":"31","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js":"32","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\index.js":"33","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\App.js":"34","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js":"35","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js":"36","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js":"37","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js":"38","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js":"39","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js":"40","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js":"41","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js":"42","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\user\\UserDetails.js":"43","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js":"44","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js":"45","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js":"46","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js":"47","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js":"48","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js":"49","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js":"50","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js":"51","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js":"52","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js":"53","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js":"54","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js":"55","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js":"56","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js":"57","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js":"58","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js":"59","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js":"60","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js":"61","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js":"62","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\useForm.js":"63","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js":"64"},{"size":280,"mtime":1607716944341,"results":"65","hashOfConfig":"66"},{"size":1001,"mtime":1608144374606,"results":"67","hashOfConfig":"66"},{"size":291,"mtime":1607953306893,"results":"68","hashOfConfig":"66"},{"size":2352,"mtime":1608144374607,"results":"69","hashOfConfig":"66"},{"size":2301,"mtime":1608045184175,"results":"70","hashOfConfig":"66"},{"size":206,"mtime":1607953306892,"results":"71","hashOfConfig":"66"},{"size":542,"mtime":1607953306893,"results":"72","hashOfConfig":"66"},{"size":1647,"mtime":1607969714791,"results":"73","hashOfConfig":"66"},{"size":4879,"mtime":1607953306892,"results":"74","hashOfConfig":"66"},{"size":11064,"mtime":1608210086311,"results":"75","hashOfConfig":"66"},{"size":8074,"mtime":1608144374607,"results":"76","hashOfConfig":"66"},{"size":4915,"mtime":1608032722487,"results":"77","hashOfConfig":"66"},{"size":1695,"mtime":1608045184175,"results":"78","hashOfConfig":"66"},{"size":1876,"mtime":1608045184174,"results":"79","hashOfConfig":"66"},{"size":4203,"mtime":1607961925919,"results":"80","hashOfConfig":"66"},{"size":3969,"mtime":1607961881960,"results":"81","hashOfConfig":"66"},{"size":4253,"mtime":1607961900285,"results":"82","hashOfConfig":"66"},{"size":3950,"mtime":1607961867240,"results":"83","hashOfConfig":"66"},{"size":5146,"mtime":1608027242688,"results":"84","hashOfConfig":"66"},{"size":1120,"mtime":1607953306894,"results":"85","hashOfConfig":"66"},{"size":6405,"mtime":1608027242688,"results":"86","hashOfConfig":"66"},{"size":4523,"mtime":1607962038625,"results":"87","hashOfConfig":"66"},{"size":3548,"mtime":1608027242688,"results":"88","hashOfConfig":"66"},{"size":5656,"mtime":1607962116356,"results":"89","hashOfConfig":"66"},{"size":3517,"mtime":1608027242688,"results":"90","hashOfConfig":"66"},{"size":3218,"mtime":1608027242688,"results":"91","hashOfConfig":"66"},{"size":3180,"mtime":1608027239646,"results":"92","hashOfConfig":"66"},{"size":3085,"mtime":1608027489589,"results":"93","hashOfConfig":"66"},{"size":7659,"mtime":1607969714791,"results":"94","hashOfConfig":"66"},{"size":9314,"mtime":1608144374608,"results":"95","hashOfConfig":"66"},{"size":716,"mtime":1607716944342,"results":"96","hashOfConfig":"66"},{"size":8268,"mtime":1608144374608,"results":"97","hashOfConfig":"66"},{"size":280,"mtime":1605886436525,"results":"98","hashOfConfig":"99"},{"size":1001,"mtime":1608217485892,"results":"100","hashOfConfig":"99"},{"size":291,"mtime":1607964703644,"results":"101","hashOfConfig":"99"},{"size":2352,"mtime":1608217485903,"results":"102","hashOfConfig":"99"},{"size":4915,"mtime":1608217485901,"results":"103","hashOfConfig":"99"},{"size":206,"mtime":1607964703641,"results":"104","hashOfConfig":"99"},{"size":542,"mtime":1607964703642,"results":"105","hashOfConfig":"99"},{"size":2301,"mtime":1608217485913,"results":"106","hashOfConfig":"99"},{"size":3950,"mtime":1607964703633,"results":"107","hashOfConfig":"99"},{"size":3969,"mtime":1607964703632,"results":"108","hashOfConfig":"99"},{"size":1647,"mtime":1607966091033,"results":"109","hashOfConfig":"99"},{"size":4203,"mtime":1607964703635,"results":"110","hashOfConfig":"99"},{"size":1765,"mtime":1608217485899,"results":"111","hashOfConfig":"99"},{"size":4253,"mtime":1607964703634,"results":"112","hashOfConfig":"99"},{"size":1817,"mtime":1608220768923,"results":"113","hashOfConfig":"99"},{"size":3085,"mtime":1608217485916,"results":"114","hashOfConfig":"99"},{"size":1120,"mtime":1607964703649,"results":"115","hashOfConfig":"99"},{"size":5656,"mtime":1607964703649,"results":"116","hashOfConfig":"99"},{"size":4523,"mtime":1607964703648,"results":"117","hashOfConfig":"99"},{"size":4879,"mtime":1607964703640,"results":"118","hashOfConfig":"99"},{"size":7659,"mtime":1607966243330,"results":"119","hashOfConfig":"99"},{"size":9314,"mtime":1608217485918,"results":"120","hashOfConfig":"99"},{"size":3180,"mtime":1608217485920,"results":"121","hashOfConfig":"99"},{"size":5146,"mtime":1608217485930,"results":"122","hashOfConfig":"99"},{"size":3517,"mtime":1608217485923,"results":"123","hashOfConfig":"99"},{"size":3548,"mtime":1608217485928,"results":"124","hashOfConfig":"99"},{"size":9991,"mtime":1608224672879,"results":"125","hashOfConfig":"99"},{"size":6405,"mtime":1608217485933,"results":"126","hashOfConfig":"99"},{"size":3218,"mtime":1608217485925,"results":"127","hashOfConfig":"99"},{"size":8268,"mtime":1608217485935,"results":"128","hashOfConfig":"99"},{"size":716,"mtime":1607363086075,"results":"129","hashOfConfig":"99"},{"size":8074,"mtime":1608217485908,"results":"130","hashOfConfig":"99"},{"filePath":"131","messages":"132","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},"19g8awo",{"filePath":"134","messages":"135","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"136","usedDeprecatedRules":"133"},{"filePath":"137","messages":"138","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"139","messages":"140","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"141","usedDeprecatedRules":"133"},{"filePath":"142","messages":"143","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"144","usedDeprecatedRules":"133"},{"filePath":"145","messages":"146","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"147","messages":"148","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"149","messages":"150","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"151","usedDeprecatedRules":"133"},{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"154","messages":"155","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"156","messages":"157","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"158","usedDeprecatedRules":"133"},{"filePath":"159","messages":"160","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"161","usedDeprecatedRules":"133"},{"filePath":"162","messages":"163","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"164","usedDeprecatedRules":"133"},{"filePath":"165","messages":"166","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"167","usedDeprecatedRules":"133"},{"filePath":"168","messages":"169","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"170","usedDeprecatedRules":"133"},{"filePath":"171","messages":"172","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"173","usedDeprecatedRules":"133"},{"filePath":"174","messages":"175","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"176","usedDeprecatedRules":"133"},{"filePath":"177","messages":"178","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"179","usedDeprecatedRules":"133"},{"filePath":"180","messages":"181","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"182","usedDeprecatedRules":"133"},{"filePath":"183","messages":"184","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"185","messages":"186","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"187","messages":"188","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"189","messages":"190","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"191","messages":"192","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"193","usedDeprecatedRules":"133"},{"filePath":"194","messages":"195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"196","messages":"197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"202","messages":"203","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"204","messages":"205","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"206","usedDeprecatedRules":"133"},{"filePath":"207","messages":"208","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"209","messages":"210","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"211","usedDeprecatedRules":"133"},{"filePath":"212","messages":"213","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},"ju0hv5",{"filePath":"215","messages":"216","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"136","usedDeprecatedRules":"214"},{"filePath":"217","messages":"218","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"219","messages":"220","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"141","usedDeprecatedRules":"214"},{"filePath":"221","messages":"222","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"161","usedDeprecatedRules":"214"},{"filePath":"223","messages":"224","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"225","messages":"226","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"227","messages":"228","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"144","usedDeprecatedRules":"214"},{"filePath":"229","messages":"230","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"179","usedDeprecatedRules":"214"},{"filePath":"231","messages":"232","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"173","usedDeprecatedRules":"214"},{"filePath":"233","messages":"234","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"151","usedDeprecatedRules":"214"},{"filePath":"235","messages":"236","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"170","usedDeprecatedRules":"214"},{"filePath":"237","messages":"238","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"239","usedDeprecatedRules":"214"},{"filePath":"240","messages":"241","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"176","usedDeprecatedRules":"214"},{"filePath":"242","messages":"243","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"244","messages":"245","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"246","messages":"247","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"248","messages":"249","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"193","usedDeprecatedRules":"214"},{"filePath":"250","messages":"251","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"252","messages":"253","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"254","messages":"255","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"256","messages":"257","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"206","usedDeprecatedRules":"214"},{"filePath":"258","messages":"259","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"260","messages":"261","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"182","usedDeprecatedRules":"214"},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"266","messages":"267","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"268","messages":"269","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"270","messages":"271","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"272","messages":"273","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"211","usedDeprecatedRules":"214"},{"filePath":"274","messages":"275","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"276","messages":"277","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"158","usedDeprecatedRules":"214"},"D:\\dev\\EDB-Apo\\frontend\\src\\index.js",[],["278","279"],"D:\\dev\\EDB-Apo\\frontend\\src\\App.js",["280"],"import React from 'react';\r\nimport './App.scss';\r\nimport { BrowserRouter as Router, Switch, Route, Link } from \"react-router-dom\";\r\nimport Startseite from './components/startseite/Startseite';\r\nimport BTMBuch from './components/btmbuch/BTMBuch';\r\nimport ApothekeEinstellungen from './components/apotheke/einstellungen/ApothekeEinstellungen';\r\nimport { SnackbarProvider } from 'notistack';\r\nrequire('dotenv').config()\r\n\r\nfunction App() {\r\n return (\r\n <React.Fragment>\r\n <SnackbarProvider maxSnack={10} anchorOrigin={{vertical:'bottom', horizontal:'center'}}>\r\n <Router>\r\n <Switch>\r\n <Route path=\"/\" exact component={Startseite} />\r\n <Route path=\"/login\" exact component={Startseite} />\r\n <Route path=\"/apotheke/:apoId\" exact component={BTMBuch} />\r\n <Route path=\"/apotheke/:apoId/einstellungen\" exact component={ApothekeEinstellungen} />\r\n </Switch>\r\n </Router>\r\n </SnackbarProvider>\r\n </React.Fragment>);\r\n}\r\n\r\nexport default App;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js",["281"],"import React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport Header from '../headers/Header'\r\nimport StatusHeader from '../headers/StatusHeader'\r\nimport ApothekenDetails from '../apotheke/ApothekenDetails';\r\nimport UserDetails from '../../user/UserDetails';\r\nimport ApothekeBtmList from '../apotheke/ApothekeBtmList';\r\nimport {Row, Col} from 'react-bootstrap';\r\nimport './BTMBuch.scss'\r\n \r\nfunction BTMBuch (props) {\r\n const { apoId } = useParams();\r\n\r\n const [user, setUser] = useState({});\r\n const [isLoggedIn, setLoggedIn] = useState(false);\r\n const [aktiveRolle, setAktiveRolle] = useState('');\r\n\r\n const getUserDetails = async event => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/benutzer/me`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if(response.status === 200) {\r\n let u = await response.json();\r\n console.log(JSON.stringify(u))\r\n setUser(u);\r\n setAktiveRolle(u.rolle);\r\n setLoggedIn(true);\r\n }else if(response.status === 403) {\r\n props.history.push('/forbidden');\r\n }else if(response.status === 400){\r\n props.history.push('/badrequest');\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getUserDetails();\r\n }, [])\r\n\r\n //this obj is passed to each child, each child can add functions to this object and call functions from this object\r\n let apothekeRefFunctions = {}\r\n \r\n return(\r\n <React.Fragment>\r\n {aktiveRolle.toLowerCase() !== 'benutzer' ?<StatusHeader aktiveRolle={aktiveRolle}/> : null}\r\n <Header />\r\n <Row className=\"details-list\">\r\n <Col><ApothekenDetails {...props} apothekeRefFunctions={apothekeRefFunctions} apothekeId={apoId}/></Col>\r\n <Col>{isLoggedIn ? <UserDetails {...props} user={user} setUser={setUser} aktiveRolle={aktiveRolle} setAktiveRolle={setAktiveRolle}/> : null }</Col>\r\n </Row> \r\n <ApothekeBtmList apothekeId={apoId} user={user} apothekeRefFunctions={apothekeRefFunctions} {...props} aktiveRolle={aktiveRolle}/> \r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default BTMBuch;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js",["282"],"import React, { useState } from 'react';\r\nimport {Row, Col, Button, Form,} from 'react-bootstrap';\r\nimport { useForm } from \"react-hook-form\";\r\nimport ApothekeRegisterModal from '../../modals/ApothekeRegisterModal';\r\nimport './Startseite.scss'\r\n\r\n\r\nfunction Login(props) {\r\n const [neuesApoRegisterModal, setNeuesApoRegisterModal] = useState(false);\r\n const {handleSubmit} = useForm();\r\n const [user, setUser] = useState({username:'', password:''});\r\n \r\n const login = async event => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/login`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n username: user.username,\r\n password: user.password\r\n })\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if(response && response.status === 200){\r\n const data = await response.json();\r\n window.sessionStorage.setItem(\"edbapo-jwt\", data.jwt)\r\n props.history.push(`/apotheke/${data.apothekeId}`);\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"login\">\r\n <b style={{fontSize:'20pt'}}>Login:</b>\r\n <Form onSubmit={handleSubmit(login)} >\r\n <Form.Row>\r\n <Col>\r\n <Form.Control onChange={e => setUser({...user, username: e.target.value})} placeholder=\"Benutzername\" />\r\n <Form.Control onChange={e => setUser({...user, password: e.target.value})} placeholder=\"Passwort\" />\r\n <Button variant=\"primary\" type=\"submit\">Login</Button> \r\n <Button variant=\"primary\" show={neuesApoRegisterModal} onClick={() => setNeuesApoRegisterModal(true)}>Neue Apotheke registrieren</Button>\r\n <ApothekeRegisterModal\r\n show={neuesApoRegisterModal}\r\n {...props}\r\n onHide={() => setNeuesApoRegisterModal(false)} ></ApothekeRegisterModal>\r\n </Col>\r\n </Form.Row>\r\n </Form>\r\n </div>\r\n )\r\n}\r\nexport default Login;","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\user\\UserDetails.js",["283","284","285"],"import React, {useState} from 'react'\r\nimport { Button, Col, Row, Form } from 'react-bootstrap';\r\nimport { Settings } from '@material-ui/icons';\r\nimport UserDetailsUpdateModal from '../modals/UserDetailsUpdateModal';\r\n\r\nfunction UserDetails(props) {\r\n //eslint disable-next-line\r\n const {rolle, vorname, name, nutzername, aktiv} = props.user;\r\n const [showUserSettings, setShowUserSettings] = useState(false);\r\n\r\n var allRoles = {\r\n ADMIN : { 0: \"Admin\", 1 : \"Pruefer\", 2: \"Benutzer\"},\r\n PRUEFER : { 0 : \"Pruefer\", 1: \"Benutzer\"},\r\n BENUTZER : { 0: \"Benutzer\"}\r\n }\r\n\r\n const logout = () => {\r\n window.sessionStorage.removeItem(\"edbapo-jwt\")\r\n props.history.push('/');\r\n }\r\n\r\n return(\r\n <Row>\r\n <UserDetailsUpdateModal {...props} loggedInUser={props.user} show={showUserSettings} onHide={() => setShowUserSettings(false)}/>\r\n\r\n <Col><b>Nutzername:</b> {nutzername}</Col>\r\n <Col>\r\n <Form.Control as=\"select\" onChange={(event) => props.setAktiveRolle(event.target.value.toUpperCase())}>\r\n {Object.keys(allRoles[rolle]).map( role => <option key={allRoles[rolle][role]} value={allRoles[rolle][role]}>{allRoles[rolle][role]}</option>)}\r\n </Form.Control>\r\n </Col>\r\n <Col>\r\n <Button onClick={() => setShowUserSettings(true)}>\r\n <Settings />\r\n Einstellungen\r\n </Button>\r\n </Col>\r\n <Col>\r\n <Button onClick={logout}>Logout</Button>\r\n </Col>\r\n </Row>\r\n )\r\n}\r\n\r\nexport default UserDetails;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js",["286"],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js",["287","288","289"],"import React, { useState, useEffect } from 'react';\r\nimport { Modal, Button, Form, Row, Col } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction NeueBuchungModal(props) {\r\n \r\n const { enqueueSnackbar } = useSnackbar();\r\n const [typ, setTyp] = useState('');\r\n let {lieferanten, aerzte, empfaenger} = props;\r\n\r\n\r\n const [maxMenge, setMaxMenge] = useState(props.btm.btm.menge);\r\n\r\n const sendNewBuchungAnfrage = async (buchungData) => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.apothekeId}/btmbuchung`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(buchungData)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if (response && response.status === 201) {\r\n const data = await response.json();\r\n // console.log(data);\r\n hideModal();\r\n enqueueSnackbar('Buchung erfolgreich angelegt', { variant:'success', autoHideDuration: 3000} );\r\n props.apothekeRefFunctions.updateBtmList();\r\n } else {\r\n //SHOW ERROR\r\n console.log(response);\r\n }\r\n }\r\n\r\n const createNewBuchung = event => {\r\n event.preventDefault();\r\n if (typ.toLowerCase() === 'zugang') {\r\n let { anforderungsschein, btmMenge, lieferant, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ZUGANG',\r\n lieferant: lieferant.value,\r\n anforderungsschein: anforderungsschein.value,\r\n datum: datum.value,\r\n pruefdatum: ''\r\n }\r\n sendNewBuchungAnfrage(buchungData);\r\n } else if (typ.toLowerCase() === 'abgang') {\r\n let { btmMenge, rezept, empfaenger, arzt, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ABGANG',\r\n empfaenger: empfaenger.value,\r\n arzt: arzt.value,\r\n rezept: rezept.value,\r\n pruefdatum: '',\r\n datum: datum.value\r\n }\r\n sendNewBuchungAnfrage(buchungData);\r\n }\r\n }\r\n\r\n const hideModal = () => {\r\n setTyp('');\r\n props.onHide();\r\n }\r\n\r\n useEffect(() => {\r\n setMaxMenge(props.btm.btm.menge)\r\n }, []);\r\n\r\n const renderZugang = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"anforderungsschein\">\r\n <Form.Label column sm=\"2\">\r\n Lieferschein\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"anforderungsschein\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"lieferant\">\r\n <Form.Label column sm=\"2\">\r\n Lieferant\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"lieferant\" required as=\"select\">\r\n {lieferanten.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n\r\n const renderAbgang = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"empfaenger\">\r\n <Form.Label column sm=\"2\">\r\n Empfaenger\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"empfaenger\" required as=\"select\">\r\n {empfaenger.map(e => <option key={e.id} value={e.id}>{e.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"arzt\">\r\n <Form.Label column sm=\"2\">\r\n Arzt\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"arzt\" required as=\"select\">\r\n {aerzte.map(a => <option key={a.id} value={a.id}>{a.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"rezept\">\r\n <Form.Label column sm=\"2\">\r\n Rezept\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"rezept\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={hideModal}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel-Buchung hinzufügen\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={createNewBuchung}>\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"Typ\">\r\n <Col sm={{ span: 10, offset: 2 }}>\r\n <Row sm={6}>\r\n <Form.Check required\r\n type=\"radio\"\r\n label=\"Zugang\"\r\n name=\"TypRadio\"\r\n id=\"ZugangRadio\"\r\n onClick={() => {setTyp('zugang'); setMaxMenge(9999)}}\r\n />\r\n <Form.Check required\r\n type=\"radio\"\r\n label=\"Abgang\"\r\n name=\"TypRadio\"\r\n id=\"AbgangRadio\"\r\n onClick={() => setTyp('abgang')}\r\n />\r\n </Row>\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"btmMenge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"btmMenge\" type=\"number\" min=\"1\" defaultValue=\"0\" />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"datum\">\r\n <Form.Label column sm=\"2\">\r\n Datum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"datum\" type=\"date\" defaultValue={new Date()} />\r\n </Col>\r\n </Form.Group> \r\n\r\n {typ.toLowerCase() === 'zugang' ? renderZugang() : null}\r\n {typ.toLowerCase() === 'abgang' ? renderAbgang() : null}\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"danger\" onClick={hideModal}>Close</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n\r\n\r\n\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default NeueBuchungModal;\r\n\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js",["290"],"import React, { useState, Fragment, useEffect } from 'react';\r\nimport { ListGroup, Button, Row, Col } from 'react-bootstrap';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport Header from '../../headers/Header';\r\nimport StatusHeader from '../../headers/StatusHeader';\r\nimport UserDetails from '../../../user/UserDetails';\r\nimport ArztTabelle from './tabellen/ArztTabelle';\r\nimport BtmTabelle from './tabellen/BtmTabelle';\r\nimport LieferantTabelle from './tabellen/LieferantTabelle';\r\nimport PersonalTabelle from './tabellen/PersonalTabelle';\r\nimport ApothekeEditModal from '../../../modals/ApothekeEditModal';\r\n\r\nimport './ApothekeEinstellungen.scss'\r\n\r\nfunction ApothekeEinstellungen(props) {\r\n const { apoId } = useParams()\r\n\r\n const [apotheke, setApotheke] = useState({ anschrift: {} })\r\n const [activeMenuItem, setActiveMenuItem] = useState('personal');\r\n const [loggedIn, setLoggedIn] = useState(false);\r\n const [aktiveRolle, setAktiveRolle] = useState('');\r\n const [user, setUser] = useState({});\r\n const [showApothekeEditModal, setShowApothekeEditModal] = useState(false);\r\n\r\n\r\n const getCurrentApotheke = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\")\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setApotheke(data))\r\n .catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n })\r\n }\r\n\r\n const getUserData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/benutzer/me`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => {\r\n setUser(data);\r\n setAktiveRolle(data.rolle)\r\n setLoggedIn(true)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n\r\n const renderContent = () => {\r\n if (activeMenuItem === 'personal') {\r\n return <PersonalTabelle {...props} />;\r\n } else if (activeMenuItem === 'btm') {\r\n return <BtmTabelle {...props} />;\r\n } else if (activeMenuItem === 'aerzte') {\r\n return <ArztTabelle {...props} />\r\n } else if (activeMenuItem === 'lieferanten') {\r\n return <LieferantTabelle {...props} />\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getUserData();\r\n getCurrentApotheke();\r\n }, []);\r\n\r\n return (\r\n <Fragment>\r\n <ApothekeEditModal {...props} show={showApothekeEditModal} onHide={() => setShowApothekeEditModal(false)} apotheke={apotheke} updateApothekeData={getCurrentApotheke} />\r\n <StatusHeader aktiveRolle={aktiveRolle} />\r\n <Header />\r\n <Row className=\"details-list\">\r\n <Col md={{ span: 6, offset: 6 }}>\r\n {loggedIn ? <UserDetails {...props} user={user} setUser={setUser} aktiveRolle={aktiveRolle} setAktiveRolle={setAktiveRolle} /> : null}\r\n </Col>\r\n </Row>\r\n <div className=\"main-content\">\r\n <Row>\r\n <Col sm={4}>\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n <li>Anschrift: {apotheke.anschrift.strasse} {apotheke.anschrift.nummer} ({apotheke.anschrift.plz} {apotheke.anschrift.ort})</li>\r\n </ul>\r\n <Button onClick={() => setShowApothekeEditModal(true)}>Angaben bearbeiten</Button>\r\n </Col>\r\n </Row>\r\n <Row style={{ marginTop: '3em' }}>\r\n <Col sm={3}>\r\n <ListGroup as=\"ul\" className=\"menu-list\">\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('personal')} active={activeMenuItem === 'personal'}>Pharmazeutisches Personal</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('btm')} active={activeMenuItem === 'btm'}>Betäubungsmittel</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('aerzte')} active={activeMenuItem === 'aerzte'}>Ärzte</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('lieferanten')} active={activeMenuItem === 'lieferanten'}>Lieferanten</ListGroup.Item>\r\n </ListGroup>\r\n </Col>\r\n <Col sm={8}>\r\n {user ? renderContent() : null}\r\n </Col>\r\n </Row>\r\n </div>\r\n\r\n\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default ApothekeEinstellungen;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js",["291","292"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { Button } from \"react-bootstrap\";\r\nimport NeuesBtmModal from \"../btmbuch/NeuesBtmModal\";\r\nimport \"../../App.scss\";\r\n\r\nfunction ApothekenDetails(props) {\r\n const [apotheke, setApotheke] = useState({ anschrift: {} });\r\n const [neuesBtmModalShow, setneuesBtmModalShow] = useState(false);\r\n\r\n const getApothekeData = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.match.params.apoId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setApotheke(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getApothekeData();\r\n }, []);\r\n\r\n return (\r\n <div className=\"apo-details\">\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n </ul>\r\n <Button >Apotheke Einstellungen</Button>\r\n <Button\r\n onClick={() => setneuesBtmModalShow(true)}\r\n style={{ marginLeft: \"1em\" }}\r\n >\r\n Neues Betäubungsmittel anlegen\r\n </Button>\r\n <NeuesBtmModal\r\n show={neuesBtmModalShow}\r\n {...props}\r\n onHide={() => setneuesBtmModalShow(false)}\r\n />\r\n </div>\r\n );\r\n}\r\nexport default ApothekenDetails;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js",["293","294"],"import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport BuchungTabelle from \"../btmbuch/BuchungTabelle\";\r\n\r\nfunction ApothekeBtmList(props) {\r\n\r\n const { apoId } = useParams();\r\n const [btms, setBtms] = useState([]);\r\n const [input, setInput] = useState(\"\");\r\n\r\n const getBtms = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btmbuchung`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setBtms(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n //wird aufgerufen von NeuesBtmModal wenn ein neues BTM hinzugefügt wurde\r\n props.apothekeRefFunctions.updateBtmList = getBtms;\r\n\r\n useEffect(() => {\r\n getBtms();\r\n }, []);\r\n\r\n return (\r\n <div className=\"btm-buchung-wrapper\">\r\n <input\r\n id=\"searchBtmField\"\r\n type=\"text\"\r\n placeholder=\"Betäubungsmittel suchen\"\r\n onChange={(event) => {\r\n setInput(event.target.value);\r\n }}\r\n value={input}\r\n />\r\n {btms\r\n .filter((val) => {\r\n if (input === \"\") {\r\n console.log(\"namen der Liste\", val.btm.name);\r\n return val;\r\n } else if (val.btm.name.toLowerCase().includes(input.toLowerCase())){\r\n return val;\r\n }\r\n })\r\n .map((btm, key) => (\r\n <BuchungTabelle {...props} btm={btm} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ApothekeBtmList;\r\n\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js",["295"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\n\r\nimport PersonalAddModal from '../../../../modals/PersonalAddModal';\r\nimport PersonalEditModal from '../../../../modals/PersonalEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction PersonalTabelle(props) {\r\n const { apoId } = useParams();\r\n const [personal, setPersonal] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedUser, setSelectedUser] = useState(null);\r\n const [showPersonalAddModal, setShowPersonalAddModal] = useState(false);\r\n const [showPersonalEditModal, setShowPersonalEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n\r\n\r\n const getPersonalData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setPersonal(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteUser = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer/${selectedUser.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res && res.status === 200) {\r\n getPersonalData();\r\n enqueueSnackbar('Benutzer erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const del = user => {\r\n setSelectedUser(user);\r\n setShowDeleteModal(true);\r\n }\r\n const edit = user => {\r\n setSelectedUser(user);\r\n setShowPersonalEditModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getPersonalData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <PersonalAddModal {...props} show={showPersonalAddModal} onHide={() => setShowPersonalAddModal(false)} updatePersonalData={getPersonalData}/>\r\n {selectedUser ? <PersonalEditModal {...props} user={selectedUser} show={showPersonalEditModal} onHide={() => setShowPersonalEditModal(false)} updatePersonalData={getPersonalData}/> : null}\r\n <DeleteModal {...props} headertext={'Benutzer löschen'}\r\n maintext={'Möchtest du diesen Benutzer wirklich löschen?'} onSubmit={deleteUser} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Nutzername</th>\r\n <th>Nachname</th>\r\n <th>Vorname</th>\r\n <th>Aktiv</th>\r\n <th>Rolle</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowPersonalAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {personal.map(user =>\r\n <tr key={user.id}>\r\n <td>{user.nutzername}</td>\r\n <td>{user.name}</td>\r\n <td>{user.vorname}</td>\r\n <td>{user.aktiv ? 'ja' : 'nein'}</td>\r\n <td>{user.rolle}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(user)}><Edit /></Button>\r\n <Button onClick={() => del(user)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default PersonalTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js",["296"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport ArztAddModal from '../../../../modals/ArztAddModal';\r\nimport ArztEditModal from '../../../../modals/ArztEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction ArztTabelle(props) {\r\n const { apoId } = useParams();\r\n const [aerzte, setAerzte] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedArzt, setSelectedArzt] = useState(null);\r\n const [showArztAddModal, setShowArztAddModal] = useState(false);\r\n const [showArztEditModal, setShowArztEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getArztData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/arzt`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setAerzte(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteArzt = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/arzt/${selectedArzt.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getArztData()\r\n enqueueSnackbar('Arzt erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = arzt => {\r\n setSelectedArzt(arzt);\r\n setShowArztEditModal(true);\r\n }\r\n\r\n const del = arzt => {\r\n setSelectedArzt(arzt);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getArztData();\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <ArztAddModal {...props} show={showArztAddModal} onHide={() => setShowArztAddModal(false)} updateArztData={getArztData} />\r\n {selectedArzt ? <ArztEditModal {...props} arzt={selectedArzt} show={showArztEditModal} onHide={() => setShowArztEditModal(false)} updateArztData={getArztData} /> : null}\r\n <DeleteModal {...props} headertext={'Arzt löschen'}\r\n maintext={'Möchtest du diesen Arzt wirklich löschen?'} onSubmit={deleteArzt} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Strasse</th>\r\n <th>Ort</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowArztAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {aerzte.map(arzt =>\r\n <tr key={arzt.id}>\r\n <td>{arzt.name}</td>\r\n <td>{arzt.anschrift.strasse} {arzt.anschrift.nummer}</td>\r\n <td>{arzt.anschrift.plz} {arzt.anschrift.ort}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(arzt)}><Edit /></Button>\r\n <Button onClick={() => del(arzt)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default ArztTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js",["297"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport LieferantAddModal from '../../../../modals/LieferantAddModal';\r\nimport LieferantEditModal from '../../../../modals/LieferantEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction LieferantTabelle(props) {\r\n const { apoId } = useParams();\r\n const [lieferanten, setLieferanten] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedLieferant, setSelectedLieferant] = useState(null);\r\n const [showLieferantAddModal, setShowLieferantAddModal] = useState(false);\r\n const [showLieferantEditModal, setShowLieferantEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getLieferantData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/lieferant`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setLieferanten(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteLieferant = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/lieferant/${selectedLieferant.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getLieferantData()\r\n enqueueSnackbar('Lieferant erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = lieferant => {\r\n setSelectedLieferant(lieferant);\r\n setShowLieferantEditModal(true);\r\n }\r\n\r\n const del = lieferant => {\r\n setSelectedLieferant(lieferant);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getLieferantData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <LieferantAddModal {...props} show={showLieferantAddModal} onHide={() => setShowLieferantAddModal(false)} updateLieferantData={getLieferantData} />\r\n {selectedLieferant ? <LieferantEditModal {...props} lieferant={selectedLieferant} show={showLieferantEditModal} onHide={() => setShowLieferantEditModal(false)} updateLieferantData={getLieferantData} /> : null}\r\n <DeleteModal {...props} headertext={'Lieferant löschen'}\r\n maintext={'Möchtest du diesen Lieferant wirklich löschen?'} onSubmit={deleteLieferant} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Strasse</th>\r\n <th>Ort</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowLieferantAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {lieferanten.map(lieferant =>\r\n <tr key={lieferant.id}>\r\n <td>{lieferant.name}</td>\r\n <td>{lieferant.anschrift.strasse} {lieferant.anschrift.nummer}</td>\r\n <td>{lieferant.anschrift.plz} {lieferant.anschrift.ort}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(lieferant)}><Edit /></Button>\r\n <Button onClick={() => del(lieferant)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default LieferantTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js",["298"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport BtmAddModal from '../../../../modals/BtmAddModal';\r\nimport BtmEditModal from '../../../../modals/BtmEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction BtmTabelle(props) {\r\n const { apoId } = useParams();\r\n const [btmListe, setBtmListe] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedBtm, setSelectedBtm] = useState(null);\r\n const [showBtmAddModal, setShowBtmAddModal] = useState(false);\r\n const [showBtmEditModal, setShowBtmEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getBtmData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setBtmListe(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteBtm = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm/${selectedBtm.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getBtmData()\r\n enqueueSnackbar('Btm erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = btm => {\r\n setSelectedBtm(btm);\r\n setShowBtmEditModal(true);\r\n }\r\n\r\n const del = btm => {\r\n setSelectedBtm(btm);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getBtmData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <BtmAddModal {...props} show={showBtmAddModal} onHide={() => setShowBtmAddModal(false)} updateBtmData={getBtmData} />\r\n {selectedBtm ? <BtmEditModal {...props} btm={selectedBtm} show={showBtmEditModal} onHide={() => setShowBtmEditModal(false)} updateBtmData={getBtmData} /> : null}\r\n <DeleteModal {...props} headertext={'Btm löschen'}\r\n maintext={'Möchtest du diesen Btm wirklich löschen?'} onSubmit={deleteBtm} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Darreichungsform</th>\r\n <th>Einheit</th>\r\n <th>Menge</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowBtmAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {btmListe.map(btm =>\r\n <tr key={btm.id}>\r\n <td>{btm.name}</td>\r\n <td>{btm.darreichungsform}</td>\r\n <td>{btm.einheit}</td>\r\n <td>{btm.menge}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(btm)}><Edit /></Button>\r\n <Button onClick={() => del(btm)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default BtmTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js",["299"],"import React, { useState, useEffect } from 'react';\r\nimport { Modal, Col, Button, Form } from 'react-bootstrap';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction PersonalAddModal(props) {\r\n\r\n const { apoId } = useParams();\r\n\r\n const [nutzernameVergeben, setNutzernameVergeben] = useState(false);\r\n\r\n //for password checking\r\n const [passwordConfirmInvalid, setPasswordConfirmInvalid] = useState(false);\r\n const [newPasswordVal, setNewPasswordVal] = useState('');\r\n const [passwordConfirmVal, setPasswordConfirmVal] = useState('');\r\n\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n let roles = [\"ADMIN\", \"PRUEFER\", \"BENUTZER\"];\r\n\r\n const createNewUser = async event => {\r\n event.preventDefault();\r\n let { username, vorname, nachname, neuesPasswort, rolle } = event.target;\r\n\r\n let body = {\r\n name: nachname.value,\r\n nutzername: username.value,\r\n vorname: vorname.value,\r\n aktiv: true,\r\n rolle: rolle.value,\r\n passwort: neuesPasswort.value\r\n }\r\n\r\n console.log(body)\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(body)\r\n }).then((res) => {\r\n if (res.status === 201) {\r\n props.onHide();\r\n props.updateUserList();\r\n enqueueSnackbar('Benutzer erstellt', { variant: 'success', autoHideDuration: 3000 });\r\n } else if (res.status === 400) {\r\n enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n }\r\n\r\n const checkIfUserNameIsTaken = async event => {\r\n let newUsername = event.target.value;\r\n if (newUsername.length < 4) {\r\n //if shorter than 4 its invalid\r\n setNutzernameVergeben(true);\r\n return;\r\n }\r\n\r\n await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer/${newUsername}/checkUsername`, {\r\n method: 'POST',\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n setNutzernameVergeben(false);\r\n } else if (res.status === 400) {\r\n setNutzernameVergeben(true);\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setPasswordConfirmInvalid(newPasswordVal !== passwordConfirmVal);\r\n }, [newPasswordVal, passwordConfirmVal]);\r\n\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={props.onHide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Personal hinzufügen\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={createNewUser}>\r\n <Modal.Body>\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"username\">\r\n <Form.Label>Benutzername</Form.Label>\r\n <Form.Control name=\"username\" required onChange={checkIfUserNameIsTaken}\r\n isInvalid={nutzernameVergeben} type=\"text\" />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} sm={4} controlId=\"vorname\">\r\n <Form.Label>Vorname</Form.Label>\r\n <Form.Control name=\"vorname\" required type=\"text\" />\r\n </Form.Group>\r\n\r\n <Form.Group as={Col} sm={8} controlId=\"nachname\">\r\n <Form.Label>Nachname</Form.Label>\r\n <Form.Control name=\"nachname\" required type=\"text\" />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"neuesPasswort\">\r\n <Form.Label>Neues Passwort</Form.Label>\r\n <Form.Control required minlength={5} onChange={event => setNewPasswordVal(event.target.value)} name=\"neuesPasswort\" type=\"password\" />\r\n </Form.Group>\r\n <Form.Group as={Col} controlId=\"neuesPasswortConfirm\">\r\n <Form.Label>Neues Passwort bestätigen</Form.Label>\r\n <Form.Control required minlength={5} onChange={event => setPasswordConfirmVal(event.target.value)} isInvalid={passwordConfirmInvalid} name=\"neuesPasswortConfirm\" type=\"password\" />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} sm={4} controlId=\"rolle\">\r\n <Form.Label>Rolle</Form.Label>\r\n <Form.Control required name=\"rolle\" required as=\"select\" >\r\n {roles.map(r => <option key={r} value={r}>{r}</option>)}\r\n </Form.Control>\r\n </Form.Group>\r\n </Form.Row>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button autofocus variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\" >Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default PersonalAddModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js",["300","301","302"],"import React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Modal, Col, Button, Form, Alert, Row } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\nimport { responsiveFontSizes } from '@material-ui/core';\r\n\r\nfunction BtmEditModal(props) {\r\n\r\n const { apoId } = useParams();\r\n\r\n const darreichungsformen = {\r\n 'Tbl': { einheiten: ['Stueck'] },\r\n 'Trp': { einheiten: ['ml'] },\r\n 'Sup': { einheiten: ['Stueck'] },\r\n 'RTA': { einheiten: ['Stueck'] },\r\n 'RKA': { einheiten: ['Stueck'] },\r\n 'Ampullen': { einheiten: ['Stueck'] },\r\n 'Rezeptursubstanz': { einheiten: ['mg', 'g'] },\r\n 'HKP': { einheiten: ['Stueck'] },\r\n 'Pfl': { einheiten: ['Stueck'] }\r\n };\r\n\r\n let { id, darreichungsform, einheit, name, menge } = props.btm;\r\n // console.log(props.btm)\r\n\r\n const [activeDarreichungsform, setActiveDarreichungsform] = useState(darreichungsform);\r\n const [activeEinheit, setActiveEinheit] = useState(einheit);\r\n const [einheiten, setEinheiten] = useState(darreichungsformen[darreichungsform].einheiten);\r\n\r\n const [showError, setShowError] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n\r\n const updateDetails = async event => {\r\n event.preventDefault();\r\n let { name, darreichungsform, einheit, menge } = event.target;\r\n let body = {\r\n name: name.value,\r\n darreichungsform: darreichungsform.value,\r\n einheit: einheit.value,\r\n menge: menge.value\r\n }\r\n console.log(body)\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm/${id}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(body)\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n hide();\r\n props.updateBtmData();\r\n enqueueSnackbar('Benutzer aktualisiert', { variant: 'success', autoHideDuration: 3000 });\r\n } else if (res.status === 400) {\r\n enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });\r\n } else if (responsiveFontSizes.status === 403) {\r\n enqueueSnackbar('Falsches Passwort', { variant: 'error', autoHideDuration: 3000 });\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n\r\n \r\n }\r\n\r\n useEffect(() => {\r\n setActiveDarreichungsform(props.btm.darreichungsform);\r\n setActiveEinheit(props.btm.einheit);\r\n setEinheiten(darreichungsformen[props.btm.darreichungsform].einheiten)\r\n console.log(activeDarreichungsform, activeEinheit, einheiten)\r\n }, [props.btm])\r\n\r\n const hide = () => {\r\n setActiveDarreichungsform(props.btm.darreichungsform);\r\n setActiveEinheit(props.btm.einheit);\r\n setEinheiten(darreichungsformen[props.btm.darreichungsform].einheiten)\r\n props.onHide();\r\n }\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={hide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel bearbeiten\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={updateDetails}>\r\n {showError ? <Alert variant=\"danger\">{errorMessage}</Alert> : null}\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"name\">\r\n <Form.Label column sm=\"2\">\r\n Name\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={name} name=\"name\" required type=\"text\" />\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"menge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={menge} name=\"menge\" type=\"number\" min=\"0\" />\r\n </Col>\r\n </Form.Group>\r\n\r\n\r\n <Form.Group as={Row} controlId=\"darreichungsform\">\r\n <Form.Label column sm=\"2\">\r\n Darreichungsform\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={darreichungsform} onChange={event => {\r\n setActiveDarreichungsform(event.target.value)\r\n setEinheiten(darreichungsformen[event.target.value].einheiten)\r\n }} name=\"darreichungsform\" required as=\"select\">\r\n {\r\n darreichungsformen ? Object.keys(darreichungsformen).map(df => <option kef={df} value={df}>{df}</option>) : null\r\n }\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"einheit\">\r\n <Form.Label column sm=\"2\">\r\n Einheit\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={einheit} name=\"einheit\" required as=\"select\">\r\n {\r\n einheiten ? Object.keys(einheiten).map(e => <option key={einheiten[e]} value={einheiten[e]}>{einheiten[e]}</option>) : null\r\n }\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n\r\n\r\n}\r\n\r\nexport default BtmEditModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js",["303","304","305","306","307","308","309"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport { Modal, Button, Form, Row, Col } from \"react-bootstrap\";\r\nimport { useForm } from \"./useForm\";\r\nimport MobileStepper from \"@material-ui/core/MobileStepper\";\r\nimport KeyboardArrowLeft from \"@material-ui/icons/KeyboardArrowLeft\";\r\nimport KeyboardArrowRight from \"@material-ui/icons/KeyboardArrowRight\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n});\r\n\r\nfunction ApothekeRegisterModal(props) {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [showContinueModal, setShowContinueModal] = useState(false);\r\n const [values, handleChange] = useForm({\r\n name: \"\",\r\n email: \"\",\r\n strasse: \"\",\r\n nummer: \"\",\r\n plz: \"\",\r\n ort: \"\",\r\n vorname: \"\",\r\n nachname: \"\",\r\n nutzername: \"\",\r\n rolle: \"Admin\",\r\n });\r\n\r\n const handleNext = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n setShowContinueModal(true);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n setShowContinueModal(false);\r\n };\r\n\r\n const createNewApo = () => {\r\n let body = {\r\n name: values.name,\r\n email: values.email,\r\n anschrift: {\r\n strasse: values.strasse,\r\n nummer: values.nummer,\r\n plz: values.plz,\r\n ort: values.ort,\r\n },\r\n };\r\n return fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(body),\r\n }).catch((err) => {\r\n console.log(err);\r\n });\r\n };\r\n\r\n const createNewAdmin = (apoId) => {\r\n let body = {\r\n name: values.nachname,\r\n vorname: values.vorname,\r\n nutzername: values.nutzername,\r\n passwort: passwords.password,\r\n rolle: 'ADMIN',\r\n };\r\n\r\n return fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(body),\r\n }\r\n ).catch((err) => {\r\n console.log(err);\r\n });\r\n };\r\n\r\n const login = async () => {\r\n let body = {\r\n username: values.nutzername,\r\n password: passwords.password,\r\n };\r\n return await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/login`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(body),\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n };\r\n\r\n const [passwords, setPasswords] = React.useState({\r\n password: \"\",\r\n passwordCheck: \"\",\r\n });\r\n\r\n function handleChangePassword(e) {\r\n setPasswords({\r\n ...passwords,\r\n [e.target.name]: e.target.value,\r\n });\r\n }\r\n\r\n const handleSubmit = async event => {\r\n event.preventDefault();\r\n\r\n //ERROR HANDLING MISSING\r\n // let { username, neuesPasswort} = event.target;\r\n let apoResponse = await createNewApo();\r\n if (apoResponse.status === 201) {\r\n let apoId = await apoResponse.json();\r\n let adminRespone = await createNewAdmin(apoId.id);\r\n if (adminRespone.status === 201) {\r\n let loginResponse = await login();\r\n if (loginResponse.status === 200) {\r\n const data = await loginResponse.json();\r\n window.sessionStorage.setItem(\"edbapo-jwt\", data.jwt);\r\n props.history.push(`/apotheke/${data.apothekeId}`);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const cancel = () => {\r\n setShowContinueModal(false);\r\n };\r\n\r\n const renderSchritt1 = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Label>1. Schritt Apotheke erstellen</Form.Label>\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"name\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Name der Apotheke\"\r\n name=\"name\"\r\n value={values.name}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"email\">\r\n <Form.Control\r\n required\r\n type=\"email\"\r\n placeholder=\"E-Mail der Apotheke\"\r\n name=\"email\"\r\n value={values.email}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} sm={9} controlId=\"strasse\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Straße\"\r\n name=\"strasse\"\r\n value={values.strasse}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group as={Col} sm={3} controlId=\"nummer\">\r\n <Form.Control\r\n required\r\n type=\"number\"\r\n placeholder=\"Nummer\"\r\n name=\"nummer\"\r\n value={values.nummer}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} sm={3} controlId=\"plz\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"PLZ\"\r\n name=\"plz\"\r\n value={values.plz}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group as={Col} sm={9} controlId=\"ort\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Ort\"\r\n name=\"ort\"\r\n value={values.ort}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n const renderSchritt2 = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Label>2. Schritt Admin Nutzer erstellen</Form.Label>\r\n <Form.Group controllId=\"vorname\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Vorname\"\r\n name=\"vorname\"\r\n value={values.vorname}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"nachname\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Nachname\"\r\n name=\"nachname\"\r\n value={values.nachname}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"nutzername\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Nutzername\"\r\n name=\"nutzername\"\r\n value={values.nutzername}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"password\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"password\"\r\n placeholder=\"Passwort erstellen\"\r\n name=\"password\"\r\n value={passwords.password}\r\n onChange={handleChangePassword}\r\n />\r\n </Form.Group>\r\n <Form.Group>\r\n <Form.Control\r\n required=\"required\"\r\n type=\"password\"\r\n name=\"passwordCheck\"\r\n placeholder=\"Passwort wiederholen\"\r\n value={passwords.passwordCheck}\r\n onChange={handleChangePassword}\r\n />\r\n </Form.Group>\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n return (\r\n <Modal\r\n show={props.show}\r\n onHide={props.onHide}\r\n centered\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n >\r\n <Modal.Header>\r\n <Modal.Title>Neue Apotheke registrieren</Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={handleSubmit}>\r\n <Modal.Body>\r\n {showContinueModal ? renderSchritt2() : renderSchritt1()}\r\n </Modal.Body>\r\n <MobileStepper\r\n variant=\"dots\"\r\n steps={2}\r\n position=\"static\"\r\n activeStep={activeStep}\r\n className={classes.root}\r\n nextButton={\r\n <Button\r\n size=\"small\"\r\n type={activeStep == 1 ? \"submit\" : \"button\"}\r\n onClick={activeStep == 0 ? handleNext : null}\r\n disabled={activeStep === 2}\r\n >\r\n {activeStep === 1 ? 'Registrien' : 'Weiter'}\r\n {theme.direction === \"rtl\" ? (<KeyboardArrowLeft />) : (<KeyboardArrowRight />)}\r\n </Button>\r\n }\r\n backButton={\r\n <Button\r\n size=\"small\"\r\n type={activeStep == 1 ? \"submit\" : \"button\"}\r\n onClick={handleBack}\r\n disabled={activeStep === 0}\r\n >\r\n {theme.direction === \"rtl\" ? (\r\n <KeyboardArrowRight />\r\n ) : (\r\n <KeyboardArrowLeft />\r\n )}\r\n Zurück\r\n </Button>\r\n }\r\n />\r\n </Form>\r\n </Modal>\r\n );\r\n}\r\nexport default ApothekeRegisterModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\useForm.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js",["310"],"import React,{useEffect} from 'react';\r\nimport { Modal, Button, Form, Row, Col } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\nimport { useParams } from 'react-router-dom';\r\n\r\n\r\n\r\nfunction UpdateBuchungModal(props) {\r\n\r\n // let apothekeId = sessionStorage.getItem('apothekeId');\r\n const { apoId } = useParams();\r\n // eslint-disable-next-line\r\n let {lieferanten, aerzte, empfaenger} = props;\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const sendUpdateRequest = async (buchungData) => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btmbuchung/${props.buchung.id}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(buchungData)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if (response && response.status === 200) {\r\n props.onHide();\r\n enqueueSnackbar('Buchung erfolgreich aktualisiert', { variant: 'success', autoHideDuration: 3000 });\r\n props.apothekeRefFunctions.updateBtmList();\r\n } else {\r\n //SHOW ERROR\r\n console.log(response);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n const updateBuchung = event => {\r\n event.preventDefault();\r\n\r\n if (props.buchung.typ.toLowerCase() === 'zugang') {\r\n let { anforderungsschein, btmMenge, lieferant, pruefdatum, datum } = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ZUGANG',\r\n lieferant: lieferant.value,\r\n anforderungsschein: anforderungsschein.value,\r\n pruefdatum: pruefdatum.value,\r\n datum: datum.value\r\n }\r\n sendUpdateRequest(buchungData);\r\n } else if (props.buchung.typ.toLowerCase() === 'abgang') {\r\n let { btmMenge, rezept, empfaenger, arzt, pruefdatum, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ABGANG',\r\n empfaenger: empfaenger.value,\r\n arzt: arzt.value,\r\n rezept: rezept.value,\r\n pruefdatum: pruefdatum.value,\r\n datum: datum.value\r\n }\r\n sendUpdateRequest(buchungData);\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n function Zugang({ buchung }) {\r\n if (buchung.typ) {\r\n if (buchung.typ.toLowerCase() === 'zugang') {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"anforderungsschein\">\r\n <Form.Label column sm=\"2\">\r\n Anforderungsschein\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"anforderungsschein\" type=\"text\" required defaultValue={buchung.anforderungsschein} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"lieferant\">\r\n <Form.Label column sm=\"2\">\r\n Lieferant\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"lieferant\" defaultValue={buchung.lieferant.name} required as=\"select\">\r\n {console.log('lieferanten', lieferanten)} \r\n {lieferanten.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function Abgang({ buchung }) {\r\n if (buchung.typ) {\r\n if (buchung.typ.toLowerCase() === 'abgang') {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"empfaenger\">\r\n <Form.Label column sm=\"2\">\r\n Empfaenger\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"empfaenger\" defaultValue={buchung.empfaenger.name} required as=\"select\">\r\n {empfaenger.map(e => <option key={e.id} value={e.id}>{e.vorname} {e.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"arzt\">\r\n <Form.Label column sm=\"2\">\r\n Arzt\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"arzt\" defaultValue={buchung.arzt.name} required as=\"select\">\r\n {aerzte.map(a => <option key={a.id} value={a.id}>{a.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"rezept\">\r\n <Form.Label column sm=\"2\">\r\n Rezept\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={buchung.rezept} name=\"rezept\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={props.onHide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel-Buchung aktualisieren\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={updateBuchung}>\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"datum\">\r\n <Form.Label column sm=\"2\">\r\n Datum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"datum\" type=\"date\" defaultValue={props.buchung.datum} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"btmMenge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"btmMenge\" type=\"number\" min=\"1\" defaultValue={props.buchung.menge} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"pruefdatum\">\r\n <Form.Label column sm=\"2\">\r\n Prüfdatum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"pruefdatum\" type=\"date\" defaultValue={props.buchung.pruefdatum} />\r\n </Col>\r\n </Form.Group>\r\n <Zugang buchung={props.buchung} />\r\n <Abgang buchung={props.buchung} />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default UpdateBuchungModal;\r\n","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\index.js",[],["311","312"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\App.js",["313"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js",["314"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js",["315"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js",["316"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js",["317"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js",["318"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\user\\UserDetails.js",["319","320","321"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js",["322"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js",["323","324"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams, Link } from 'react-router-dom';\r\nimport { Button } from \"react-bootstrap\";\r\nimport NeuesBtmModal from \"../btmbuch/NeuesBtmModal\";\r\nimport \"../../App.scss\";\r\n\r\nfunction ApothekenDetails(props) {\r\n const [apotheke, setApotheke] = useState({ anschrift: {} });\r\n const [neuesBtmModalShow, setneuesBtmModalShow] = useState(false);\r\n\r\n const getApothekeData = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.match.params.apoId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setApotheke(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getApothekeData();\r\n }, []);\r\n\r\n return (\r\n <div className=\"apo-details\">\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n </ul>\r\n <Link to={`${props.match.params.apoId}/einstellungen`} ><Button >Apotheke Einstellungen</Button></Link>\r\n <Button\r\n onClick={() => setneuesBtmModalShow(true)}\r\n style={{ marginLeft: \"1em\" }}\r\n >\r\n Neues Betäubungsmittel anlegen\r\n </Button>\r\n <NeuesBtmModal\r\n show={neuesBtmModalShow}\r\n {...props}\r\n onHide={() => setneuesBtmModalShow(false)}\r\n />\r\n </div>\r\n );\r\n}\r\nexport default ApothekenDetails;\r\n","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js",["325"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js",["326","327"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js",["328","329","330"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js",["331","332","333","334","335","336","337"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js",["338"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js",["339"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js",["340"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\useForm.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js",["341","342","343"],{"ruleId":"344","replacedBy":"345"},{"ruleId":"346","replacedBy":"347"},{"ruleId":"348","severity":1,"message":"349","line":3,"column":50,"nodeType":"350","messageId":"351","endLine":3,"endColumn":54},{"ruleId":"352","severity":1,"message":"353","line":44,"column":6,"nodeType":"354","endLine":44,"endColumn":8,"suggestions":"355"},{"ruleId":"348","severity":1,"message":"356","line":2,"column":9,"nodeType":"350","messageId":"351","endLine":2,"endColumn":12},{"ruleId":"348","severity":1,"message":"357","line":8,"column":18,"nodeType":"350","messageId":"351","endLine":8,"endColumn":25},{"ruleId":"348","severity":1,"message":"358","line":8,"column":27,"nodeType":"350","messageId":"351","endLine":8,"endColumn":31},{"ruleId":"348","severity":1,"message":"359","line":8,"column":45,"nodeType":"350","messageId":"351","endLine":8,"endColumn":50},{"ruleId":"352","severity":1,"message":"360","line":226,"column":6,"nodeType":"354","endLine":226,"endColumn":8,"suggestions":"361"},{"ruleId":"348","severity":1,"message":"362","line":12,"column":12,"nodeType":"350","messageId":"351","endLine":12,"endColumn":20},{"ruleId":"348","severity":1,"message":"363","line":29,"column":19,"nodeType":"350","messageId":"351","endLine":29,"endColumn":23},{"ruleId":"352","severity":1,"message":"364","line":79,"column":8,"nodeType":"354","endLine":79,"endColumn":10,"suggestions":"365"},{"ruleId":"352","severity":1,"message":"366","line":89,"column":6,"nodeType":"354","endLine":89,"endColumn":8,"suggestions":"367"},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"352","severity":1,"message":"369","line":37,"column":6,"nodeType":"354","endLine":37,"endColumn":8,"suggestions":"370"},{"ruleId":"352","severity":1,"message":"371","line":40,"column":6,"nodeType":"354","endLine":40,"endColumn":8,"suggestions":"372"},{"ruleId":"373","severity":1,"message":"374","line":54,"column":23,"nodeType":"375","messageId":"376","endLine":54,"endColumn":25},{"ruleId":"352","severity":1,"message":"377","line":73,"column":6,"nodeType":"354","endLine":73,"endColumn":8,"suggestions":"378"},{"ruleId":"352","severity":1,"message":"379","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"380"},{"ruleId":"352","severity":1,"message":"381","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"382"},{"ruleId":"352","severity":1,"message":"383","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"384"},{"ruleId":"385","severity":1,"message":"386","line":131,"column":51,"nodeType":"387","endLine":131,"endColumn":59},{"ruleId":"348","severity":1,"message":"388","line":30,"column":21,"nodeType":"350","messageId":"351","endLine":30,"endColumn":33},{"ruleId":"348","severity":1,"message":"389","line":31,"column":24,"nodeType":"350","messageId":"351","endLine":31,"endColumn":39},{"ruleId":"352","severity":1,"message":"390","line":75,"column":6,"nodeType":"354","endLine":75,"endColumn":17,"suggestions":"391"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":17,"nodeType":"350","messageId":"351","endLine":1,"endColumn":26},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"348","severity":1,"message":"356","line":4,"column":31,"nodeType":"350","messageId":"351","endLine":4,"endColumn":34},{"ruleId":"348","severity":1,"message":"393","line":136,"column":9,"nodeType":"350","messageId":"351","endLine":136,"endColumn":15},{"ruleId":"394","severity":1,"message":"395","line":299,"column":32,"nodeType":"396","messageId":"397","endLine":299,"endColumn":34},{"ruleId":"394","severity":1,"message":"395","line":300,"column":35,"nodeType":"396","messageId":"397","endLine":300,"endColumn":37},{"ruleId":"394","severity":1,"message":"395","line":310,"column":32,"nodeType":"396","messageId":"397","endLine":310,"endColumn":34},{"ruleId":"348","severity":1,"message":"392","line":1,"column":15,"nodeType":"350","messageId":"351","endLine":1,"endColumn":24},{"ruleId":"344","replacedBy":"398"},{"ruleId":"346","replacedBy":"399"},{"ruleId":"348","severity":1,"message":"349","line":3,"column":50,"nodeType":"350","messageId":"351","endLine":3,"endColumn":54},{"ruleId":"352","severity":1,"message":"353","line":44,"column":6,"nodeType":"354","endLine":44,"endColumn":8,"suggestions":"400"},{"ruleId":"352","severity":1,"message":"366","line":89,"column":6,"nodeType":"354","endLine":89,"endColumn":8,"suggestions":"401"},{"ruleId":"348","severity":1,"message":"356","line":2,"column":9,"nodeType":"350","messageId":"351","endLine":2,"endColumn":12},{"ruleId":"352","severity":1,"message":"383","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"402"},{"ruleId":"352","severity":1,"message":"379","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"403"},{"ruleId":"348","severity":1,"message":"357","line":8,"column":18,"nodeType":"350","messageId":"351","endLine":8,"endColumn":25},{"ruleId":"348","severity":1,"message":"358","line":8,"column":27,"nodeType":"350","messageId":"351","endLine":8,"endColumn":31},{"ruleId":"348","severity":1,"message":"359","line":8,"column":45,"nodeType":"350","messageId":"351","endLine":8,"endColumn":50},{"ruleId":"352","severity":1,"message":"377","line":73,"column":6,"nodeType":"354","endLine":73,"endColumn":8,"suggestions":"404"},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"352","severity":1,"message":"369","line":37,"column":6,"nodeType":"354","endLine":37,"endColumn":8,"suggestions":"405"},{"ruleId":"352","severity":1,"message":"381","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"406"},{"ruleId":"352","severity":1,"message":"371","line":40,"column":6,"nodeType":"354","endLine":40,"endColumn":8,"suggestions":"407"},{"ruleId":"373","severity":1,"message":"374","line":54,"column":23,"nodeType":"375","messageId":"376","endLine":54,"endColumn":25},{"ruleId":"348","severity":1,"message":"388","line":30,"column":21,"nodeType":"350","messageId":"351","endLine":30,"endColumn":33},{"ruleId":"348","severity":1,"message":"389","line":31,"column":24,"nodeType":"350","messageId":"351","endLine":31,"endColumn":39},{"ruleId":"352","severity":1,"message":"390","line":75,"column":6,"nodeType":"354","endLine":75,"endColumn":17,"suggestions":"408"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":17,"nodeType":"350","messageId":"351","endLine":1,"endColumn":26},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"348","severity":1,"message":"356","line":4,"column":31,"nodeType":"350","messageId":"351","endLine":4,"endColumn":34},{"ruleId":"348","severity":1,"message":"393","line":136,"column":9,"nodeType":"350","messageId":"351","endLine":136,"endColumn":15},{"ruleId":"394","severity":1,"message":"395","line":299,"column":32,"nodeType":"396","messageId":"397","endLine":299,"endColumn":34},{"ruleId":"394","severity":1,"message":"395","line":300,"column":35,"nodeType":"396","messageId":"397","endLine":300,"endColumn":37},{"ruleId":"394","severity":1,"message":"395","line":310,"column":32,"nodeType":"396","messageId":"397","endLine":310,"endColumn":34},{"ruleId":"385","severity":1,"message":"386","line":131,"column":51,"nodeType":"387","endLine":131,"endColumn":59},{"ruleId":"352","severity":1,"message":"360","line":190,"column":6,"nodeType":"354","endLine":190,"endColumn":8,"suggestions":"409"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":15,"nodeType":"350","messageId":"351","endLine":1,"endColumn":24},{"ruleId":"348","severity":1,"message":"362","line":12,"column":12,"nodeType":"350","messageId":"351","endLine":12,"endColumn":20},{"ruleId":"348","severity":1,"message":"363","line":29,"column":19,"nodeType":"350","messageId":"351","endLine":29,"endColumn":23},{"ruleId":"352","severity":1,"message":"364","line":79,"column":8,"nodeType":"354","endLine":79,"endColumn":10,"suggestions":"410"},"no-native-reassign",["411"],"no-negated-in-lhs",["412"],"no-unused-vars","'Link' is defined but never used.","Identifier","unusedVar","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getUserDetails'. Either include it or remove the dependency array.","ArrayExpression",["413"],"'Row' is defined but never used.","'vorname' is assigned a value but never used.","'name' is assigned a value but never used.","'aktiv' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'loadAerzte', 'loadEmpfaenger', and 'loadLieferanten'. Either include them or remove the dependency array.",["414"],"'maxMenge' is assigned a value but never used.","'data' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'props.btm.btm.menge'. Either include it or remove the dependency array. If 'setMaxMenge' needs the current value of 'props.btm.btm.menge', you can also switch to useReducer instead of useState and read 'props.btm.btm.menge' in the reducer.",["415"],"React Hook useEffect has missing dependencies: 'getCurrentApotheke' and 'getUserData'. Either include them or remove the dependency array.",["416"],"'useParams' is defined but never used.","React Hook useEffect has a missing dependency: 'getApothekeData'. Either include it or remove the dependency array.",["417"],"React Hook useEffect has a missing dependency: 'getBtms'. Either include it or remove the dependency array.",["418"],"array-callback-return","Array.prototype.filter() expects a value to be returned at the end of arrow function.","ArrowFunctionExpression","expectedAtEnd","React Hook useEffect has a missing dependency: 'getPersonalData'. Either include it or remove the dependency array.",["419"],"React Hook useEffect has a missing dependency: 'getArztData'. Either include it or remove the dependency array.",["420"],"React Hook useEffect has a missing dependency: 'getLieferantData'. Either include it or remove the dependency array.",["421"],"React Hook useEffect has a missing dependency: 'getBtmData'. Either include it or remove the dependency array.",["422"],"react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","'setShowError' is assigned a value but never used.","'setErrorMessage' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'activeDarreichungsform', 'activeEinheit', 'darreichungsformen', and 'einheiten'. Either include them or remove the dependency array.",["423"],"'useEffect' is defined but never used.","'cancel' is assigned a value but never used.","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected",["411"],["412"],["424"],["425"],["426"],["427"],["428"],["429"],["430"],["431"],["432"],["433"],["434"],"no-global-assign","no-unsafe-negation",{"desc":"435","fix":"436"},{"desc":"437","fix":"438"},{"desc":"439","fix":"440"},{"desc":"441","fix":"442"},{"desc":"443","fix":"444"},{"desc":"445","fix":"446"},{"desc":"447","fix":"448"},{"desc":"449","fix":"450"},{"desc":"451","fix":"452"},{"desc":"453","fix":"454"},{"desc":"455","fix":"456"},{"desc":"435","fix":"457"},{"desc":"441","fix":"458"},{"desc":"453","fix":"459"},{"desc":"449","fix":"460"},{"desc":"447","fix":"461"},{"desc":"443","fix":"462"},{"desc":"451","fix":"463"},{"desc":"445","fix":"464"},{"desc":"455","fix":"465"},{"desc":"437","fix":"466"},{"desc":"439","fix":"467"},"Update the dependencies array to be: [getUserDetails]",{"range":"468","text":"469"},"Update the dependencies array to be: [loadAerzte, loadEmpfaenger, loadLieferanten]",{"range":"470","text":"471"},"Update the dependencies array to be: [props.btm.btm.menge]",{"range":"472","text":"473"},"Update the dependencies array to be: [getCurrentApotheke, getUserData]",{"range":"474","text":"475"},"Update the dependencies array to be: [getApothekeData]",{"range":"476","text":"477"},"Update the dependencies array to be: [getBtms]",{"range":"478","text":"479"},"Update the dependencies array to be: [getPersonalData]",{"range":"480","text":"481"},"Update the dependencies array to be: [getArztData]",{"range":"482","text":"483"},"Update the dependencies array to be: [getLieferantData]",{"range":"484","text":"485"},"Update the dependencies array to be: [getBtmData]",{"range":"486","text":"487"},"Update the dependencies array to be: [activeDarreichungsform, activeEinheit, darreichungsformen, einheiten, props.btm]",{"range":"488","text":"489"},{"range":"490","text":"469"},{"range":"491","text":"475"},{"range":"492","text":"487"},{"range":"493","text":"483"},{"range":"494","text":"481"},{"range":"495","text":"477"},{"range":"496","text":"485"},{"range":"497","text":"479"},{"range":"498","text":"489"},{"range":"499","text":"471"},{"range":"500","text":"473"},[1478,1480],"[getUserDetails]",[6832,6834],"[loadAerzte, loadEmpfaenger, loadLieferanten]",[2781,2783],"[props.btm.btm.menge]",[2921,2923],"[getCurrentApotheke, getUserData]",[1118,1120],"[getApothekeData]",[1141,1143],"[getBtms]",[2410,2412],"[getPersonalData]",[2331,2333],"[getArztData]",[2475,2477],"[getLieferantData]",[2310,2312],"[getBtmData]",[2744,2755],"[activeDarreichungsform, activeEinheit, darreichungsformen, einheiten, props.btm]",[1478,1480],[2921,2923],[2310,2312],[2331,2333],[2410,2412],[1125,1127],[2475,2477],[1141,1143],[2744,2755],[5974,5976],[2781,2783]] \ No newline at end of file +[{"D:\\dev\\EDB-Apo\\frontend\\src\\index.js":"1","D:\\dev\\EDB-Apo\\frontend\\src\\App.js":"2","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js":"3","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js":"4","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js":"5","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js":"6","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js":"7","D:\\dev\\EDB-Apo\\frontend\\src\\user\\UserDetails.js":"8","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js":"9","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js":"10","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js":"11","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js":"12","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js":"13","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js":"14","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js":"15","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js":"16","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js":"17","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js":"18","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js":"19","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js":"20","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js":"21","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js":"22","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js":"23","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js":"24","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js":"25","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js":"26","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js":"27","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js":"28","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js":"29","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js":"30","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\useForm.js":"31","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js":"32","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\index.js":"33","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\App.js":"34","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js":"35","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js":"36","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js":"37","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js":"38","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js":"39","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js":"40","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js":"41","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js":"42","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\user\\UserDetails.js":"43","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js":"44","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js":"45","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js":"46","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js":"47","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js":"48","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js":"49","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js":"50","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js":"51","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js":"52","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js":"53","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js":"54","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js":"55","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js":"56","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js":"57","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js":"58","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js":"59","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js":"60","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js":"61","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js":"62","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\useForm.js":"63","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js":"64"},{"size":280,"mtime":1607716944341,"results":"65","hashOfConfig":"66"},{"size":1001,"mtime":1608144374606,"results":"67","hashOfConfig":"66"},{"size":291,"mtime":1607953306893,"results":"68","hashOfConfig":"66"},{"size":2352,"mtime":1608144374607,"results":"69","hashOfConfig":"66"},{"size":2301,"mtime":1608045184175,"results":"70","hashOfConfig":"66"},{"size":206,"mtime":1607953306892,"results":"71","hashOfConfig":"66"},{"size":542,"mtime":1607953306893,"results":"72","hashOfConfig":"66"},{"size":1647,"mtime":1607969714791,"results":"73","hashOfConfig":"66"},{"size":4879,"mtime":1607953306892,"results":"74","hashOfConfig":"66"},{"size":11064,"mtime":1608210086311,"results":"75","hashOfConfig":"66"},{"size":8074,"mtime":1608144374607,"results":"76","hashOfConfig":"66"},{"size":4915,"mtime":1608032722487,"results":"77","hashOfConfig":"66"},{"size":1695,"mtime":1608045184175,"results":"78","hashOfConfig":"66"},{"size":1876,"mtime":1608045184174,"results":"79","hashOfConfig":"66"},{"size":4203,"mtime":1607961925919,"results":"80","hashOfConfig":"66"},{"size":3969,"mtime":1607961881960,"results":"81","hashOfConfig":"66"},{"size":4253,"mtime":1607961900285,"results":"82","hashOfConfig":"66"},{"size":3950,"mtime":1607961867240,"results":"83","hashOfConfig":"66"},{"size":5146,"mtime":1608027242688,"results":"84","hashOfConfig":"66"},{"size":1120,"mtime":1607953306894,"results":"85","hashOfConfig":"66"},{"size":6405,"mtime":1608027242688,"results":"86","hashOfConfig":"66"},{"size":4523,"mtime":1607962038625,"results":"87","hashOfConfig":"66"},{"size":3548,"mtime":1608027242688,"results":"88","hashOfConfig":"66"},{"size":5656,"mtime":1607962116356,"results":"89","hashOfConfig":"66"},{"size":3517,"mtime":1608027242688,"results":"90","hashOfConfig":"66"},{"size":3218,"mtime":1608027242688,"results":"91","hashOfConfig":"66"},{"size":3180,"mtime":1608027239646,"results":"92","hashOfConfig":"66"},{"size":3085,"mtime":1608027489589,"results":"93","hashOfConfig":"66"},{"size":7659,"mtime":1607969714791,"results":"94","hashOfConfig":"66"},{"size":9314,"mtime":1608144374608,"results":"95","hashOfConfig":"66"},{"size":716,"mtime":1607716944342,"results":"96","hashOfConfig":"66"},{"size":8268,"mtime":1608144374608,"results":"97","hashOfConfig":"66"},{"size":280,"mtime":1605886436525,"results":"98","hashOfConfig":"99"},{"size":1001,"mtime":1608217485892,"results":"100","hashOfConfig":"99"},{"size":291,"mtime":1607964703644,"results":"101","hashOfConfig":"99"},{"size":2352,"mtime":1608217485903,"results":"102","hashOfConfig":"99"},{"size":4915,"mtime":1608217485901,"results":"103","hashOfConfig":"99"},{"size":206,"mtime":1607964703641,"results":"104","hashOfConfig":"99"},{"size":542,"mtime":1607964703642,"results":"105","hashOfConfig":"99"},{"size":2301,"mtime":1608217485913,"results":"106","hashOfConfig":"99"},{"size":3950,"mtime":1607964703633,"results":"107","hashOfConfig":"99"},{"size":3969,"mtime":1607964703632,"results":"108","hashOfConfig":"99"},{"size":1647,"mtime":1607966091033,"results":"109","hashOfConfig":"99"},{"size":4203,"mtime":1607964703635,"results":"110","hashOfConfig":"99"},{"size":1765,"mtime":1608217485899,"results":"111","hashOfConfig":"99"},{"size":4253,"mtime":1607964703634,"results":"112","hashOfConfig":"99"},{"size":1817,"mtime":1608220768923,"results":"113","hashOfConfig":"99"},{"size":3085,"mtime":1608217485916,"results":"114","hashOfConfig":"99"},{"size":1120,"mtime":1607964703649,"results":"115","hashOfConfig":"99"},{"size":5656,"mtime":1607964703649,"results":"116","hashOfConfig":"99"},{"size":4523,"mtime":1607964703648,"results":"117","hashOfConfig":"99"},{"size":4879,"mtime":1607964703640,"results":"118","hashOfConfig":"99"},{"size":7659,"mtime":1607966243330,"results":"119","hashOfConfig":"99"},{"size":9314,"mtime":1608217485918,"results":"120","hashOfConfig":"99"},{"size":3180,"mtime":1608217485920,"results":"121","hashOfConfig":"99"},{"size":5146,"mtime":1608217485930,"results":"122","hashOfConfig":"99"},{"size":3517,"mtime":1608217485923,"results":"123","hashOfConfig":"99"},{"size":3548,"mtime":1608217485928,"results":"124","hashOfConfig":"99"},{"size":10056,"mtime":1608224834868,"results":"125","hashOfConfig":"99"},{"size":6405,"mtime":1608217485933,"results":"126","hashOfConfig":"99"},{"size":3218,"mtime":1608217485925,"results":"127","hashOfConfig":"99"},{"size":8268,"mtime":1608217485935,"results":"128","hashOfConfig":"99"},{"size":716,"mtime":1607363086075,"results":"129","hashOfConfig":"99"},{"size":8074,"mtime":1608217485908,"results":"130","hashOfConfig":"99"},{"filePath":"131","messages":"132","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},"19g8awo",{"filePath":"134","messages":"135","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"136","usedDeprecatedRules":"133"},{"filePath":"137","messages":"138","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"139","messages":"140","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"141","usedDeprecatedRules":"133"},{"filePath":"142","messages":"143","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"144","usedDeprecatedRules":"133"},{"filePath":"145","messages":"146","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"147","messages":"148","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"149","messages":"150","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"151","usedDeprecatedRules":"133"},{"filePath":"152","messages":"153","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"154","messages":"155","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"156","messages":"157","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"158","usedDeprecatedRules":"133"},{"filePath":"159","messages":"160","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"161","usedDeprecatedRules":"133"},{"filePath":"162","messages":"163","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"164","usedDeprecatedRules":"133"},{"filePath":"165","messages":"166","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"167","usedDeprecatedRules":"133"},{"filePath":"168","messages":"169","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"170","usedDeprecatedRules":"133"},{"filePath":"171","messages":"172","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"173","usedDeprecatedRules":"133"},{"filePath":"174","messages":"175","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"176","usedDeprecatedRules":"133"},{"filePath":"177","messages":"178","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"179","usedDeprecatedRules":"133"},{"filePath":"180","messages":"181","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"182","usedDeprecatedRules":"133"},{"filePath":"183","messages":"184","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"185","messages":"186","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"187","messages":"188","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"189","messages":"190","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"191","messages":"192","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"193","usedDeprecatedRules":"133"},{"filePath":"194","messages":"195","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"196","messages":"197","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"198","messages":"199","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"200","messages":"201","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"202","messages":"203","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"204","messages":"205","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"206","usedDeprecatedRules":"133"},{"filePath":"207","messages":"208","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"133"},{"filePath":"209","messages":"210","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"211","usedDeprecatedRules":"133"},{"filePath":"212","messages":"213","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},"ju0hv5",{"filePath":"215","messages":"216","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"136","usedDeprecatedRules":"214"},{"filePath":"217","messages":"218","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"219","messages":"220","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"141","usedDeprecatedRules":"214"},{"filePath":"221","messages":"222","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"161","usedDeprecatedRules":"214"},{"filePath":"223","messages":"224","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"225","messages":"226","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"227","messages":"228","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"144","usedDeprecatedRules":"214"},{"filePath":"229","messages":"230","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"179","usedDeprecatedRules":"214"},{"filePath":"231","messages":"232","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"173","usedDeprecatedRules":"214"},{"filePath":"233","messages":"234","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"151","usedDeprecatedRules":"214"},{"filePath":"235","messages":"236","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"170","usedDeprecatedRules":"214"},{"filePath":"237","messages":"238","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":"239","usedDeprecatedRules":"214"},{"filePath":"240","messages":"241","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"176","usedDeprecatedRules":"214"},{"filePath":"242","messages":"243","errorCount":0,"warningCount":2,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"244","messages":"245","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"246","messages":"247","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"248","messages":"249","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"193","usedDeprecatedRules":"214"},{"filePath":"250","messages":"251","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"252","messages":"253","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"254","messages":"255","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"256","messages":"257","errorCount":0,"warningCount":7,"fixableErrorCount":0,"fixableWarningCount":0,"source":"206","usedDeprecatedRules":"214"},{"filePath":"258","messages":"259","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"260","messages":"261","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"182","usedDeprecatedRules":"214"},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"266","messages":"267","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"268","messages":"269","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"270","messages":"271","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"272","messages":"273","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":"211","usedDeprecatedRules":"214"},{"filePath":"274","messages":"275","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0,"usedDeprecatedRules":"214"},{"filePath":"276","messages":"277","errorCount":0,"warningCount":3,"fixableErrorCount":0,"fixableWarningCount":0,"source":"158","usedDeprecatedRules":"214"},"D:\\dev\\EDB-Apo\\frontend\\src\\index.js",[],["278","279"],"D:\\dev\\EDB-Apo\\frontend\\src\\App.js",["280"],"import React from 'react';\r\nimport './App.scss';\r\nimport { BrowserRouter as Router, Switch, Route, Link } from \"react-router-dom\";\r\nimport Startseite from './components/startseite/Startseite';\r\nimport BTMBuch from './components/btmbuch/BTMBuch';\r\nimport ApothekeEinstellungen from './components/apotheke/einstellungen/ApothekeEinstellungen';\r\nimport { SnackbarProvider } from 'notistack';\r\nrequire('dotenv').config()\r\n\r\nfunction App() {\r\n return (\r\n <React.Fragment>\r\n <SnackbarProvider maxSnack={10} anchorOrigin={{vertical:'bottom', horizontal:'center'}}>\r\n <Router>\r\n <Switch>\r\n <Route path=\"/\" exact component={Startseite} />\r\n <Route path=\"/login\" exact component={Startseite} />\r\n <Route path=\"/apotheke/:apoId\" exact component={BTMBuch} />\r\n <Route path=\"/apotheke/:apoId/einstellungen\" exact component={ApothekeEinstellungen} />\r\n </Switch>\r\n </Router>\r\n </SnackbarProvider>\r\n </React.Fragment>);\r\n}\r\n\r\nexport default App;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js",["281"],"import React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport Header from '../headers/Header'\r\nimport StatusHeader from '../headers/StatusHeader'\r\nimport ApothekenDetails from '../apotheke/ApothekenDetails';\r\nimport UserDetails from '../../user/UserDetails';\r\nimport ApothekeBtmList from '../apotheke/ApothekeBtmList';\r\nimport {Row, Col} from 'react-bootstrap';\r\nimport './BTMBuch.scss'\r\n \r\nfunction BTMBuch (props) {\r\n const { apoId } = useParams();\r\n\r\n const [user, setUser] = useState({});\r\n const [isLoggedIn, setLoggedIn] = useState(false);\r\n const [aktiveRolle, setAktiveRolle] = useState('');\r\n\r\n const getUserDetails = async event => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/benutzer/me`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if(response.status === 200) {\r\n let u = await response.json();\r\n console.log(JSON.stringify(u))\r\n setUser(u);\r\n setAktiveRolle(u.rolle);\r\n setLoggedIn(true);\r\n }else if(response.status === 403) {\r\n props.history.push('/forbidden');\r\n }else if(response.status === 400){\r\n props.history.push('/badrequest');\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getUserDetails();\r\n }, [])\r\n\r\n //this obj is passed to each child, each child can add functions to this object and call functions from this object\r\n let apothekeRefFunctions = {}\r\n \r\n return(\r\n <React.Fragment>\r\n {aktiveRolle.toLowerCase() !== 'benutzer' ?<StatusHeader aktiveRolle={aktiveRolle}/> : null}\r\n <Header />\r\n <Row className=\"details-list\">\r\n <Col><ApothekenDetails {...props} apothekeRefFunctions={apothekeRefFunctions} apothekeId={apoId}/></Col>\r\n <Col>{isLoggedIn ? <UserDetails {...props} user={user} setUser={setUser} aktiveRolle={aktiveRolle} setAktiveRolle={setAktiveRolle}/> : null }</Col>\r\n </Row> \r\n <ApothekeBtmList apothekeId={apoId} user={user} apothekeRefFunctions={apothekeRefFunctions} {...props} aktiveRolle={aktiveRolle}/> \r\n </React.Fragment>\r\n )\r\n}\r\n\r\nexport default BTMBuch;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js",["282"],"import React, { useState } from 'react';\r\nimport {Row, Col, Button, Form,} from 'react-bootstrap';\r\nimport { useForm } from \"react-hook-form\";\r\nimport ApothekeRegisterModal from '../../modals/ApothekeRegisterModal';\r\nimport './Startseite.scss'\r\n\r\n\r\nfunction Login(props) {\r\n const [neuesApoRegisterModal, setNeuesApoRegisterModal] = useState(false);\r\n const {handleSubmit} = useForm();\r\n const [user, setUser] = useState({username:'', password:''});\r\n \r\n const login = async event => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/login`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n username: user.username,\r\n password: user.password\r\n })\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if(response && response.status === 200){\r\n const data = await response.json();\r\n window.sessionStorage.setItem(\"edbapo-jwt\", data.jwt)\r\n props.history.push(`/apotheke/${data.apothekeId}`);\r\n }\r\n }\r\n\r\n return (\r\n <div className=\"login\">\r\n <b style={{fontSize:'20pt'}}>Login:</b>\r\n <Form onSubmit={handleSubmit(login)} >\r\n <Form.Row>\r\n <Col>\r\n <Form.Control onChange={e => setUser({...user, username: e.target.value})} placeholder=\"Benutzername\" />\r\n <Form.Control onChange={e => setUser({...user, password: e.target.value})} placeholder=\"Passwort\" />\r\n <Button variant=\"primary\" type=\"submit\">Login</Button> \r\n <Button variant=\"primary\" show={neuesApoRegisterModal} onClick={() => setNeuesApoRegisterModal(true)}>Neue Apotheke registrieren</Button>\r\n <ApothekeRegisterModal\r\n show={neuesApoRegisterModal}\r\n {...props}\r\n onHide={() => setNeuesApoRegisterModal(false)} ></ApothekeRegisterModal>\r\n </Col>\r\n </Form.Row>\r\n </Form>\r\n </div>\r\n )\r\n}\r\nexport default Login;","D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\user\\UserDetails.js",["283","284","285"],"import React, {useState} from 'react'\r\nimport { Button, Col, Row, Form } from 'react-bootstrap';\r\nimport { Settings } from '@material-ui/icons';\r\nimport UserDetailsUpdateModal from '../modals/UserDetailsUpdateModal';\r\n\r\nfunction UserDetails(props) {\r\n //eslint disable-next-line\r\n const {rolle, vorname, name, nutzername, aktiv} = props.user;\r\n const [showUserSettings, setShowUserSettings] = useState(false);\r\n\r\n var allRoles = {\r\n ADMIN : { 0: \"Admin\", 1 : \"Pruefer\", 2: \"Benutzer\"},\r\n PRUEFER : { 0 : \"Pruefer\", 1: \"Benutzer\"},\r\n BENUTZER : { 0: \"Benutzer\"}\r\n }\r\n\r\n const logout = () => {\r\n window.sessionStorage.removeItem(\"edbapo-jwt\")\r\n props.history.push('/');\r\n }\r\n\r\n return(\r\n <Row>\r\n <UserDetailsUpdateModal {...props} loggedInUser={props.user} show={showUserSettings} onHide={() => setShowUserSettings(false)}/>\r\n\r\n <Col><b>Nutzername:</b> {nutzername}</Col>\r\n <Col>\r\n <Form.Control as=\"select\" onChange={(event) => props.setAktiveRolle(event.target.value.toUpperCase())}>\r\n {Object.keys(allRoles[rolle]).map( role => <option key={allRoles[rolle][role]} value={allRoles[rolle][role]}>{allRoles[rolle][role]}</option>)}\r\n </Form.Control>\r\n </Col>\r\n <Col>\r\n <Button onClick={() => setShowUserSettings(true)}>\r\n <Settings />\r\n Einstellungen\r\n </Button>\r\n </Col>\r\n <Col>\r\n <Button onClick={logout}>Logout</Button>\r\n </Col>\r\n </Row>\r\n )\r\n}\r\n\r\nexport default UserDetails;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js",["286"],"D:\\dev\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js",["287","288","289"],"import React, { useState, useEffect } from 'react';\r\nimport { Modal, Button, Form, Row, Col } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction NeueBuchungModal(props) {\r\n \r\n const { enqueueSnackbar } = useSnackbar();\r\n const [typ, setTyp] = useState('');\r\n let {lieferanten, aerzte, empfaenger} = props;\r\n\r\n\r\n const [maxMenge, setMaxMenge] = useState(props.btm.btm.menge);\r\n\r\n const sendNewBuchungAnfrage = async (buchungData) => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.apothekeId}/btmbuchung`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(buchungData)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if (response && response.status === 201) {\r\n const data = await response.json();\r\n // console.log(data);\r\n hideModal();\r\n enqueueSnackbar('Buchung erfolgreich angelegt', { variant:'success', autoHideDuration: 3000} );\r\n props.apothekeRefFunctions.updateBtmList();\r\n } else {\r\n //SHOW ERROR\r\n console.log(response);\r\n }\r\n }\r\n\r\n const createNewBuchung = event => {\r\n event.preventDefault();\r\n if (typ.toLowerCase() === 'zugang') {\r\n let { anforderungsschein, btmMenge, lieferant, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ZUGANG',\r\n lieferant: lieferant.value,\r\n anforderungsschein: anforderungsschein.value,\r\n datum: datum.value,\r\n pruefdatum: ''\r\n }\r\n sendNewBuchungAnfrage(buchungData);\r\n } else if (typ.toLowerCase() === 'abgang') {\r\n let { btmMenge, rezept, empfaenger, arzt, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ABGANG',\r\n empfaenger: empfaenger.value,\r\n arzt: arzt.value,\r\n rezept: rezept.value,\r\n pruefdatum: '',\r\n datum: datum.value\r\n }\r\n sendNewBuchungAnfrage(buchungData);\r\n }\r\n }\r\n\r\n const hideModal = () => {\r\n setTyp('');\r\n props.onHide();\r\n }\r\n\r\n useEffect(() => {\r\n setMaxMenge(props.btm.btm.menge)\r\n }, []);\r\n\r\n const renderZugang = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"anforderungsschein\">\r\n <Form.Label column sm=\"2\">\r\n Lieferschein\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"anforderungsschein\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"lieferant\">\r\n <Form.Label column sm=\"2\">\r\n Lieferant\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"lieferant\" required as=\"select\">\r\n {lieferanten.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n\r\n const renderAbgang = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"empfaenger\">\r\n <Form.Label column sm=\"2\">\r\n Empfaenger\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"empfaenger\" required as=\"select\">\r\n {empfaenger.map(e => <option key={e.id} value={e.id}>{e.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"arzt\">\r\n <Form.Label column sm=\"2\">\r\n Arzt\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"arzt\" required as=\"select\">\r\n {aerzte.map(a => <option key={a.id} value={a.id}>{a.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"rezept\">\r\n <Form.Label column sm=\"2\">\r\n Rezept\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"rezept\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={hideModal}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel-Buchung hinzufügen\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={createNewBuchung}>\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"Typ\">\r\n <Col sm={{ span: 10, offset: 2 }}>\r\n <Row sm={6}>\r\n <Form.Check required\r\n type=\"radio\"\r\n label=\"Zugang\"\r\n name=\"TypRadio\"\r\n id=\"ZugangRadio\"\r\n onClick={() => {setTyp('zugang'); setMaxMenge(9999)}}\r\n />\r\n <Form.Check required\r\n type=\"radio\"\r\n label=\"Abgang\"\r\n name=\"TypRadio\"\r\n id=\"AbgangRadio\"\r\n onClick={() => setTyp('abgang')}\r\n />\r\n </Row>\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"btmMenge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"btmMenge\" type=\"number\" min=\"1\" defaultValue=\"0\" />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"datum\">\r\n <Form.Label column sm=\"2\">\r\n Datum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"datum\" type=\"date\" defaultValue={new Date()} />\r\n </Col>\r\n </Form.Group> \r\n\r\n {typ.toLowerCase() === 'zugang' ? renderZugang() : null}\r\n {typ.toLowerCase() === 'abgang' ? renderAbgang() : null}\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"danger\" onClick={hideModal}>Close</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n\r\n\r\n\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default NeueBuchungModal;\r\n\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js",["290"],"import React, { useState, Fragment, useEffect } from 'react';\r\nimport { ListGroup, Button, Row, Col } from 'react-bootstrap';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport Header from '../../headers/Header';\r\nimport StatusHeader from '../../headers/StatusHeader';\r\nimport UserDetails from '../../../user/UserDetails';\r\nimport ArztTabelle from './tabellen/ArztTabelle';\r\nimport BtmTabelle from './tabellen/BtmTabelle';\r\nimport LieferantTabelle from './tabellen/LieferantTabelle';\r\nimport PersonalTabelle from './tabellen/PersonalTabelle';\r\nimport ApothekeEditModal from '../../../modals/ApothekeEditModal';\r\n\r\nimport './ApothekeEinstellungen.scss'\r\n\r\nfunction ApothekeEinstellungen(props) {\r\n const { apoId } = useParams()\r\n\r\n const [apotheke, setApotheke] = useState({ anschrift: {} })\r\n const [activeMenuItem, setActiveMenuItem] = useState('personal');\r\n const [loggedIn, setLoggedIn] = useState(false);\r\n const [aktiveRolle, setAktiveRolle] = useState('');\r\n const [user, setUser] = useState({});\r\n const [showApothekeEditModal, setShowApothekeEditModal] = useState(false);\r\n\r\n\r\n const getCurrentApotheke = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\")\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setApotheke(data))\r\n .catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n })\r\n }\r\n\r\n const getUserData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/benutzer/me`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n })\r\n .then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => {\r\n setUser(data);\r\n setAktiveRolle(data.rolle)\r\n setLoggedIn(true)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n\r\n const renderContent = () => {\r\n if (activeMenuItem === 'personal') {\r\n return <PersonalTabelle {...props} />;\r\n } else if (activeMenuItem === 'btm') {\r\n return <BtmTabelle {...props} />;\r\n } else if (activeMenuItem === 'aerzte') {\r\n return <ArztTabelle {...props} />\r\n } else if (activeMenuItem === 'lieferanten') {\r\n return <LieferantTabelle {...props} />\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n getUserData();\r\n getCurrentApotheke();\r\n }, []);\r\n\r\n return (\r\n <Fragment>\r\n <ApothekeEditModal {...props} show={showApothekeEditModal} onHide={() => setShowApothekeEditModal(false)} apotheke={apotheke} updateApothekeData={getCurrentApotheke} />\r\n <StatusHeader aktiveRolle={aktiveRolle} />\r\n <Header />\r\n <Row className=\"details-list\">\r\n <Col md={{ span: 6, offset: 6 }}>\r\n {loggedIn ? <UserDetails {...props} user={user} setUser={setUser} aktiveRolle={aktiveRolle} setAktiveRolle={setAktiveRolle} /> : null}\r\n </Col>\r\n </Row>\r\n <div className=\"main-content\">\r\n <Row>\r\n <Col sm={4}>\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n <li>Anschrift: {apotheke.anschrift.strasse} {apotheke.anschrift.nummer} ({apotheke.anschrift.plz} {apotheke.anschrift.ort})</li>\r\n </ul>\r\n <Button onClick={() => setShowApothekeEditModal(true)}>Angaben bearbeiten</Button>\r\n </Col>\r\n </Row>\r\n <Row style={{ marginTop: '3em' }}>\r\n <Col sm={3}>\r\n <ListGroup as=\"ul\" className=\"menu-list\">\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('personal')} active={activeMenuItem === 'personal'}>Pharmazeutisches Personal</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('btm')} active={activeMenuItem === 'btm'}>Betäubungsmittel</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('aerzte')} active={activeMenuItem === 'aerzte'}>Ärzte</ListGroup.Item>\r\n <ListGroup.Item as=\"li\" onClick={() => setActiveMenuItem('lieferanten')} active={activeMenuItem === 'lieferanten'}>Lieferanten</ListGroup.Item>\r\n </ListGroup>\r\n </Col>\r\n <Col sm={8}>\r\n {user ? renderContent() : null}\r\n </Col>\r\n </Row>\r\n </div>\r\n\r\n\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default ApothekeEinstellungen;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js",["291","292"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { Button } from \"react-bootstrap\";\r\nimport NeuesBtmModal from \"../btmbuch/NeuesBtmModal\";\r\nimport \"../../App.scss\";\r\n\r\nfunction ApothekenDetails(props) {\r\n const [apotheke, setApotheke] = useState({ anschrift: {} });\r\n const [neuesBtmModalShow, setneuesBtmModalShow] = useState(false);\r\n\r\n const getApothekeData = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.match.params.apoId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setApotheke(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getApothekeData();\r\n }, []);\r\n\r\n return (\r\n <div className=\"apo-details\">\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n </ul>\r\n <Button >Apotheke Einstellungen</Button>\r\n <Button\r\n onClick={() => setneuesBtmModalShow(true)}\r\n style={{ marginLeft: \"1em\" }}\r\n >\r\n Neues Betäubungsmittel anlegen\r\n </Button>\r\n <NeuesBtmModal\r\n show={neuesBtmModalShow}\r\n {...props}\r\n onHide={() => setneuesBtmModalShow(false)}\r\n />\r\n </div>\r\n );\r\n}\r\nexport default ApothekenDetails;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js",["293","294"],"import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport BuchungTabelle from \"../btmbuch/BuchungTabelle\";\r\n\r\nfunction ApothekeBtmList(props) {\r\n\r\n const { apoId } = useParams();\r\n const [btms, setBtms] = useState([]);\r\n const [input, setInput] = useState(\"\");\r\n\r\n const getBtms = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btmbuchung`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setBtms(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n //wird aufgerufen von NeuesBtmModal wenn ein neues BTM hinzugefügt wurde\r\n props.apothekeRefFunctions.updateBtmList = getBtms;\r\n\r\n useEffect(() => {\r\n getBtms();\r\n }, []);\r\n\r\n return (\r\n <div className=\"btm-buchung-wrapper\">\r\n <input\r\n id=\"searchBtmField\"\r\n type=\"text\"\r\n placeholder=\"Betäubungsmittel suchen\"\r\n onChange={(event) => {\r\n setInput(event.target.value);\r\n }}\r\n value={input}\r\n />\r\n {btms\r\n .filter((val) => {\r\n if (input === \"\") {\r\n console.log(\"namen der Liste\", val.btm.name);\r\n return val;\r\n } else if (val.btm.name.toLowerCase().includes(input.toLowerCase())){\r\n return val;\r\n }\r\n })\r\n .map((btm, key) => (\r\n <BuchungTabelle {...props} btm={btm} />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport default ApothekeBtmList;\r\n\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js",["295"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\n\r\nimport PersonalAddModal from '../../../../modals/PersonalAddModal';\r\nimport PersonalEditModal from '../../../../modals/PersonalEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction PersonalTabelle(props) {\r\n const { apoId } = useParams();\r\n const [personal, setPersonal] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedUser, setSelectedUser] = useState(null);\r\n const [showPersonalAddModal, setShowPersonalAddModal] = useState(false);\r\n const [showPersonalEditModal, setShowPersonalEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n\r\n\r\n const getPersonalData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setPersonal(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteUser = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer/${selectedUser.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res && res.status === 200) {\r\n getPersonalData();\r\n enqueueSnackbar('Benutzer erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const del = user => {\r\n setSelectedUser(user);\r\n setShowDeleteModal(true);\r\n }\r\n const edit = user => {\r\n setSelectedUser(user);\r\n setShowPersonalEditModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getPersonalData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <PersonalAddModal {...props} show={showPersonalAddModal} onHide={() => setShowPersonalAddModal(false)} updatePersonalData={getPersonalData}/>\r\n {selectedUser ? <PersonalEditModal {...props} user={selectedUser} show={showPersonalEditModal} onHide={() => setShowPersonalEditModal(false)} updatePersonalData={getPersonalData}/> : null}\r\n <DeleteModal {...props} headertext={'Benutzer löschen'}\r\n maintext={'Möchtest du diesen Benutzer wirklich löschen?'} onSubmit={deleteUser} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Nutzername</th>\r\n <th>Nachname</th>\r\n <th>Vorname</th>\r\n <th>Aktiv</th>\r\n <th>Rolle</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowPersonalAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {personal.map(user =>\r\n <tr key={user.id}>\r\n <td>{user.nutzername}</td>\r\n <td>{user.name}</td>\r\n <td>{user.vorname}</td>\r\n <td>{user.aktiv ? 'ja' : 'nein'}</td>\r\n <td>{user.rolle}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(user)}><Edit /></Button>\r\n <Button onClick={() => del(user)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default PersonalTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js",["296"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport ArztAddModal from '../../../../modals/ArztAddModal';\r\nimport ArztEditModal from '../../../../modals/ArztEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction ArztTabelle(props) {\r\n const { apoId } = useParams();\r\n const [aerzte, setAerzte] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedArzt, setSelectedArzt] = useState(null);\r\n const [showArztAddModal, setShowArztAddModal] = useState(false);\r\n const [showArztEditModal, setShowArztEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getArztData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/arzt`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setAerzte(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteArzt = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/arzt/${selectedArzt.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getArztData()\r\n enqueueSnackbar('Arzt erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = arzt => {\r\n setSelectedArzt(arzt);\r\n setShowArztEditModal(true);\r\n }\r\n\r\n const del = arzt => {\r\n setSelectedArzt(arzt);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getArztData();\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <ArztAddModal {...props} show={showArztAddModal} onHide={() => setShowArztAddModal(false)} updateArztData={getArztData} />\r\n {selectedArzt ? <ArztEditModal {...props} arzt={selectedArzt} show={showArztEditModal} onHide={() => setShowArztEditModal(false)} updateArztData={getArztData} /> : null}\r\n <DeleteModal {...props} headertext={'Arzt löschen'}\r\n maintext={'Möchtest du diesen Arzt wirklich löschen?'} onSubmit={deleteArzt} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Strasse</th>\r\n <th>Ort</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowArztAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {aerzte.map(arzt =>\r\n <tr key={arzt.id}>\r\n <td>{arzt.name}</td>\r\n <td>{arzt.anschrift.strasse} {arzt.anschrift.nummer}</td>\r\n <td>{arzt.anschrift.plz} {arzt.anschrift.ort}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(arzt)}><Edit /></Button>\r\n <Button onClick={() => del(arzt)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default ArztTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js",["297"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport LieferantAddModal from '../../../../modals/LieferantAddModal';\r\nimport LieferantEditModal from '../../../../modals/LieferantEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction LieferantTabelle(props) {\r\n const { apoId } = useParams();\r\n const [lieferanten, setLieferanten] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedLieferant, setSelectedLieferant] = useState(null);\r\n const [showLieferantAddModal, setShowLieferantAddModal] = useState(false);\r\n const [showLieferantEditModal, setShowLieferantEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getLieferantData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/lieferant`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setLieferanten(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteLieferant = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/lieferant/${selectedLieferant.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getLieferantData()\r\n enqueueSnackbar('Lieferant erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = lieferant => {\r\n setSelectedLieferant(lieferant);\r\n setShowLieferantEditModal(true);\r\n }\r\n\r\n const del = lieferant => {\r\n setSelectedLieferant(lieferant);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getLieferantData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <LieferantAddModal {...props} show={showLieferantAddModal} onHide={() => setShowLieferantAddModal(false)} updateLieferantData={getLieferantData} />\r\n {selectedLieferant ? <LieferantEditModal {...props} lieferant={selectedLieferant} show={showLieferantEditModal} onHide={() => setShowLieferantEditModal(false)} updateLieferantData={getLieferantData} /> : null}\r\n <DeleteModal {...props} headertext={'Lieferant löschen'}\r\n maintext={'Möchtest du diesen Lieferant wirklich löschen?'} onSubmit={deleteLieferant} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Strasse</th>\r\n <th>Ort</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowLieferantAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {lieferanten.map(lieferant =>\r\n <tr key={lieferant.id}>\r\n <td>{lieferant.name}</td>\r\n <td>{lieferant.anschrift.strasse} {lieferant.anschrift.nummer}</td>\r\n <td>{lieferant.anschrift.plz} {lieferant.anschrift.ort}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(lieferant)}><Edit /></Button>\r\n <Button onClick={() => del(lieferant)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default LieferantTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js",["298"],"import React, { Fragment, useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { AddBox, Edit, DeleteForever } from '@material-ui/icons';\r\nimport { Table, Button } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nimport BtmAddModal from '../../../../modals/BtmAddModal';\r\nimport BtmEditModal from '../../../../modals/BtmEditModal';\r\nimport DeleteModal from '../../../../modals/DeleteModal';\r\n\r\nfunction BtmTabelle(props) {\r\n const { apoId } = useParams();\r\n const [btmListe, setBtmListe] = useState([]);\r\n const { enqueueSnackbar } = useSnackbar();\r\n const [selectedBtm, setSelectedBtm] = useState(null);\r\n const [showBtmAddModal, setShowBtmAddModal] = useState(false);\r\n const [showBtmEditModal, setShowBtmEditModal] = useState(false);\r\n const [showDeleteModal, setShowDeleteModal] = useState(false);\r\n\r\n const getBtmData = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm`, {\r\n method: 'GET',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n }\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n return res.json()\r\n } else if (res.status === 403) {\r\n props.history.push('forbidden');\r\n } else if (res.status === 400) {\r\n props.history.push('badrequest');\r\n }\r\n }).then((data) => setBtmListe(data)).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n }\r\n\r\n const deleteBtm = () => {\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm/${selectedBtm.id}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n getBtmData()\r\n enqueueSnackbar('Btm erfolgreich gelöscht', { variant: 'success', autoHideDuration: 3000 });\r\n } else {\r\n //SHOW ERROR\r\n console.log(res);\r\n }\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n }\r\n\r\n const edit = btm => {\r\n setSelectedBtm(btm);\r\n setShowBtmEditModal(true);\r\n }\r\n\r\n const del = btm => {\r\n setSelectedBtm(btm);\r\n setShowDeleteModal(true);\r\n }\r\n\r\n useEffect(() => {\r\n getBtmData()\r\n }, [])\r\n\r\n return (\r\n <Fragment>\r\n <BtmAddModal {...props} show={showBtmAddModal} onHide={() => setShowBtmAddModal(false)} updateBtmData={getBtmData} />\r\n {selectedBtm ? <BtmEditModal {...props} btm={selectedBtm} show={showBtmEditModal} onHide={() => setShowBtmEditModal(false)} updateBtmData={getBtmData} /> : null}\r\n <DeleteModal {...props} headertext={'Btm löschen'}\r\n maintext={'Möchtest du diesen Btm wirklich löschen?'} onSubmit={deleteBtm} subtext={'Dieser Vorgang kann nicht rückgängig gemacht werden'}\r\n show={showDeleteModal} onHide={() => setShowDeleteModal(false)} />\r\n <Table striped bordered hover>\r\n <thead>\r\n <tr>\r\n <th>Name</th>\r\n <th>Darreichungsform</th>\r\n <th>Einheit</th>\r\n <th>Menge</th>\r\n <th style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => setShowBtmAddModal(true)} >Hinzufügen <AddBox /></Button>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {btmListe.map(btm =>\r\n <tr key={btm.id}>\r\n <td>{btm.name}</td>\r\n <td>{btm.darreichungsform}</td>\r\n <td>{btm.einheit}</td>\r\n <td>{btm.menge}</td>\r\n <td style={{ textAlign: 'center', verticalAlign: 'middle' }}>\r\n <Button onClick={() => edit(btm)}><Edit /></Button>\r\n <Button onClick={() => del(btm)}><DeleteForever /></Button>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </Table>\r\n </Fragment>\r\n )\r\n}\r\n\r\nexport default BtmTabelle;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js",["299"],"import React, { useState, useEffect } from 'react';\r\nimport { Modal, Col, Button, Form } from 'react-bootstrap';\r\nimport { useParams } from 'react-router-dom';\r\nimport { useSnackbar } from 'notistack';\r\n\r\nfunction PersonalAddModal(props) {\r\n\r\n const { apoId } = useParams();\r\n\r\n const [nutzernameVergeben, setNutzernameVergeben] = useState(false);\r\n\r\n //for password checking\r\n const [passwordConfirmInvalid, setPasswordConfirmInvalid] = useState(false);\r\n const [newPasswordVal, setNewPasswordVal] = useState('');\r\n const [passwordConfirmVal, setPasswordConfirmVal] = useState('');\r\n\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n let roles = [\"ADMIN\", \"PRUEFER\", \"BENUTZER\"];\r\n\r\n const createNewUser = async event => {\r\n event.preventDefault();\r\n let { username, vorname, nachname, neuesPasswort, rolle } = event.target;\r\n\r\n let body = {\r\n name: nachname.value,\r\n nutzername: username.value,\r\n vorname: vorname.value,\r\n aktiv: true,\r\n rolle: rolle.value,\r\n passwort: neuesPasswort.value\r\n }\r\n\r\n console.log(body)\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(body)\r\n }).then((res) => {\r\n if (res.status === 201) {\r\n props.onHide();\r\n props.updateUserList();\r\n enqueueSnackbar('Benutzer erstellt', { variant: 'success', autoHideDuration: 3000 });\r\n } else if (res.status === 400) {\r\n enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n }\r\n\r\n const checkIfUserNameIsTaken = async event => {\r\n let newUsername = event.target.value;\r\n if (newUsername.length < 4) {\r\n //if shorter than 4 its invalid\r\n setNutzernameVergeben(true);\r\n return;\r\n }\r\n\r\n await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer/${newUsername}/checkUsername`, {\r\n method: 'POST',\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n setNutzernameVergeben(false);\r\n } else if (res.status === 400) {\r\n setNutzernameVergeben(true);\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n }\r\n\r\n useEffect(() => {\r\n setPasswordConfirmInvalid(newPasswordVal !== passwordConfirmVal);\r\n }, [newPasswordVal, passwordConfirmVal]);\r\n\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={props.onHide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Personal hinzufügen\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={createNewUser}>\r\n <Modal.Body>\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"username\">\r\n <Form.Label>Benutzername</Form.Label>\r\n <Form.Control name=\"username\" required onChange={checkIfUserNameIsTaken}\r\n isInvalid={nutzernameVergeben} type=\"text\" />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} sm={4} controlId=\"vorname\">\r\n <Form.Label>Vorname</Form.Label>\r\n <Form.Control name=\"vorname\" required type=\"text\" />\r\n </Form.Group>\r\n\r\n <Form.Group as={Col} sm={8} controlId=\"nachname\">\r\n <Form.Label>Nachname</Form.Label>\r\n <Form.Control name=\"nachname\" required type=\"text\" />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"neuesPasswort\">\r\n <Form.Label>Neues Passwort</Form.Label>\r\n <Form.Control required minlength={5} onChange={event => setNewPasswordVal(event.target.value)} name=\"neuesPasswort\" type=\"password\" />\r\n </Form.Group>\r\n <Form.Group as={Col} controlId=\"neuesPasswortConfirm\">\r\n <Form.Label>Neues Passwort bestätigen</Form.Label>\r\n <Form.Control required minlength={5} onChange={event => setPasswordConfirmVal(event.target.value)} isInvalid={passwordConfirmInvalid} name=\"neuesPasswortConfirm\" type=\"password\" />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} sm={4} controlId=\"rolle\">\r\n <Form.Label>Rolle</Form.Label>\r\n <Form.Control required name=\"rolle\" required as=\"select\" >\r\n {roles.map(r => <option key={r} value={r}>{r}</option>)}\r\n </Form.Control>\r\n </Form.Group>\r\n </Form.Row>\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button autofocus variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\" >Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default PersonalAddModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js",["300","301","302"],"import React, { useState, useEffect } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Modal, Col, Button, Form, Alert, Row } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\nimport { responsiveFontSizes } from '@material-ui/core';\r\n\r\nfunction BtmEditModal(props) {\r\n\r\n const { apoId } = useParams();\r\n\r\n const darreichungsformen = {\r\n 'Tbl': { einheiten: ['Stueck'] },\r\n 'Trp': { einheiten: ['ml'] },\r\n 'Sup': { einheiten: ['Stueck'] },\r\n 'RTA': { einheiten: ['Stueck'] },\r\n 'RKA': { einheiten: ['Stueck'] },\r\n 'Ampullen': { einheiten: ['Stueck'] },\r\n 'Rezeptursubstanz': { einheiten: ['mg', 'g'] },\r\n 'HKP': { einheiten: ['Stueck'] },\r\n 'Pfl': { einheiten: ['Stueck'] }\r\n };\r\n\r\n let { id, darreichungsform, einheit, name, menge } = props.btm;\r\n // console.log(props.btm)\r\n\r\n const [activeDarreichungsform, setActiveDarreichungsform] = useState(darreichungsform);\r\n const [activeEinheit, setActiveEinheit] = useState(einheit);\r\n const [einheiten, setEinheiten] = useState(darreichungsformen[darreichungsform].einheiten);\r\n\r\n const [showError, setShowError] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n\r\n const updateDetails = async event => {\r\n event.preventDefault();\r\n let { name, darreichungsform, einheit, menge } = event.target;\r\n let body = {\r\n name: name.value,\r\n darreichungsform: darreichungsform.value,\r\n einheit: einheit.value,\r\n menge: menge.value\r\n }\r\n console.log(body)\r\n fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btm/${id}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(body)\r\n }).then((res) => {\r\n if (res.status === 200) {\r\n hide();\r\n props.updateBtmData();\r\n enqueueSnackbar('Benutzer aktualisiert', { variant: 'success', autoHideDuration: 3000 });\r\n } else if (res.status === 400) {\r\n enqueueSnackbar('Ein Fehler ist aufgetaucht', { variant: 'error', autoHideDuration: 3000 });\r\n } else if (responsiveFontSizes.status === 403) {\r\n enqueueSnackbar('Falsches Passwort', { variant: 'error', autoHideDuration: 3000 });\r\n }\r\n }).catch((err) => {\r\n console.log(err);\r\n return;\r\n });\r\n\r\n \r\n }\r\n\r\n useEffect(() => {\r\n setActiveDarreichungsform(props.btm.darreichungsform);\r\n setActiveEinheit(props.btm.einheit);\r\n setEinheiten(darreichungsformen[props.btm.darreichungsform].einheiten)\r\n console.log(activeDarreichungsform, activeEinheit, einheiten)\r\n }, [props.btm])\r\n\r\n const hide = () => {\r\n setActiveDarreichungsform(props.btm.darreichungsform);\r\n setActiveEinheit(props.btm.einheit);\r\n setEinheiten(darreichungsformen[props.btm.darreichungsform].einheiten)\r\n props.onHide();\r\n }\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={hide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel bearbeiten\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={updateDetails}>\r\n {showError ? <Alert variant=\"danger\">{errorMessage}</Alert> : null}\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"name\">\r\n <Form.Label column sm=\"2\">\r\n Name\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={name} name=\"name\" required type=\"text\" />\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"menge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={menge} name=\"menge\" type=\"number\" min=\"0\" />\r\n </Col>\r\n </Form.Group>\r\n\r\n\r\n <Form.Group as={Row} controlId=\"darreichungsform\">\r\n <Form.Label column sm=\"2\">\r\n Darreichungsform\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={darreichungsform} onChange={event => {\r\n setActiveDarreichungsform(event.target.value)\r\n setEinheiten(darreichungsformen[event.target.value].einheiten)\r\n }} name=\"darreichungsform\" required as=\"select\">\r\n {\r\n darreichungsformen ? Object.keys(darreichungsformen).map(df => <option kef={df} value={df}>{df}</option>) : null\r\n }\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n\r\n <Form.Group as={Row} controlId=\"einheit\">\r\n <Form.Label column sm=\"2\">\r\n Einheit\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={einheit} name=\"einheit\" required as=\"select\">\r\n {\r\n einheiten ? Object.keys(einheiten).map(e => <option key={einheiten[e]} value={einheiten[e]}>{einheiten[e]}</option>) : null\r\n }\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n\r\n\r\n}\r\n\r\nexport default BtmEditModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js",["303","304","305","306","307","308","309"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams } from 'react-router-dom';\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport { Modal, Button, Form, Row, Col } from \"react-bootstrap\";\r\nimport { useForm } from \"./useForm\";\r\nimport MobileStepper from \"@material-ui/core/MobileStepper\";\r\nimport KeyboardArrowLeft from \"@material-ui/icons/KeyboardArrowLeft\";\r\nimport KeyboardArrowRight from \"@material-ui/icons/KeyboardArrowRight\";\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n});\r\n\r\nfunction ApothekeRegisterModal(props) {\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [showContinueModal, setShowContinueModal] = useState(false);\r\n const [values, handleChange] = useForm({\r\n name: \"\",\r\n email: \"\",\r\n strasse: \"\",\r\n nummer: \"\",\r\n plz: \"\",\r\n ort: \"\",\r\n vorname: \"\",\r\n nachname: \"\",\r\n nutzername: \"\",\r\n rolle: \"Admin\",\r\n });\r\n\r\n const handleNext = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\r\n setShowContinueModal(true);\r\n };\r\n\r\n const handleBack = () => {\r\n setActiveStep((prevActiveStep) => prevActiveStep - 1);\r\n setShowContinueModal(false);\r\n };\r\n\r\n const createNewApo = () => {\r\n let body = {\r\n name: values.name,\r\n email: values.email,\r\n anschrift: {\r\n strasse: values.strasse,\r\n nummer: values.nummer,\r\n plz: values.plz,\r\n ort: values.ort,\r\n },\r\n };\r\n return fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(body),\r\n }).catch((err) => {\r\n console.log(err);\r\n });\r\n };\r\n\r\n const createNewAdmin = (apoId) => {\r\n let body = {\r\n name: values.nachname,\r\n vorname: values.vorname,\r\n nutzername: values.nutzername,\r\n passwort: passwords.password,\r\n rolle: 'ADMIN',\r\n };\r\n\r\n return fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/benutzer`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(body),\r\n }\r\n ).catch((err) => {\r\n console.log(err);\r\n });\r\n };\r\n\r\n const login = async () => {\r\n let body = {\r\n username: values.nutzername,\r\n password: passwords.password,\r\n };\r\n return await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/login`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify(body),\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n };\r\n\r\n const [passwords, setPasswords] = React.useState({\r\n password: \"\",\r\n passwordCheck: \"\",\r\n });\r\n\r\n function handleChangePassword(e) {\r\n setPasswords({\r\n ...passwords,\r\n [e.target.name]: e.target.value,\r\n });\r\n }\r\n\r\n const handleSubmit = async event => {\r\n event.preventDefault();\r\n\r\n //ERROR HANDLING MISSING\r\n // let { username, neuesPasswort} = event.target;\r\n let apoResponse = await createNewApo();\r\n if (apoResponse.status === 201) {\r\n let apoId = await apoResponse.json();\r\n let adminRespone = await createNewAdmin(apoId.id);\r\n if (adminRespone.status === 201) {\r\n let loginResponse = await login();\r\n if (loginResponse.status === 200) {\r\n const data = await loginResponse.json();\r\n window.sessionStorage.setItem(\"edbapo-jwt\", data.jwt);\r\n props.history.push(`/apotheke/${data.apothekeId}`);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const cancel = () => {\r\n setShowContinueModal(false);\r\n };\r\n\r\n const renderSchritt1 = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Label>1. Schritt Apotheke erstellen</Form.Label>\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"name\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Name der Apotheke\"\r\n name=\"name\"\r\n value={values.name}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} controlId=\"email\">\r\n <Form.Control\r\n required\r\n type=\"email\"\r\n placeholder=\"E-Mail der Apotheke\"\r\n name=\"email\"\r\n value={values.email}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n\r\n <Form.Row>\r\n <Form.Group as={Col} sm={9} controlId=\"strasse\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Straße\"\r\n name=\"strasse\"\r\n value={values.strasse}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group as={Col} sm={3} controlId=\"nummer\">\r\n <Form.Control\r\n required\r\n type=\"number\"\r\n placeholder=\"Nummer\"\r\n name=\"nummer\"\r\n value={values.nummer}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n <Form.Row>\r\n <Form.Group as={Col} sm={3} controlId=\"plz\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"PLZ\"\r\n name=\"plz\"\r\n value={values.plz}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group as={Col} sm={9} controlId=\"ort\">\r\n <Form.Control\r\n required\r\n type=\"text\"\r\n placeholder=\"Ort\"\r\n name=\"ort\"\r\n value={values.ort}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n </Form.Row>\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n const renderSchritt2 = () => {\r\n return (\r\n <React.Fragment>\r\n <Form.Label>2. Schritt Admin Nutzer erstellen</Form.Label>\r\n <Form.Group controllId=\"vorname\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Vorname\"\r\n name=\"vorname\"\r\n value={values.vorname}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"nachname\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Nachname\"\r\n name=\"nachname\"\r\n value={values.nachname}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"nutzername\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"text\"\r\n placeholder=\"Nutzername\"\r\n name=\"nutzername\"\r\n value={values.nutzername}\r\n onChange={handleChange}\r\n />\r\n </Form.Group>\r\n <Form.Group controllId=\"password\">\r\n <Form.Control\r\n required=\"required\"\r\n type=\"password\"\r\n placeholder=\"Passwort erstellen\"\r\n name=\"password\"\r\n value={passwords.password}\r\n onChange={handleChangePassword}\r\n />\r\n </Form.Group>\r\n <Form.Group>\r\n <Form.Control\r\n required=\"required\"\r\n type=\"password\"\r\n name=\"passwordCheck\"\r\n placeholder=\"Passwort wiederholen\"\r\n value={passwords.passwordCheck}\r\n onChange={handleChangePassword}\r\n />\r\n </Form.Group>\r\n </React.Fragment>\r\n );\r\n };\r\n\r\n return (\r\n <Modal\r\n show={props.show}\r\n onHide={props.onHide}\r\n centered\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n >\r\n <Modal.Header>\r\n <Modal.Title>Neue Apotheke registrieren</Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={handleSubmit}>\r\n <Modal.Body>\r\n {showContinueModal ? renderSchritt2() : renderSchritt1()}\r\n </Modal.Body>\r\n <MobileStepper\r\n variant=\"dots\"\r\n steps={2}\r\n position=\"static\"\r\n activeStep={activeStep}\r\n className={classes.root}\r\n nextButton={\r\n <Button\r\n size=\"small\"\r\n type={activeStep == 1 ? \"submit\" : \"button\"}\r\n onClick={activeStep == 0 ? handleNext : null}\r\n disabled={activeStep === 2}\r\n >\r\n {activeStep === 1 ? 'Registrien' : 'Weiter'}\r\n {theme.direction === \"rtl\" ? (<KeyboardArrowLeft />) : (<KeyboardArrowRight />)}\r\n </Button>\r\n }\r\n backButton={\r\n <Button\r\n size=\"small\"\r\n type={activeStep == 1 ? \"submit\" : \"button\"}\r\n onClick={handleBack}\r\n disabled={activeStep === 0}\r\n >\r\n {theme.direction === \"rtl\" ? (\r\n <KeyboardArrowRight />\r\n ) : (\r\n <KeyboardArrowLeft />\r\n )}\r\n Zurück\r\n </Button>\r\n }\r\n />\r\n </Form>\r\n </Modal>\r\n );\r\n}\r\nexport default ApothekeRegisterModal;\r\n","D:\\dev\\EDB-Apo\\frontend\\src\\modals\\useForm.js",[],"D:\\dev\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js",["310"],"import React,{useEffect} from 'react';\r\nimport { Modal, Button, Form, Row, Col } from 'react-bootstrap';\r\nimport { useSnackbar } from 'notistack';\r\nimport { useParams } from 'react-router-dom';\r\n\r\n\r\n\r\nfunction UpdateBuchungModal(props) {\r\n\r\n // let apothekeId = sessionStorage.getItem('apothekeId');\r\n const { apoId } = useParams();\r\n // eslint-disable-next-line\r\n let {lieferanten, aerzte, empfaenger} = props;\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const sendUpdateRequest = async (buchungData) => {\r\n const response = await fetch(`http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${apoId}/btmbuchung/${props.buchung.id}`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'Bearer ' + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n body: JSON.stringify(buchungData)\r\n }).catch((err) => {\r\n //SHOW ERROR\r\n console.log(err);\r\n });\r\n\r\n\r\n if (response && response.status === 200) {\r\n props.onHide();\r\n enqueueSnackbar('Buchung erfolgreich aktualisiert', { variant: 'success', autoHideDuration: 3000 });\r\n props.apothekeRefFunctions.updateBtmList();\r\n } else {\r\n //SHOW ERROR\r\n console.log(response);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n const updateBuchung = event => {\r\n event.preventDefault();\r\n\r\n if (props.buchung.typ.toLowerCase() === 'zugang') {\r\n let { anforderungsschein, btmMenge, lieferant, pruefdatum, datum } = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ZUGANG',\r\n lieferant: lieferant.value,\r\n anforderungsschein: anforderungsschein.value,\r\n pruefdatum: pruefdatum.value,\r\n datum: datum.value\r\n }\r\n sendUpdateRequest(buchungData);\r\n } else if (props.buchung.typ.toLowerCase() === 'abgang') {\r\n let { btmMenge, rezept, empfaenger, arzt, pruefdatum, datum} = event.target;\r\n let buchungData = {\r\n benutzer: props.user.id,\r\n btm: props.btm.btm.id,\r\n menge: btmMenge.value,\r\n typ: 'ABGANG',\r\n empfaenger: empfaenger.value,\r\n arzt: arzt.value,\r\n rezept: rezept.value,\r\n pruefdatum: pruefdatum.value,\r\n datum: datum.value\r\n }\r\n sendUpdateRequest(buchungData);\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n function Zugang({ buchung }) {\r\n if (buchung.typ) {\r\n if (buchung.typ.toLowerCase() === 'zugang') {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"anforderungsschein\">\r\n <Form.Label column sm=\"2\">\r\n Anforderungsschein\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"anforderungsschein\" type=\"text\" required defaultValue={buchung.anforderungsschein} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"lieferant\">\r\n <Form.Label column sm=\"2\">\r\n Lieferant\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"lieferant\" defaultValue={buchung.lieferant.name} required as=\"select\">\r\n {console.log('lieferanten', lieferanten)} \r\n {lieferanten.map(l => <option key={l.id} value={l.id}>{l.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n function Abgang({ buchung }) {\r\n if (buchung.typ) {\r\n if (buchung.typ.toLowerCase() === 'abgang') {\r\n return (\r\n <React.Fragment>\r\n <Form.Group as={Row} controlId=\"empfaenger\">\r\n <Form.Label column sm=\"2\">\r\n Empfaenger\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"empfaenger\" defaultValue={buchung.empfaenger.name} required as=\"select\">\r\n {empfaenger.map(e => <option key={e.id} value={e.id}>{e.vorname} {e.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"arzt\">\r\n <Form.Label column sm=\"2\">\r\n Arzt\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"arzt\" defaultValue={buchung.arzt.name} required as=\"select\">\r\n {aerzte.map(a => <option key={a.id} value={a.id}>{a.name}</option>)}\r\n </Form.Control>\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"rezept\">\r\n <Form.Label column sm=\"2\">\r\n Rezept\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control defaultValue={buchung.rezept} name=\"rezept\" type=\"text\" required />\r\n </Col>\r\n </Form.Group>\r\n </React.Fragment>)\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n return (\r\n <Modal\r\n {...props}\r\n size=\"lg\"\r\n aria-labelledby=\"contained-modal-title-vcenter\"\r\n centered\r\n onExiting={props.onHide}\r\n >\r\n <Modal.Header closeButton>\r\n <Modal.Title id=\"contained-modal-title-vcenter\">\r\n Betäubungsmittel-Buchung aktualisieren\r\n </Modal.Title>\r\n </Modal.Header>\r\n <Form onSubmit={updateBuchung}>\r\n <Modal.Body>\r\n <Form.Group as={Row} controlId=\"datum\">\r\n <Form.Label column sm=\"2\">\r\n Datum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"datum\" type=\"date\" defaultValue={props.buchung.datum} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"btmMenge\">\r\n <Form.Label column sm=\"2\">\r\n Menge\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"btmMenge\" type=\"number\" min=\"1\" defaultValue={props.buchung.menge} />\r\n </Col>\r\n </Form.Group>\r\n <Form.Group as={Row} controlId=\"pruefdatum\">\r\n <Form.Label column sm=\"2\">\r\n Prüfdatum\r\n </Form.Label>\r\n <Col sm=\"10\">\r\n <Form.Control name=\"pruefdatum\" type=\"date\" defaultValue={props.buchung.pruefdatum} />\r\n </Col>\r\n </Form.Group>\r\n <Zugang buchung={props.buchung} />\r\n <Abgang buchung={props.buchung} />\r\n </Modal.Body>\r\n <Modal.Footer>\r\n <Button variant=\"\" onClick={props.onHide}>Abbrechen</Button>\r\n <Button variant=\"primary\" type=\"submit\">Bestätigen</Button>\r\n </Modal.Footer>\r\n </Form>\r\n </Modal>\r\n )\r\n}\r\n\r\nexport default UpdateBuchungModal;\r\n","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\index.js",[],["311","312"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\App.js",["313"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Startseite.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BTMBuch.js",["314"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\ApothekeEinstellungen.js",["315"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\Header.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\headers\\StatusHeader.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\startseite\\Login.js",["316"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\BtmTabelle.js",["317"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\ArztTabelle.js",["318"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\user\\UserDetails.js",["319","320","321"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\PersonalTabelle.js",["322"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekenDetails.js",["323","324"],"import React, { useEffect, useState } from \"react\";\r\nimport { useParams, Link } from 'react-router-dom';\r\nimport { Button } from \"react-bootstrap\";\r\nimport NeuesBtmModal from \"../btmbuch/NeuesBtmModal\";\r\nimport \"../../App.scss\";\r\n\r\nfunction ApothekenDetails(props) {\r\n const [apotheke, setApotheke] = useState({ anschrift: {} });\r\n const [neuesBtmModalShow, setneuesBtmModalShow] = useState(false);\r\n\r\n const getApothekeData = async () => {\r\n const response = await fetch(\r\n `http://${process.env.REACT_APP_BACKEND_URL}/apotheke/${props.match.params.apoId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization:\r\n \"Bearer \" + window.sessionStorage.getItem(\"edbapo-jwt\"),\r\n },\r\n }\r\n ).catch((err) => {\r\n //SHOW ERROR\r\n return;\r\n });\r\n\r\n if (response.status === 200) {\r\n setApotheke(await response.json());\r\n } else if (response.status === 403) {\r\n props.history.push(\"/forbidden\");\r\n } else if (response.status === 400) {\r\n props.history.push(\"/badrequest\");\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getApothekeData();\r\n }, []);\r\n\r\n return (\r\n <div className=\"apo-details\">\r\n <ul>\r\n <li>Name: {apotheke.name}</li>\r\n <li>E-Mail: {apotheke.email}</li>\r\n </ul>\r\n <Link to={`${props.match.params.apoId}/einstellungen`} ><Button >Apotheke Einstellungen</Button></Link>\r\n <Button\r\n onClick={() => setneuesBtmModalShow(true)}\r\n style={{ marginLeft: \"1em\" }}\r\n >\r\n Neues Betäubungsmittel anlegen\r\n </Button>\r\n <NeuesBtmModal\r\n show={neuesBtmModalShow}\r\n {...props}\r\n onHide={() => setneuesBtmModalShow(false)}\r\n />\r\n </div>\r\n );\r\n}\r\nexport default ApothekenDetails;\r\n","C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\einstellungen\\tabellen\\LieferantTabelle.js",["325"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\apotheke\\ApothekeBtmList.js",["326","327"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\DeleteModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmEditModal.js",["328","329","330"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\BtmAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeuesBtmModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UserDetailsUpdateModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ApothekeRegisterModal.js",["331","332","333","334","335","336","337"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalAddModal.js",["338"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\ArztEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\BuchungTabelle.js",["339"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\PersonalEditModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\LieferantAddModal.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\UpdateBuchungModal.js",["340"],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\modals\\useForm.js",[],"C:\\Users\\LMaro\\Desktop\\EDB-Apo\\frontend\\src\\components\\btmbuch\\NeueBuchungModal.js",["341","342","343"],{"ruleId":"344","replacedBy":"345"},{"ruleId":"346","replacedBy":"347"},{"ruleId":"348","severity":1,"message":"349","line":3,"column":50,"nodeType":"350","messageId":"351","endLine":3,"endColumn":54},{"ruleId":"352","severity":1,"message":"353","line":44,"column":6,"nodeType":"354","endLine":44,"endColumn":8,"suggestions":"355"},{"ruleId":"348","severity":1,"message":"356","line":2,"column":9,"nodeType":"350","messageId":"351","endLine":2,"endColumn":12},{"ruleId":"348","severity":1,"message":"357","line":8,"column":18,"nodeType":"350","messageId":"351","endLine":8,"endColumn":25},{"ruleId":"348","severity":1,"message":"358","line":8,"column":27,"nodeType":"350","messageId":"351","endLine":8,"endColumn":31},{"ruleId":"348","severity":1,"message":"359","line":8,"column":45,"nodeType":"350","messageId":"351","endLine":8,"endColumn":50},{"ruleId":"352","severity":1,"message":"360","line":226,"column":6,"nodeType":"354","endLine":226,"endColumn":8,"suggestions":"361"},{"ruleId":"348","severity":1,"message":"362","line":12,"column":12,"nodeType":"350","messageId":"351","endLine":12,"endColumn":20},{"ruleId":"348","severity":1,"message":"363","line":29,"column":19,"nodeType":"350","messageId":"351","endLine":29,"endColumn":23},{"ruleId":"352","severity":1,"message":"364","line":79,"column":8,"nodeType":"354","endLine":79,"endColumn":10,"suggestions":"365"},{"ruleId":"352","severity":1,"message":"366","line":89,"column":6,"nodeType":"354","endLine":89,"endColumn":8,"suggestions":"367"},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"352","severity":1,"message":"369","line":37,"column":6,"nodeType":"354","endLine":37,"endColumn":8,"suggestions":"370"},{"ruleId":"352","severity":1,"message":"371","line":40,"column":6,"nodeType":"354","endLine":40,"endColumn":8,"suggestions":"372"},{"ruleId":"373","severity":1,"message":"374","line":54,"column":23,"nodeType":"375","messageId":"376","endLine":54,"endColumn":25},{"ruleId":"352","severity":1,"message":"377","line":73,"column":6,"nodeType":"354","endLine":73,"endColumn":8,"suggestions":"378"},{"ruleId":"352","severity":1,"message":"379","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"380"},{"ruleId":"352","severity":1,"message":"381","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"382"},{"ruleId":"352","severity":1,"message":"383","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"384"},{"ruleId":"385","severity":1,"message":"386","line":131,"column":51,"nodeType":"387","endLine":131,"endColumn":59},{"ruleId":"348","severity":1,"message":"388","line":30,"column":21,"nodeType":"350","messageId":"351","endLine":30,"endColumn":33},{"ruleId":"348","severity":1,"message":"389","line":31,"column":24,"nodeType":"350","messageId":"351","endLine":31,"endColumn":39},{"ruleId":"352","severity":1,"message":"390","line":75,"column":6,"nodeType":"354","endLine":75,"endColumn":17,"suggestions":"391"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":17,"nodeType":"350","messageId":"351","endLine":1,"endColumn":26},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"348","severity":1,"message":"356","line":4,"column":31,"nodeType":"350","messageId":"351","endLine":4,"endColumn":34},{"ruleId":"348","severity":1,"message":"393","line":136,"column":9,"nodeType":"350","messageId":"351","endLine":136,"endColumn":15},{"ruleId":"394","severity":1,"message":"395","line":299,"column":32,"nodeType":"396","messageId":"397","endLine":299,"endColumn":34},{"ruleId":"394","severity":1,"message":"395","line":300,"column":35,"nodeType":"396","messageId":"397","endLine":300,"endColumn":37},{"ruleId":"394","severity":1,"message":"395","line":310,"column":32,"nodeType":"396","messageId":"397","endLine":310,"endColumn":34},{"ruleId":"348","severity":1,"message":"392","line":1,"column":15,"nodeType":"350","messageId":"351","endLine":1,"endColumn":24},{"ruleId":"344","replacedBy":"398"},{"ruleId":"346","replacedBy":"399"},{"ruleId":"348","severity":1,"message":"349","line":3,"column":50,"nodeType":"350","messageId":"351","endLine":3,"endColumn":54},{"ruleId":"352","severity":1,"message":"353","line":44,"column":6,"nodeType":"354","endLine":44,"endColumn":8,"suggestions":"400"},{"ruleId":"352","severity":1,"message":"366","line":89,"column":6,"nodeType":"354","endLine":89,"endColumn":8,"suggestions":"401"},{"ruleId":"348","severity":1,"message":"356","line":2,"column":9,"nodeType":"350","messageId":"351","endLine":2,"endColumn":12},{"ruleId":"352","severity":1,"message":"383","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"402"},{"ruleId":"352","severity":1,"message":"379","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"403"},{"ruleId":"348","severity":1,"message":"357","line":8,"column":18,"nodeType":"350","messageId":"351","endLine":8,"endColumn":25},{"ruleId":"348","severity":1,"message":"358","line":8,"column":27,"nodeType":"350","messageId":"351","endLine":8,"endColumn":31},{"ruleId":"348","severity":1,"message":"359","line":8,"column":45,"nodeType":"350","messageId":"351","endLine":8,"endColumn":50},{"ruleId":"352","severity":1,"message":"377","line":73,"column":6,"nodeType":"354","endLine":73,"endColumn":8,"suggestions":"404"},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"352","severity":1,"message":"369","line":37,"column":6,"nodeType":"354","endLine":37,"endColumn":8,"suggestions":"405"},{"ruleId":"352","severity":1,"message":"381","line":72,"column":6,"nodeType":"354","endLine":72,"endColumn":8,"suggestions":"406"},{"ruleId":"352","severity":1,"message":"371","line":40,"column":6,"nodeType":"354","endLine":40,"endColumn":8,"suggestions":"407"},{"ruleId":"373","severity":1,"message":"374","line":54,"column":23,"nodeType":"375","messageId":"376","endLine":54,"endColumn":25},{"ruleId":"348","severity":1,"message":"388","line":30,"column":21,"nodeType":"350","messageId":"351","endLine":30,"endColumn":33},{"ruleId":"348","severity":1,"message":"389","line":31,"column":24,"nodeType":"350","messageId":"351","endLine":31,"endColumn":39},{"ruleId":"352","severity":1,"message":"390","line":75,"column":6,"nodeType":"354","endLine":75,"endColumn":17,"suggestions":"408"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":17,"nodeType":"350","messageId":"351","endLine":1,"endColumn":26},{"ruleId":"348","severity":1,"message":"368","line":2,"column":10,"nodeType":"350","messageId":"351","endLine":2,"endColumn":19},{"ruleId":"348","severity":1,"message":"356","line":4,"column":31,"nodeType":"350","messageId":"351","endLine":4,"endColumn":34},{"ruleId":"348","severity":1,"message":"393","line":136,"column":9,"nodeType":"350","messageId":"351","endLine":136,"endColumn":15},{"ruleId":"394","severity":1,"message":"395","line":299,"column":32,"nodeType":"396","messageId":"397","endLine":299,"endColumn":34},{"ruleId":"394","severity":1,"message":"395","line":300,"column":35,"nodeType":"396","messageId":"397","endLine":300,"endColumn":37},{"ruleId":"394","severity":1,"message":"395","line":310,"column":32,"nodeType":"396","messageId":"397","endLine":310,"endColumn":34},{"ruleId":"385","severity":1,"message":"386","line":131,"column":51,"nodeType":"387","endLine":131,"endColumn":59},{"ruleId":"352","severity":1,"message":"360","line":190,"column":6,"nodeType":"354","endLine":190,"endColumn":8,"suggestions":"409"},{"ruleId":"348","severity":1,"message":"392","line":1,"column":15,"nodeType":"350","messageId":"351","endLine":1,"endColumn":24},{"ruleId":"348","severity":1,"message":"362","line":12,"column":12,"nodeType":"350","messageId":"351","endLine":12,"endColumn":20},{"ruleId":"348","severity":1,"message":"363","line":29,"column":19,"nodeType":"350","messageId":"351","endLine":29,"endColumn":23},{"ruleId":"352","severity":1,"message":"364","line":79,"column":8,"nodeType":"354","endLine":79,"endColumn":10,"suggestions":"410"},"no-native-reassign",["411"],"no-negated-in-lhs",["412"],"no-unused-vars","'Link' is defined but never used.","Identifier","unusedVar","react-hooks/exhaustive-deps","React Hook useEffect has a missing dependency: 'getUserDetails'. Either include it or remove the dependency array.","ArrayExpression",["413"],"'Row' is defined but never used.","'vorname' is assigned a value but never used.","'name' is assigned a value but never used.","'aktiv' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'loadAerzte', 'loadEmpfaenger', and 'loadLieferanten'. Either include them or remove the dependency array.",["414"],"'maxMenge' is assigned a value but never used.","'data' is assigned a value but never used.","React Hook useEffect has a missing dependency: 'props.btm.btm.menge'. Either include it or remove the dependency array. If 'setMaxMenge' needs the current value of 'props.btm.btm.menge', you can also switch to useReducer instead of useState and read 'props.btm.btm.menge' in the reducer.",["415"],"React Hook useEffect has missing dependencies: 'getCurrentApotheke' and 'getUserData'. Either include them or remove the dependency array.",["416"],"'useParams' is defined but never used.","React Hook useEffect has a missing dependency: 'getApothekeData'. Either include it or remove the dependency array.",["417"],"React Hook useEffect has a missing dependency: 'getBtms'. Either include it or remove the dependency array.",["418"],"array-callback-return","Array.prototype.filter() expects a value to be returned at the end of arrow function.","ArrowFunctionExpression","expectedAtEnd","React Hook useEffect has a missing dependency: 'getPersonalData'. Either include it or remove the dependency array.",["419"],"React Hook useEffect has a missing dependency: 'getArztData'. Either include it or remove the dependency array.",["420"],"React Hook useEffect has a missing dependency: 'getLieferantData'. Either include it or remove the dependency array.",["421"],"React Hook useEffect has a missing dependency: 'getBtmData'. Either include it or remove the dependency array.",["422"],"react/jsx-no-duplicate-props","No duplicate props allowed","JSXAttribute","'setShowError' is assigned a value but never used.","'setErrorMessage' is assigned a value but never used.","React Hook useEffect has missing dependencies: 'activeDarreichungsform', 'activeEinheit', 'darreichungsformen', and 'einheiten'. Either include them or remove the dependency array.",["423"],"'useEffect' is defined but never used.","'cancel' is assigned a value but never used.","eqeqeq","Expected '===' and instead saw '=='.","BinaryExpression","unexpected",["411"],["412"],["424"],["425"],["426"],["427"],["428"],["429"],["430"],["431"],["432"],["433"],["434"],"no-global-assign","no-unsafe-negation",{"desc":"435","fix":"436"},{"desc":"437","fix":"438"},{"desc":"439","fix":"440"},{"desc":"441","fix":"442"},{"desc":"443","fix":"444"},{"desc":"445","fix":"446"},{"desc":"447","fix":"448"},{"desc":"449","fix":"450"},{"desc":"451","fix":"452"},{"desc":"453","fix":"454"},{"desc":"455","fix":"456"},{"desc":"435","fix":"457"},{"desc":"441","fix":"458"},{"desc":"453","fix":"459"},{"desc":"449","fix":"460"},{"desc":"447","fix":"461"},{"desc":"443","fix":"462"},{"desc":"451","fix":"463"},{"desc":"445","fix":"464"},{"desc":"455","fix":"465"},{"desc":"437","fix":"466"},{"desc":"439","fix":"467"},"Update the dependencies array to be: [getUserDetails]",{"range":"468","text":"469"},"Update the dependencies array to be: [loadAerzte, loadEmpfaenger, loadLieferanten]",{"range":"470","text":"471"},"Update the dependencies array to be: [props.btm.btm.menge]",{"range":"472","text":"473"},"Update the dependencies array to be: [getCurrentApotheke, getUserData]",{"range":"474","text":"475"},"Update the dependencies array to be: [getApothekeData]",{"range":"476","text":"477"},"Update the dependencies array to be: [getBtms]",{"range":"478","text":"479"},"Update the dependencies array to be: [getPersonalData]",{"range":"480","text":"481"},"Update the dependencies array to be: [getArztData]",{"range":"482","text":"483"},"Update the dependencies array to be: [getLieferantData]",{"range":"484","text":"485"},"Update the dependencies array to be: [getBtmData]",{"range":"486","text":"487"},"Update the dependencies array to be: [activeDarreichungsform, activeEinheit, darreichungsformen, einheiten, props.btm]",{"range":"488","text":"489"},{"range":"490","text":"469"},{"range":"491","text":"475"},{"range":"492","text":"487"},{"range":"493","text":"483"},{"range":"494","text":"481"},{"range":"495","text":"477"},{"range":"496","text":"485"},{"range":"497","text":"479"},{"range":"498","text":"489"},{"range":"499","text":"471"},{"range":"500","text":"473"},[1478,1480],"[getUserDetails]",[6832,6834],"[loadAerzte, loadEmpfaenger, loadLieferanten]",[2781,2783],"[props.btm.btm.menge]",[2921,2923],"[getCurrentApotheke, getUserData]",[1118,1120],"[getApothekeData]",[1141,1143],"[getBtms]",[2410,2412],"[getPersonalData]",[2331,2333],"[getArztData]",[2475,2477],"[getLieferantData]",[2310,2312],"[getBtmData]",[2744,2755],"[activeDarreichungsform, activeEinheit, darreichungsformen, einheiten, props.btm]",[1478,1480],[2921,2923],[2310,2312],[2331,2333],[2410,2412],[1125,1127],[2475,2477],[1141,1143],[2744,2755],[5974,5976],[2781,2783]] \ No newline at end of file diff --git a/frontend/src/components/btmbuch/BuchungTabelle.js b/frontend/src/components/btmbuch/BuchungTabelle.js index 2cc6d164b74835769c083a7a70431d0ed0b30fb2..f6867745f04e4a861b80ed4670ceec1af0a307bf 100644 --- a/frontend/src/components/btmbuch/BuchungTabelle.js +++ b/frontend/src/components/btmbuch/BuchungTabelle.js @@ -279,7 +279,7 @@ function BuchungTabelle(props) { <td>{buchung.typ === "ZUGANG" ? buchung.menge : ""}</td> <td>{buchung.typ === "ZUGANG" ? "" : buchung.menge}</td> <td>{buchung.typ === "ZUGANG" ? buchung.anforderungsschein : buchung.rezept}</td> - <td>{buchung.pruefdatum}</td> + <td>{buchung.pruefdatum ? <Moment format="DD.MM.YYYY">{buchung.pruefdatum}</Moment> : ""}</td> <td>{buchung.pruefer ? buchung.pruefer.vorname+" "+buchung.pruefer.name : ""}</td> {props.aktiveRolle.toLowerCase() === "admin" || props.aktiveRolle.toLowerCase() === "pruefer" ?