{"version":3,"sources":["assets/img/logo.png","serviceWorker.js","assets/jss/app.js","assets/jss/dorm-app/components/buttonStyle.js","components/button/RegularButton.jsx","api/api.js","components/login/Login.jsx","components/grid/GridContainer.jsx","components/grid/GridItem.jsx","assets/jss/dorm-app/components/cardStyle.js","components/card/Card.jsx","assets/jss/dorm-app/components/cardHeaderStyle.js","components/card/CardHeader.jsx","assets/jss/dorm-app/components/cardBodyStyle.js","components/card/CardBody.jsx","assets/jss/dorm-app/components/customInputStyle.js","components/input/CustomInput.jsx","assets/jss/dorm-app/components/cardFooterStyle.js","components/card/CardFooter.jsx","assets/jss/dorm-app/components/snackbarContentStyle.js","components/snackbar/Snackbar.jsx","assets/jss/dorm-app/components/containerStyle.js","assets/jss/dorm-app/modalStyle.js","assets/jss/dorm-app/views/notificationsStyle.js","assets/jss/dorm-app/customSelectStyle.js","components/utils/state/ApplicationState.jsx","components/engagement/EditEngagement.jsx","components/input/CustomDateInput.jsx","assets/jss/dorm-app/components/badgeStyle.js","components/badge/Badge.jsx","components/tenant/admin/tab/page/UniversitySelect.jsx","components/utils/DateUtils.jsx","components/tenant/admin/tab/page/EditTenantPage.jsx","assets/jss/dorm-app/components/departmentSignaturesStyle.js","components/departure/DepartmentSignatures.jsx","components/departure/public/PublicDepartureDecision.jsx","assets/jss/dorm-app/components/headerStyle.js","assets/jss/dorm-app/dropdownStyle.js","assets/jss/dorm-app/components/headerLinksStyle.js","components/navbar/NavbarLinks.jsx","components/navbar/Navbar.jsx","assets/jss/dorm-app/components/sidebarStyle.js","components/sidebar/Sidebar.jsx","assets/jss/dorm-app/layouts/appStyle.js","components/login/AuthenticatedRoute.jsx","assets/jss/dorm-app/components/customTabsStyle.js","components/tab/CustomTabs.js","components/tenant/admin/tab/page/CreateTenant.jsx","components/tenant/admin/table/ExTenantTable.jsx","components/tenant/admin/tab/page/ExTenantPage.jsx","components/tenant/admin/table/FutureTenantTable.jsx","components/tenant/admin/table/CurrentTenantTable.jsx","components/departure/admin/CompletedDepartureTable.jsx","components/departure/admin/AdminConfirmedDepartureTable.jsx","components/tenant/admin/table/DepartureCandidatesTable.jsx","components/departure/admin/AdminCreatedDepartureTable.jsx","components/extension/Extension.jsx","components/extension/ProcessingExtensionTable.jsx","components/extension/CompletedExtensionTable.jsx","components/extension/OpenExtensionTable.jsx","components/subtenant/SubtenantTable.jsx","components/subtenant/CreateSubtenant.jsx","components/utils/StringUtils.jsx","components/subtenant/CurrentSubtenantTable.jsx","components/parcel/Parcels.jsx","components/parcel/ParcelTable.jsx","components/engagement/CurrentHSV.jsx","routes/adminRoutes.js","components/tenant/admin/tab/TenatsTab.jsx","components/tenant/admin/tab/AdminDeparturesTab.jsx","components/tenant/admin/tab/AdminClaimsTab.jsx","components/tenant/admin/tab/SubtenatsTab.jsx","components/parcel/ParcelTab.jsx","components/tenant/department/table/DepartmentCurrentTenantTable.jsx","routes/finanzenDepartmentRoutes.js","components/tenant/department/tab/DepartmentTenantsTab.jsx","components/tenant/heimrat/HeimratCurrentTenantTable.jsx","components/tenant/heimrat/HeimratCsvExport.jsx","components/tenant/heimrat/HeimratTenantsTab.jsx","components/engagement/HeimratEngagementApplication.jsx","components/engagement/HeimratEngagements.jsx","routes/heimratDepartmentRoutes.js","components/engagement/DepartmentCompensatedEngagements.jsx","components/engagement/CreateEngagement.jsx","components/engagement/DepartmentUncompensatedEngagements.jsx","components/email/InfoEmailDistributor.jsx","components/tenant/department/table/DepartmentExTenantTable.jsx","routes/infoDepartmentRoutes.js","components/tenant/department/tab/InfoDepartmentTenantsTab.jsx","components/tenant/department/tab/InfoEngagementsTab.jsx","components/tenant/department/tab/InfoEmailTab.jsx","routes/zimmerDepartmentRoutes.js","components/tenant/department/tab/ZimmerTenantsTab.jsx","components/departure/department/DepartmentNewDeparture.jsx","components/departure/department/DepartmentNewDepartures.jsx","components/departure/department/DepartmentEditDeparture.jsx","components/departure/department/DepartmentSignedDepartures.jsx","components/departure/department/DepartmentDeparturesTab.jsx","assets/jss/dorm-app/views/individualTenantPageStyle.js","components/individual/IndividualTenantPage.jsx","components/individual/IndividualEngagementApplication.jsx","components/individual/IndividualEngagements.jsx","components/individual/DepartmentInformation.jsx","components/individual/IndividualHSV.jsx","routes/individualTenantRoutes.js","components/individual/IndividualTenantTab.jsx","routes/schlichtungDepartmentRoutes.js","layouts/Layout.jsx","routes/departmentRoutes.js","components/login/PasswordReset.jsx","App.jsx","index.js"],"names":["module","exports","Boolean","window","location","hostname","match","hexToRgb","input","replace","test","length","Error","first","second","last","toUpperCase","parseInt","container","paddingRight","paddingLeft","marginRight","marginLeft","display","content","clear","transition","defaultFont","fontFamily","fontWeight","lineHeight","primaryColor","warningColor","dangerColor","successColor","infoColor","roseColor","grayColor","boxShadow","primaryBoxShadow","infoBoxShadow","successBoxShadow","warningBoxShadow","dangerBoxShadow","roseBoxShadow","warningCardHeader","background","successCardHeader","dangerCardHeader","infoCardHeader","primaryCardHeader","roseCardHeader","text","color","defaultBoxShadow","margin","paddingTop","borderTop","height","border","borderRadius","padding","title","textDecoration","marginTop","marginBottom","minHeight","fontSize","cardTitle","description","mAuto","buttonStyle","button","minWidth","backgroundColor","position","textTransform","letterSpacing","willChange","textAlign","whiteSpace","verticalAlign","touchAction","cursor","top","width","transform","left","white","gray","rose","primary","info","success","warning","danger","simple","transparent","disabled","opacity","pointerEvents","lg","sm","round","block","link","justIcon","useStyles","makeStyles","styles","RegularButton","props","classes","children","size","className","muiClasses","rest","btnClasses","classNames","Button","getApiUrl","params","axios","create","baseURL","apiUrl","headers","authHeader","userState","getWithExpiry","token","Authorization","theme","paper","spacing","flexDirection","alignItems","avatar","palette","secondary","main","form","submit","loginReducer","state","action","type","field","value","initialLoginState","isError","errorMessage","username","password","Login","redirect","setUser","useContext","UserContext","hist","useHistory","useReducer","dispatch","resetPasswordLink","push","search","useLocation","split","Container","component","maxWidth","CssBaseline","Avatar","Typography","variant","noValidate","TextField","required","fullWidth","id","label","name","autoComplete","autoFocus","onChange","e","currentTarget","onClick","preventDefault","post","then","response","data","localStorage","setItem","parseJwt","catch","error","console","log","submitForm","Box","mt","red","align","href","grid","GridContainer","Grid","GridItem","item","cardStyle","mlAuto","mrAuto","card","wordWrap","nestedCard","cardPlain","cardProfile","cardChart","cardDescription","cardCategory","cardRaised","header","Card","plain","profile","chart","raised","nested","cardClasses","undefined","cardHeaderStyle","cardHeader","borderBottom","zIndex","overflow","cardHeaderPlain","cardHeaderStats","cardHeaderIcon","CardHeader","stats","icon","cardHeaderClasses","cardBodyStyle","cardBody","flex","WebkitBoxFlex","cardBodyPlain","cardBodyProfile","CardBody","cardBodyClasses","customInputStyle","underline","borderColor","borderWidth","underlineError","underlineSuccess","labelRoot","labelRootError","labelRootSuccess","feedback","right","marginTop40","formControlWithoutMargin","paddingBottom","formControl","dateLabel","CustomInput","formControlProps","labelText","labelProps","inputProps","labelClasses","underlineClasses","FormControl","InputLabel","htmlFor","Input","root","cardFooterStyle","cardFooter","justifyContent","cardFooterProfile","cardFooterPlain","cardFooterStats","cardFooterChart","CardFooter","cardFooterClasses","snackbarContentStyle","flexWrap","top20","top40","message","close","iconButton","infoIcon","successIcon","warningIcon","dangerIcon","primaryIcon","roseIcon","iconMessage","actionRTL","Snackbar","place","open","messageClasses","IconButton","key","aria-label","closeNotification","anchorOrigin","vertical","indexOf","horizontal","ContentProps","containerStyle","modalStyle","modalRoot","modal","maxHeight","modalHeader","modalTitle","modalCloseButton","WebkitAppearance","textShadow","float","modalClose","modalBody","modalFooter","modalFooterCenter","instructionNoticeModal","imageNoticeModal","modalSmall","modalSmallBody","modalSmallFooterFirstButton","modalSmallFooterSecondButton","notificationsStyle","cardSubtitle","center","modalSectionTitle","customSelectStyle","notificationStyles","cardCategoryWhite","cardTitleWhite","select","selectFormControl","borderBottomWidth","borderBottomColor","selectLabel","selectMenu","boxSizing","listStyle","backgroundClip","selectMenuItem","selectMenuItemSelected","selectMenuItemSelectedMultiple","borderLeft","selectPaper","customTableHeader","initialNotificationState","engagementReducer","initialEngagementState","department","semester","tenantName","tenantEmail","tenantRoom","points","note","engagementId","EditEngagement","useParams","useState","proceeding","setProceeding","notification","setNotification","fetchEngagement","useCallback","get","useEffect","Backdrop","CircularProgress","xs","md","put","finally","setTimeout","timeout","AddAlert","DeLocalizedUtils","date","format","locale","this","DateFnsUtils","utils","deLocale","style","clearable","placeholder","badgeStyle","badge","Badge","UniversitySelect","Select","MenuProps","university","getAttribute","MenuItem","selected","stringifyDates","stateCopy","JSON","parse","stringify","birthday","movedIn","stringifyDate","movedOut","moveDate","moveOutDate","year","Intl","DateTimeFormat","month","day","createDateFromString","Date","moveReducer","initialMoveState","newRoom","tenantReducer","initialTenantState","surname","email","telNumber","gender","nationality","studyField","room","extensionStatus","tenantId","deposit","extension","sublet","EditTenantPage","tenantState","dispatchTenant","moveState","dispatchMove","departureDate","setDepartureDate","rentals","setRentals","fetchRentals","fetchTenant","defaultOptionLabel","priorityOptions","val","font","multiline","rows","submitEdit","Table","TableHead","TableRow","TableCell","TableBody","map","rental","submitMove","body","handleTerminationSubmit","departmentSignaturesStyle","dangerBackground","DepartmentSignatures","signature","signatures","filter","sg","departmentName","includes","amount","signedOn","departureReducer","initialDepartureState","status","createdOn","departureId","iban","PublicDepartureDecision","bankInfo","setBankInfo","fetchBankInfo","fetchDeparture","patch","postponeDeparture","confirmDeparture","saveBankInfo","headerStyle","appBar","appResponsive","dropdownStyle","buttonLink","breakpoints","down","linkText","popperClose","popperNav","whiteColor","dropdown","WebkitBackgroundClip","dropdownItem","WebkitTransition","MozTransition","OTransition","MsTransition","headerLinksStyle","manager","NavbarLinks","React","setOpen","openProfile","setOpenProfile","handleLogout","removeItem","emptyUser","reload","handleCloseProfile","innerWidth","aria-owns","aria-haspopup","event","icons","Popper","anchorEl","disablePortal","TransitionProps","placement","Grow","transformOrigin","Paper","ClickAwayListener","onClickAway","MenuList","role","Navbar","appBarClasses","AppBar","Toolbar","Hidden","smDown","implementation","mdUp","handleDrawerToggle","sidebarStyle","drawerPaper","bottom","up","visibility","overflowY","drawerPaperRTL","logo","logoLink","logoLinkRTL","logoImage","img","backgroundSize","backgroundPosition","list","itemLink","itemIcon","itemIconRTL","itemText","itemTextRTL","whiteFont","burgundy","blue","green","orange","sidebarWrapper","overflowScrolling","activePro","Sidebar","activeRoute","routeName","image","logoText","routes","links","List","prop","listItemClasses","path","whiteFontClasses","to","activeClassName","ListItem","Icon","ListItemText","disableTypography","home","src","alt","Drawer","anchor","onClose","ModalProps","keepMounted","backgroundImage","appStyle","wrapper","mainPanel","AuthenticatedRoute","C","appProps","user","render","pathname","customTabsStyle","cardTitleRTL","displayNone","tabsRoot","overflowX","tabRootButton","tabSelected","tabWrapper","CustomTabs","setValue","headerColor","plainTabs","tabs","rtlActive","Tabs","indicator","scrollButtons","tabIcon","Tab","tabName","tabContent","CreateTenant","columns","customSort","a","b","rowData","ExTenantTable","tenants","setTenants","fetchExTenants","actions","tooltip","stopPropagation","options","pageSize","pageSizeOptions","localization","pagination","labelDisplayedRows","labelRowsSelect","labelRowsPerPage","toolbar","nRowsSelected","searchPlaceholder","searchTooltip","emptyDataSourceMessage","filterRow","filterTooltip","ExTenantPage","probationEnd","FutureTenantTable","cellStyle","parseFloat","currentPoints","CurrentTenantTable","defaultSort","CompletedDepartureTable","departures","setDepartures","responseType","download","tenantFullName","AdminConfirmedDepartureTable","departureDates","setDepartureDates","URLSearchParams","append","dates","dp","handleCloseDeparture","TableContainer","row","index","tmp","slice","colSpan","DepartureCandidatesTable","tenantEmails","tenant","createdDepartures","AdminCreatedDepartureTable","Extension","claimId","moveOutList","handleAcceptExtension","handleRejectExtension","setMoveOutList","fullName","ProcessingExtensionTable","claims","setClaims","Array","fill","moveOut","CompletedExtensionTable","OpenExtensionTable","hidden","SubtenantTable","subtenants","setSubtenants","universityConfirmation","subtenantId","subtenantReducer","initialSubtenantState","CreateSubtenant","FormControlLabel","control","Checkbox","checked","labelPlacement","str","CurrentSubtenantTable","parcelReducer","registered","initialParcelState","quantity","Parcels","arrived","ParcelTable","parcels","setParcels","parcelId","CurrentHSV","engagements","setEngagements","Object","entries","EngagementTabContent","engagementInfos","tenantPhone","tenantFloor","adminRoutes","PeopleIcon","PersonAddIcon","ApartmentIcon","DirectionsRunIcon","AssignmentLateIcon","DoneAllIcon","AssignmentIcon","KingBedIcon","AssignmentIndIcon","AllInboxIcon","AddBoxIcon","DepartmentCurrentTenantTable","finanzenDepartmentRoutes","HeimratCurrentTenantTable","HeimratCsvExport","filename","HeimratTenantsTab","ImportExportIcon","motivation","heimratDepartmentRoutes","applications","setApplications","fetchApplications","hasImage","applicationId","fileName","downloadImage","exportButton","DepartmentCompensatedEngagements","fetchData","setFetchData","setEngagementId","setModal","Transition","forwardRef","ref","Slide","direction","compensated","Dialog","TransitionComponent","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogActions","delete","stateReducer","compensate","initialState","tenantSurname","CreateEngagement","departments","Heimrat","Finanzen","Netzwerk","Tutoren","FS","AA","AaNach","Automat","Bar","BarFinanzen","BarTechnik","Billiard","Computer","Info","Innen","Kultur","Chor","Multimedia","Nachhaltigkeit","NachhaltigkeitHochbeete","Revisor","PR","Saunareferat","Schlichtung","SportFussball","SportVolleyball","SportFitness","Tafel","WMarken","WaMaFlur","WaMaTechnik","WaMaLaufer","Werk","Zimmer","Zeitung","Kreativreferat","HsvVertreter","Extra","semesters","SS24","SS23","SS22","SS21","SS20","SS19","SS18","DepartmentUncompensatedEngagements","fetch","setFetch","engagementIdList","engagement","operation","subject","InfoEmailDistributor","isTest","obj","objCopy","defineTestEmail","DepartmentExTenantTable","infoDepartmentRoutes","AddIcon","EmailIcon","zimmerDepartmentRoutes","DepartmentNewDeparture","departure","amounts","setAmounts","handleSignDeparture","DepartmentNewDepartures","authorities","it","toLowerCase","DepartmentEditDeparture","newAmounts","setNewAmounts","handleUpdateAmount","DepartmentSignedDepartures","DepartmentDeparturesTab","individualTenantPageStyle","regularText","floor","initialPasswordState","oldPassword","newPassword","IndividualTenantPage","setTenant","setPassword","formatDatesInObject","changePassword","IndividualEngagementApplication","imageInputField","useRef","setImage","setApplicationId","validFileExtensions","filesInput","fileExtension","Math","pow","validateImage","target","files","formData","FormData","Blob","IndividualEngagements","fetchEngagements","documents","DepartmentInformation","rel","individualTenantRoutes","PersonIcon","schlichtungDepartmentRoutes","determineUserRoutes","concat","additionalProps","departureRoutes","reduce","result","values","entry","Layout","switchRoutes","createRef","mobileOpen","setMobileOpen","Fragment","PasswordReset","setUsername","loginLink","createContext","exp","process","App","useMemo","Provider","history","exact","itemStr","getItem","getTime","base64","jsonPayload","decodeURIComponent","atob","c","charCodeAt","toString","join","jsonData","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.d8bae464.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logo.50deecdc.png\";","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config)\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n )\n })\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n )\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.')\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type')\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.')\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister()\n })\n .catch((error) => {\n console.error(error.message)\n })\n }\n}\n","const hexToRgb = (input) => {\n input = input + ''\n input = input.replace('#', '')\n if (input === 'undefined')\n input = '0097a7'\n let hexRegex = /[0-9A-Fa-f]/g\n if (!hexRegex.test(input) || (input.length !== 3 && input.length !== 6)) {\n throw new Error('input is not a valid hex color.')\n }\n if (input.length === 3) {\n let first = input[0]\n let second = input[1]\n let last = input[2]\n input = first + first + second + second + last + last\n }\n input = input.toUpperCase(input)\n let first = input[0] + input[1]\n let second = input[2] + input[3]\n let last = input[4] + input[5]\n return parseInt(first, 16) + ', ' + parseInt(second, 16) + ', ' + parseInt(last, 16)\n}\n\nconst drawerWidth = 265\n\nconst containerFluid = {\n paddingRight: '15px',\n paddingLeft: '15px',\n marginRight: 'auto',\n marginLeft: 'auto',\n '&:before,&:after': {\n display: 'table',\n content: '\" \"',\n },\n '&:after': {\n clear: 'both',\n },\n}\n\nconst container = {\n paddingRight: '15px',\n paddingLeft: '15px',\n marginRight: 'auto',\n marginLeft: 'auto',\n '&:before,&:after': {\n display: 'table',\n content: '\" \"',\n },\n '&:after': {\n clear: 'both',\n },\n}\n\nconst transition = {\n transition: 'all 0.33s cubic-bezier(0.685, 0.0473, 0.346, 1)',\n}\n\nconst defaultFont = {\n fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif',\n fontWeight: '300',\n lineHeight: '1.5em',\n}\n\nconst primaryColor = [\n '#77182e',\n '#80162c',\n '#961a33',\n '#540f1d',\n '#c32243',\n '#f19198']\n//\n// const primaryColor = [\n// '#80162c',\n// '#8f1229',\n// '#941e2d',\n// '#f19198']\n\nconst warningColor = [\n '#6a1680',\n '#ffa726',\n '#fb8c00',\n '#ffa21a',\n '#f57c00',\n '#faf2cc',\n '#fcf8e3',\n]\nconst dangerColor = [\n '#A23118',\n '#f44336',\n '#ef5350',\n '#e53935',\n '#d42449',\n '#e35656',\n '#ebcccc',\n '#f2dede',\n]\nconst successColor = [\n '#2c8016',\n '#66bb6a',\n '#43a047',\n '#168035',\n '#388e3c',\n '#d0e9c6',\n '#dff0d8',\n]\nconst infoColor = [\n '#166180',\n // '#162c80',\n '#26c6da',\n '#00acc1',\n '#00d3ee',\n '#0097a7',\n '#c4e3f3',\n '#d9edf7',\n]\nconst roseColor = ['#e91e63', '#ec407a', '#d81b60', '#eb3573', '#c2185b']\nconst grayColor = [\n '#777',\n '#999',\n '#3C4858',\n '#AAAAAA',\n '#D2D2D2',\n '#F5F5F5',\n '#b4b4b4',\n '#555555',\n '#333',\n '#a9afbb',\n '#eee',\n '#ccc',\n '#e4e4e4',\n '#E5E5E5',\n '#f9f9f9',\n '#f5f5f5',\n '#495057',\n '#e7e7e7',\n '#212121',\n '#c8c8c8',\n '#505050',\n]\nconst blackColor = '#000'\nconst whiteColor = '#FFF'\n\nconst boxShadow = {\n boxShadow:\n '0 10px 30px -12px rgba(' +\n hexToRgb(blackColor) +\n ', 0.42), 0 4px 25px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(blackColor) +\n ', 0.2)',\n}\n\nconst primaryBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(primaryColor[0]) +\n ',.4)',\n}\nconst infoBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(infoColor[0]) +\n ',.4)',\n}\nconst successBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(successColor[0]) +\n ',.4)',\n}\nconst warningBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(warningColor[0]) +\n ',.4)',\n}\nconst dangerBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(dangerColor[0]) +\n ',.4)',\n}\nconst roseBoxShadow = {\n boxShadow:\n '0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.14), 0 7px 10px -5px rgba(' +\n hexToRgb(roseColor[0]) +\n ',.4)',\n}\n\nconst warningCardHeader = {\n background:\n 'linear-gradient(60deg, ' + warningColor[1] + ', ' + warningColor[2] + ')',\n ...warningBoxShadow,\n}\nconst successCardHeader = {\n background:\n 'linear-gradient(60deg, ' + successColor[1] + ', ' + successColor[2] + ')',\n ...successBoxShadow,\n}\nconst dangerCardHeader = {\n background:\n 'linear-gradient(60deg, ' + dangerColor[1] + ', ' + dangerColor[2] + ')',\n ...dangerBoxShadow,\n}\nconst infoCardHeader = {\n background:\n 'linear-gradient(60deg, ' + infoColor[1] + ', ' + infoColor[2] + ')',\n ...infoBoxShadow,\n}\nconst primaryCardHeader = {\n background:\n 'linear-gradient(60deg, ' + primaryColor[1] + ', ' + primaryColor[2] + ')',\n ...primaryBoxShadow,\n}\nconst roseCardHeader = {\n background:\n 'linear-gradient(60deg, ' + roseColor[1] + ', ' + roseColor[2] + ')',\n ...roseBoxShadow,\n}\n\nconst card = {\n display: 'inline-block',\n position: 'relative',\n width: '100%',\n margin: '25px 0',\n boxShadow: '0 1px 4px 0 rgba(' + hexToRgb(blackColor) + ', 0.14)',\n borderRadius: '6px',\n color: 'rgba(' + hexToRgb(blackColor) + ', 0.87)',\n background: whiteColor,\n}\n\nconst text = {\n color: 'rgba(' + hexToRgb(blackColor) + ', 0.87)',\n}\n\nconst cardActions = {\n margin: '0 20px 10px',\n paddingTop: '10px',\n borderTop: '1px solid ' + grayColor[8],\n height: 'auto',\n ...defaultFont,\n}\n\nconst cardHeader = {\n margin: '-20px 15px 0',\n borderRadius: '3px',\n padding: '15px',\n}\n\nconst defaultBoxShadow = {\n border: '0',\n borderRadius: '3px',\n boxShadow:\n '0 10px 20px -12px rgba(' +\n hexToRgb(blackColor) +\n ', 0.42), 0 3px 20px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(blackColor) +\n ', 0.2)',\n padding: '10px 0',\n transition: 'all 150ms ease 0s',\n}\n\nconst tooltip = {\n padding: '10px 15px',\n minWidth: '130px',\n color: whiteColor,\n lineHeight: '1.7em',\n background: 'rgba(' + hexToRgb(grayColor[6]) + ',0.9)',\n border: 'none',\n borderRadius: '3px',\n opacity: '1!important',\n boxShadow:\n '0 8px 10px 1px rgba(' +\n hexToRgb(blackColor) +\n ', 0.14), 0 3px 14px 2px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 5px 5px -3px rgba(' +\n hexToRgb(blackColor) +\n ', 0.2)',\n maxWidth: '200px',\n textAlign: 'center',\n fontFamily: '\"Helvetica Neue\",Helvetica,Arial,sans-serif',\n fontSize: '12px',\n fontStyle: 'normal',\n fontWeight: '400',\n textShadow: 'none',\n textTransform: 'none',\n letterSpacing: 'normal',\n wordBreak: 'normal',\n wordSpacing: 'normal',\n wordWrap: 'normal',\n whiteSpace: 'normal',\n lineBreak: 'auto',\n}\n\nconst title = {\n color: grayColor[2],\n textDecoration: 'none',\n fontWeight: '300',\n marginTop: '30px',\n marginBottom: '25px',\n minHeight: '32px',\n fontFamily: '\\'Roboto\\', \\'Helvetica\\', \\'Arial\\', sans-serif',\n '& small': {\n color: grayColor[1],\n fontSize: '65%',\n fontWeight: '400',\n lineHeight: '1',\n },\n}\n\nconst cardTitle = {\n ...title,\n marginTop: '0',\n marginBottom: '3px',\n minHeight: 'auto',\n '& a': {\n ...title,\n marginTop: '.625rem',\n marginBottom: '0.75rem',\n minHeight: 'auto',\n },\n}\n\nconst cardSubtitle = {\n marginTop: '-.375rem',\n}\n\nconst cardLink = {\n '& + $cardLink': {\n marginLeft: '1.25rem',\n },\n}\n\nconst description = {\n color: grayColor[0],\n}\n\nconst mAuto = {\n margin: 'auto',\n}\n\nconst mlAuto = {\n marginLeft: 'auto',\n}\n\nconst mrAuto = {\n marginRight: 'auto',\n}\n\n\nexport {\n hexToRgb,\n drawerWidth,\n transition,\n container,\n containerFluid,\n boxShadow,\n card,\n defaultFont,\n primaryColor,\n warningColor,\n dangerColor,\n successColor,\n infoColor,\n roseColor,\n grayColor,\n blackColor,\n whiteColor,\n primaryBoxShadow,\n infoBoxShadow,\n successBoxShadow,\n warningBoxShadow,\n dangerBoxShadow,\n roseBoxShadow,\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader,\n cardActions,\n cardHeader,\n defaultBoxShadow,\n tooltip,\n title,\n cardTitle,\n cardSubtitle,\n cardLink,\n description,\n mlAuto,\n mrAuto,\n mAuto,\n text,\n}\n","import {\n grayColor,\n primaryColor,\n infoColor,\n successColor,\n warningColor,\n dangerColor,\n roseColor,\n whiteColor,\n blackColor,\n hexToRgb,\n} from 'assets/jss/app.js'\n\nconst buttonStyle = {\n button: {\n display: 'inline-flex',\n minHeight: 'auto',\n minWidth: 'auto',\n backgroundColor: grayColor[0],\n color: whiteColor,\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.12)',\n border: 'none',\n borderRadius: '3px',\n position: 'relative',\n padding: '12px 30px',\n margin: '.3125rem 1px',\n fontSize: '12px',\n fontWeight: '400',\n textTransform: 'uppercase',\n letterSpacing: '0',\n willChange: 'box-shadow, transform',\n transition: 'box-shadow 0.2s cubic-bezier(0.4, 0, 1, 1), background-color 0.2s cubic-bezier(0.4, 0, 0.2, 1)',\n lineHeight: '1.42857143',\n textAlign: 'center',\n whiteSpace: 'nowrap',\n verticalAlign: 'middle',\n touchAction: 'manipulation',\n cursor: 'pointer',\n '&:hover,&:focus': {\n color: whiteColor,\n backgroundColor: grayColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.2)',\n },\n '& .fab,& .fas,& .far,& .fal, &.material-icons': {\n position: 'relative',\n display: 'inline-block',\n top: '0',\n marginTop: '-1em',\n marginBottom: '-1em',\n fontSize: '1.1rem',\n marginRight: '4px',\n verticalAlign: 'middle',\n },\n '& svg': {\n position: 'relative',\n display: 'inline-block',\n top: '0',\n width: '18px',\n height: '18px',\n marginRight: '4px',\n verticalAlign: 'middle',\n },\n '&$justIcon': {\n '& .fab,& .fas,& .far,& .fal,& .material-icons': {\n marginTop: '0px',\n position: 'absolute',\n width: '100%',\n transform: 'none',\n left: '0px',\n top: '0px',\n height: '100%',\n lineHeight: '41px',\n fontSize: '20px',\n },\n },\n },\n white: {\n '&,&:focus,&:hover': {\n backgroundColor: whiteColor,\n color: grayColor[0],\n },\n },\n gray: {\n backgroundColor: grayColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: grayColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(grayColor[0]) +\n ', 0.2)',\n },\n },\n rose: {\n backgroundColor: roseColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(roseColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(roseColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(roseColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: roseColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(roseColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(roseColor[0]) +\n ', 0.2)',\n },\n },\n primary: {\n backgroundColor: primaryColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(primaryColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(primaryColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(primaryColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: primaryColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(primaryColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(primaryColor[0]) +\n ', 0.2)',\n },\n },\n info: {\n backgroundColor: infoColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(infoColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(infoColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(infoColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: infoColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(infoColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(infoColor[0]) +\n ', 0.2)',\n },\n },\n success: {\n backgroundColor: successColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(successColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(successColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(successColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: successColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(successColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(successColor[0]) +\n ', 0.2)',\n },\n },\n warning: {\n backgroundColor: warningColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(warningColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(warningColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(warningColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: warningColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(warningColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(warningColor[0]) +\n ', 0.2)',\n },\n },\n danger: {\n backgroundColor: dangerColor[0],\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(dangerColor[0]) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(dangerColor[0]) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(dangerColor[0]) +\n ', 0.12)',\n '&:hover,&:focus': {\n backgroundColor: dangerColor[0],\n boxShadow:\n '0 14px 26px -12px rgba(' +\n hexToRgb(dangerColor[0]) +\n ', 0.42), 0 4px 23px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(dangerColor[0]) +\n ', 0.2)',\n },\n },\n simple: {\n '&,&:focus,&:hover': {\n color: whiteColor,\n background: 'transparent',\n boxShadow: 'none',\n },\n '&$rose': {\n '&,&:focus,&:hover,&:visited': {\n color: roseColor[0],\n },\n },\n '&$primary': {\n '&,&:focus,&:hover,&:visited': {\n color: primaryColor[0],\n },\n },\n '&$info': {\n '&,&:focus,&:hover,&:visited': {\n color: infoColor[0],\n },\n },\n '&$success': {\n '&,&:focus,&:hover,&:visited': {\n color: successColor[0],\n },\n },\n '&$warning': {\n '&,&:focus,&:hover,&:visited': {\n color: warningColor[0],\n },\n },\n '&$danger': {\n '&,&:focus,&:hover,&:visited': {\n color: dangerColor[0],\n },\n },\n },\n transparent: {\n '&,&:focus,&:hover': {\n color: 'inherit',\n background: 'transparent',\n boxShadow: 'none',\n },\n },\n disabled: {\n opacity: '0.65',\n pointerEvents: 'none',\n },\n lg: {\n padding: '1.125rem 2.25rem',\n fontSize: '0.875rem',\n lineHeight: '1.333333',\n borderRadius: '0.2rem',\n },\n sm: {\n padding: '0.40625rem 1.25rem',\n fontSize: '0.6875rem',\n lineHeight: '1.5',\n borderRadius: '0.2rem',\n },\n round: {\n borderRadius: '30px',\n },\n block: {\n width: '100% !important',\n },\n link: {\n '&,&:hover,&:focus': {\n backgroundColor: 'transparent',\n color: grayColor[0],\n boxShadow: 'none',\n },\n },\n justIcon: {\n paddingLeft: '12px',\n paddingRight: '12px',\n fontSize: '20px',\n height: '41px',\n minWidth: '41px',\n width: '41px',\n '& .fab,& .fas,& .far,& .fal,& svg,& .material-icons': {\n marginRight: '0px',\n },\n '&$lg': {\n height: '57px',\n minWidth: '57px',\n width: '57px',\n lineHeight: '56px',\n '& .fab,& .fas,& .far,& .fal,& .material-icons': {\n fontSize: '32px',\n lineHeight: '56px',\n },\n '& svg': {\n width: '32px',\n height: '32px',\n },\n },\n '&$sm': {\n height: '30px',\n minWidth: '30px',\n width: '30px',\n '& .fab,& .fas,& .far,& .fal,& .material-icons': {\n fontSize: '17px',\n lineHeight: '29px',\n },\n '& svg': {\n width: '17px',\n height: '17px',\n },\n },\n },\n}\n\nexport default buttonStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n\n// material-ui components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Button from '@material-ui/core/Button'\n\nimport styles from 'assets/jss/dorm-app/components/buttonStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function RegularButton(props) {\n const classes = useStyles()\n const { color, round, children, disabled, simple, size, block, link, justIcon, className, muiClasses, ...rest } =\n props\n const btnClasses = classNames({\n [classes.button]: true,\n [classes[size]]: size,\n [classes[color]]: color,\n [classes.round]: round,\n [classes.disabled]: disabled,\n [classes.simple]: simple,\n [classes.block]: block,\n [classes.link]: link,\n [classes.justIcon]: justIcon,\n [className]: className,\n })\n return (\n \n )\n}\n\nRegularButton.propTypes = {\n color: PropTypes.oneOf(['primary', 'info', 'success', 'warning', 'danger', 'rose', 'white', 'transparent', 'gray']),\n size: PropTypes.oneOf(['sm', 'lg']),\n simple: PropTypes.bool,\n round: PropTypes.bool,\n disabled: PropTypes.bool,\n block: PropTypes.bool,\n link: PropTypes.bool,\n justIcon: PropTypes.bool,\n className: PropTypes.string,\n // use this to pass the classes props from Material-UI\n muiClasses: PropTypes.object,\n children: PropTypes.node,\n}\n","import axios from 'axios'\nimport { apiUrl, getWithExpiry } from '../App'\n\n\nexport function getApiUrl(params) {\n\n if (params != null)\n return axios.create({\n baseURL: apiUrl,\n headers: authHeader(),\n params: params,\n })\n else return axios.create({\n baseURL: apiUrl,\n headers: authHeader(),\n })\n}\n\nexport function authHeader() {\n let userState = getWithExpiry('token')\n if (userState && userState.token) {\n return { Authorization: 'Bearer ' + userState.token, 'X-Smartdorm-Dorm-ID': '4885b6d1-bbe4-4d40-bd24-bce33f0d7728' }\n } else {\n return { 'X-Smartdorm-Dorm-ID': '4885b6d1-bbe4-4d40-bd24-bce33f0d7728' }\n }\n}","import React, { useContext, useReducer } from 'react'\nimport Avatar from '@material-ui/core/Avatar'\nimport Button from 'components/button/RegularButton.jsx'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport TextField from '@material-ui/core/TextField'\nimport Box from '@material-ui/core/Box'\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Container from '@material-ui/core/Container'\nimport { parseJwt, UserContext } from '../../App'\nimport red from '@material-ui/core/colors/red'\nimport { useHistory } from 'react-router-dom'\nimport { useLocation } from 'react-router'\nimport { getApiUrl } from '../../api/api'\n\n// function Copyright() {\n// return (\n// \n// Powered by Netzwerkreferat\n// \n// )\n// }\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%',\n marginTop: theme.spacing(1),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n },\n}))\n\nfunction loginReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n\n case 'success':\n return {\n ...initialLoginState,\n isError: false,\n errorMessage: '',\n }\n\n case 'error':\n return {\n ...state,\n isError: true,\n // errorMessage: action.errorMessage.message,\n errorMessage: 'Die Login-Daten sind nicht korrekt.',\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialLoginState = {\n isError: false,\n errorMessage: '',\n username: '',\n password: '',\n}\n\nexport default function Login() {\n const classes = useStyles()\n\n const { setUser } = useContext(UserContext)\n\n const hist = useHistory()\n\n const [state, dispatch] = useReducer(loginReducer, initialLoginState)\n\n const resetPasswordLink = () => hist.push('/password-reset')\n\n let search = useLocation().search\n let redirect\n if (search != null) redirect = search.split('=')[1]\n\n const submitForm = (e) => {\n e.preventDefault()\n\n getApiUrl()\n .post(`/authenticate`, { username: state.username, password: state.password })\n .then(function(response) {\n let token = response.data['token']\n localStorage.setItem('token', token)\n dispatch({ type: 'success' })\n setUser(parseJwt(token))\n redirect != null ? hist.push(redirect) : hist.push('/dashboard')\n })\n .catch(function(error) {\n dispatch({ type: 'error', errorMessage: error })\n console.log('Error message: ' + error)\n })\n }\n\n return (\n \n \n
\n \n \n \n \n Anmelden\n \n
\n \n dispatch({\n type: 'field',\n field: 'username',\n value: e.currentTarget.value,\n })\n }\n />\n \n dispatch({\n type: 'field',\n field: 'password',\n value: e.currentTarget.value,\n })\n }\n />\n {\n submitForm(e)\n }}>\n Anmelden\n \n \n
\n {state.isError ? (\n \n

{state.errorMessage}

\n
\n ) : null}\n\n \n
\n \n {' '}\n Passwort vergessen?{' '}\n \n
\n
\n
\n )\n}\n","import React from 'react'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Grid from '@material-ui/core/Grid'\n\nconst styles = {\n grid: {\n margin: '0 -15px !important',\n width: 'unset',\n },\n}\n\nconst useStyles = makeStyles(styles)\n\nexport default function GridContainer(props) {\n const classes = useStyles()\n const { children, ...rest } = props\n return (\n \n {children}\n \n )\n}\n\nGridContainer.propTypes = {\n children: PropTypes.node,\n}\n","import React from 'react'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Grid from '@material-ui/core/Grid'\n\nconst styles = {\n grid: {\n padding: '0 15px !important',\n },\n}\n\nconst useStyles = makeStyles(styles)\n\nexport default function GridItem(props) {\n const classes = useStyles()\n const { children, ...rest } = props\n return (\n \n {children}\n \n )\n}\n\nGridItem.propTypes = {\n children: PropTypes.node,\n}\n","import { blackColor, cardTitle, description, grayColor, hexToRgb, whiteColor, mlAuto, mrAuto, mAuto } from 'assets/jss/app.js'\n\nconst cardStyle = {\n cardTitle,\n mlAuto,\n mrAuto,\n mAuto,\n card: {\n border: '0',\n marginBottom: '30px',\n marginTop: '30px',\n borderRadius: '6px',\n color: 'rgba(' + hexToRgb(blackColor) + ', 0.87)',\n background: whiteColor,\n width: '100%',\n boxShadow:\n '0 2px 2px 0 rgba(' +\n hexToRgb(blackColor) +\n ', 0.14), 0 3px 1px -2px rgba(' +\n hexToRgb(blackColor) +\n ', 0.2), 0 1px 5px 0 rgba(' +\n hexToRgb(blackColor) +\n ', 0.12)',\n position: 'relative',\n display: 'flex',\n flexDirection: 'column',\n minWidth: '0',\n wordWrap: 'break-word',\n fontSize: '.875rem',\n '@media all and (-ms-high-contrast: none), (-ms-high-contrast: active)': {\n display: 'inline-block !important',\n },\n },\n nestedCard: {\n padding: '15px',\n background: grayColor[5],\n // maxWidth: '100%',\n },\n cardPlain: {\n background: 'transparent',\n boxShadow: 'none',\n },\n cardProfile: {\n marginTop: '30px',\n textAlign: 'center',\n },\n cardChart: {\n '& p': {\n marginTop: '0px',\n paddingTop: '0px',\n },\n },\n cardDescription: {\n ...description,\n },\n cardCategory: {\n marginTop: '10px',\n '& svg': {\n position: 'relative',\n top: '8px',\n },\n },\n cardRaised: {\n boxShadow:\n '0 16px 38px -12px rgba(' +\n hexToRgb(blackColor) +\n ', 0.56), 0 4px 25px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 8px 10px -5px rgba(' +\n hexToRgb(blackColor) +\n ', 0.2)',\n },\n header: {\n ...mAuto,\n marginTop: '30px',\n marginBottom: '30px',\n }\n}\n\nexport default cardStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n// @material-ui/icons\n\n// core components\nimport styles from 'assets/jss/dorm-app/components/cardStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function Card(props) {\n const classes = useStyles()\n const { className, children, plain, profile, chart, raised, nested, ...rest } = props\n const cardClasses = classNames({\n [classes.card]: true,\n [classes.nestedCard]: nested,\n [classes.cardPlain]: plain,\n [classes.cardProfile]: profile,\n [classes.cardChart]: chart,\n [classes.cardRaised]: raised,\n [className]: className !== undefined,\n })\n return (\n
\n {children}\n
\n )\n}\n\nCard.propTypes = {\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n chart: PropTypes.bool,\n children: PropTypes.node,\n raised: PropTypes.bool,\n nested: PropTypes.bool,\n}\n","import {\n warningCardHeader,\n successCardHeader,\n dangerCardHeader,\n infoCardHeader,\n primaryCardHeader,\n roseCardHeader,\n whiteColor,\n} from 'assets/jss/app.js'\n\nconst cardHeaderStyle = {\n cardHeader: {\n padding: '0.75rem 1.25rem',\n marginBottom: '0',\n borderBottom: 'none',\n background: 'transparent',\n zIndex: '3 !important',\n '&$cardHeaderPlain,&$cardHeaderIcon,&$cardHeaderStats,&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader': {\n margin: '0 15px',\n padding: '0',\n position: 'relative',\n color: whiteColor,\n },\n '&:first-child': {\n borderRadius: 'calc(.25rem - 1px) calc(.25rem - 1px) 0 0',\n },\n '&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader': {\n '&:not($cardHeaderIcon)': {\n borderRadius: '3px',\n marginTop: '-20px',\n padding: '15px',\n },\n },\n '&$cardHeaderStats svg': {\n fontSize: '36px',\n lineHeight: '56px',\n textAlign: 'center',\n width: '36px',\n height: '36px',\n margin: '10px 10px 4px',\n },\n '&$cardHeaderStats i,&$cardHeaderStats .material-icons': {\n fontSize: '36px',\n lineHeight: '56px',\n width: '56px',\n height: '56px',\n textAlign: 'center',\n overflow: 'unset',\n marginBottom: '1px',\n },\n '&$cardHeaderStats$cardHeaderIcon': {\n textAlign: 'right',\n },\n },\n cardHeaderPlain: {\n marginLeft: '0px !important',\n marginRight: '0px !important',\n },\n cardHeaderStats: {\n '& $cardHeaderIcon': {\n textAlign: 'right',\n },\n '& h1,& h2,& h3,& h4,& h5,& h6': {\n margin: '0 !important',\n },\n },\n cardHeaderIcon: {\n '&$warningCardHeader,&$successCardHeader,&$dangerCardHeader,&$infoCardHeader,&$primaryCardHeader,&$roseCardHeader': {\n background: 'transparent',\n boxShadow: 'none',\n },\n '& i,& .material-icons': {\n width: '33px',\n height: '33px',\n textAlign: 'center',\n lineHeight: '33px',\n },\n '& svg': {\n width: '24px',\n height: '24px',\n textAlign: 'center',\n lineHeight: '33px',\n margin: '5px 4px 0px',\n },\n },\n warningCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...warningCardHeader,\n },\n },\n successCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...successCardHeader,\n },\n },\n dangerCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...dangerCardHeader,\n },\n },\n infoCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...infoCardHeader,\n },\n },\n primaryCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...primaryCardHeader,\n },\n },\n roseCardHeader: {\n color: whiteColor,\n '&:not($cardHeaderIcon)': {\n ...roseCardHeader,\n },\n },\n}\n\nexport default cardHeaderStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n// @material-ui/icons\n\n// core components\nimport styles from 'assets/jss/dorm-app/components/cardHeaderStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CardHeader(props) {\n const classes = useStyles()\n const { className, children, color, plain, stats, icon, ...rest } = props\n const cardHeaderClasses = classNames({\n [classes.cardHeader]: true,\n [classes[color + 'CardHeader']]: color,\n [classes.cardHeaderPlain]: plain,\n [classes.cardHeaderStats]: stats,\n [classes.cardHeaderIcon]: icon,\n [className]: className !== undefined,\n })\n return (\n
\n {children}\n
\n )\n}\n\nCardHeader.propTypes = {\n className: PropTypes.string,\n color: PropTypes.oneOf(['warning', 'success', 'danger', 'info', 'primary', 'rose']),\n plain: PropTypes.bool,\n stats: PropTypes.bool,\n icon: PropTypes.bool,\n children: PropTypes.node,\n}\n","const cardBodyStyle = {\n cardBody: {\n padding: '0.9375rem 20px',\n flex: '1 1 auto',\n WebkitBoxFlex: '1',\n position: 'relative',\n },\n cardBodyPlain: {\n paddingLeft: '5px',\n paddingRight: '5px',\n },\n cardBodyProfile: {\n marginTop: '15px',\n },\n}\n\nexport default cardBodyStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n// @material-ui/icons\n\n// core components\nimport styles from 'assets/jss/dorm-app/components/cardBodyStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CardBody(props) {\n const classes = useStyles()\n const { className, children, plain, profile, ...rest } = props\n const cardBodyClasses = classNames({\n [classes.cardBody]: true,\n [classes.cardBodyPlain]: plain,\n [classes.cardBodyProfile]: profile,\n [className]: className !== undefined,\n })\n return (\n
\n {children}\n
\n )\n}\n\nCardBody.propTypes = {\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n children: PropTypes.node,\n}\n","import { dangerColor, defaultFont, grayColor, primaryColor, successColor } from 'assets/jss/app.js'\nimport { blackColor, hexToRgb } from '../../app'\n\nconst customInputStyle = {\n disabled: {\n '&:before': {\n backgroundColor: 'transparent !important',\n },\n },\n underline: {\n '&:hover:not($disabled):before,&:before': {\n borderColor: grayColor[4] + ' !important',\n borderWidth: '1px !important',\n },\n '&:after': {\n borderColor: primaryColor[0],\n },\n },\n underlineError: {\n '&:after': {\n borderColor: dangerColor[0],\n },\n },\n underlineSuccess: {\n '&:after': {\n borderColor: successColor[0],\n },\n },\n labelRoot: {\n ...defaultFont,\n color: grayColor[3] + ' !important',\n fontWeight: '400',\n fontSize: '14px',\n lineHeight: '1.42857',\n letterSpacing: 'unset',\n },\n labelRootError: {\n color: dangerColor[0],\n },\n labelRootSuccess: {\n color: successColor[0],\n },\n feedback: {\n position: 'absolute',\n top: '18px',\n right: '0',\n zIndex: '2',\n display: 'block',\n width: '24px',\n height: '24px',\n textAlign: 'center',\n pointerEvents: 'none',\n },\n marginTop: {\n marginTop: '16px',\n },\n marginTop40: {\n marginTop: '43px',\n },\n formControlWithoutMargin: {\n paddingBottom: '10px',\n position: 'relative',\n verticalAlign: 'unset',\n },\n formControl: {\n paddingBottom: '10px',\n margin: '27px 0 0 0',\n position: 'relative',\n verticalAlign: 'unset',\n },\n dateLabel: {\n top: '-20px',\n position: 'relative',\n cursor: 'pointer',\n paddingLeft: '0',\n color: 'rgba(' + hexToRgb(blackColor) + ', 0.26)',\n fontSize: '11px',\n lineHeight: '1.428571429',\n fontWeight: '400',\n display: 'inline-flex',\n },\n}\n\nexport default customInputStyle\n","import React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Input from '@material-ui/core/Input'\n// @material-ui/icons\nimport Clear from '@material-ui/icons/Clear'\nimport Check from '@material-ui/icons/Check'\n// core components\nimport styles from 'assets/jss/dorm-app/components/customInputStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CustomInput(props) {\n const classes = useStyles()\n const { formControlProps, labelText, id, labelProps, inputProps, error, success } = props\n\n const labelClasses = classNames({\n [' ' + classes.labelRootError]: error,\n [' ' + classes.labelRootSuccess]: success && !error,\n })\n const underlineClasses = classNames({\n [classes.underlineError]: error,\n [classes.underlineSuccess]: success && !error,\n [classes.underline]: true,\n })\n const marginTop = classNames({\n [classes.marginTop]: labelText === undefined,\n })\n return (\n \n {labelText !== undefined ? (\n \n {labelText}\n \n ) : null}\n \n {error ? (\n \n ) : success ? (\n \n ) : null}\n \n )\n}\n\nCustomInput.propTypes = {\n labelText: PropTypes.node,\n labelProps: PropTypes.object,\n id: PropTypes.string,\n inputProps: PropTypes.object,\n formControlProps: PropTypes.object,\n error: PropTypes.bool,\n success: PropTypes.bool,\n}\n","import { grayColor } from 'assets/jss/app.js'\n\nconst cardFooterStyle = {\n cardFooter: {\n padding: '0',\n paddingTop: '10px',\n margin: '0 15px 10px',\n borderRadius: '0',\n justifyContent: 'space-between',\n alignItems: 'center',\n display: 'flex',\n backgroundColor: 'transparent',\n border: '0',\n },\n cardFooterProfile: {\n marginTop: '-15px',\n },\n cardFooterPlain: {\n paddingLeft: '5px',\n paddingRight: '5px',\n backgroundColor: 'transparent',\n },\n cardFooterStats: {\n borderTop: '1px solid ' + grayColor[10],\n marginTop: '20px',\n '& svg': {\n position: 'relative',\n top: '4px',\n marginRight: '3px',\n marginLeft: '3px',\n width: '16px',\n height: '16px',\n },\n '& .fab,& .fas,& .far,& .fal,& .material-icons': {\n fontSize: '16px',\n position: 'relative',\n top: '4px',\n marginRight: '3px',\n marginLeft: '3px',\n },\n },\n cardFooterChart: {\n borderTop: '1px solid ' + grayColor[10],\n },\n}\n\nexport default cardFooterStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n// @material-ui/icons\n\n// core components\nimport styles from 'assets/jss/dorm-app/components/cardFooterStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CardFooter(props) {\n const classes = useStyles()\n const { className, children, plain, profile, stats, chart, ...rest } = props\n const cardFooterClasses = classNames({\n [classes.cardFooter]: true,\n [classes.cardFooterPlain]: plain,\n [classes.cardFooterProfile]: profile,\n [classes.cardFooterStats]: stats,\n [classes.cardFooterChart]: chart,\n [className]: className !== undefined,\n })\n return (\n
\n {children}\n
\n )\n}\n\nCardFooter.propTypes = {\n className: PropTypes.string,\n plain: PropTypes.bool,\n profile: PropTypes.bool,\n stats: PropTypes.bool,\n chart: PropTypes.bool,\n children: PropTypes.node,\n}\n","import {\n defaultFont,\n primaryBoxShadow,\n infoBoxShadow,\n successBoxShadow,\n warningBoxShadow,\n dangerBoxShadow,\n roseBoxShadow,\n whiteColor,\n blackColor,\n grayColor,\n infoColor,\n successColor,\n dangerColor,\n roseColor,\n primaryColor,\n warningColor,\n hexToRgb,\n} from 'assets/jss/app.js'\n\nconst snackbarContentStyle = {\n root: {\n ...defaultFont,\n flexWrap: 'unset',\n position: 'relative',\n padding: '20px 15px',\n lineHeight: '20px',\n marginBottom: '20px',\n fontSize: '14px',\n backgroundColor: whiteColor,\n color: grayColor[7],\n borderRadius: '3px',\n minWidth: 'unset',\n maxWidth: 'unset',\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(whiteColor) +\n ', 0.28), 0 4px 20px 0px rgba(' +\n hexToRgb(blackColor) +\n ', 0.12), 0 7px 8px -5px rgba(' +\n hexToRgb(whiteColor) +\n ', 0.2)',\n },\n top20: {\n top: '20px',\n },\n top40: {\n top: '40px',\n },\n info: {\n backgroundColor: infoColor[3],\n color: whiteColor,\n ...infoBoxShadow,\n },\n success: {\n backgroundColor: successColor[3],\n color: whiteColor,\n ...successBoxShadow,\n },\n warning: {\n backgroundColor: warningColor[3],\n color: whiteColor,\n ...warningBoxShadow,\n },\n danger: {\n backgroundColor: dangerColor[3],\n color: whiteColor,\n ...dangerBoxShadow,\n },\n primary: {\n backgroundColor: primaryColor[3],\n color: whiteColor,\n ...primaryBoxShadow,\n },\n rose: {\n backgroundColor: roseColor[3],\n color: whiteColor,\n ...roseBoxShadow,\n },\n message: {\n padding: '0',\n display: 'block',\n maxWidth: '89%',\n },\n close: {\n width: '11px',\n height: '11px',\n },\n iconButton: {\n width: '24px',\n height: '24px',\n padding: '0px',\n },\n icon: {\n display: 'block',\n left: '15px',\n position: 'absolute',\n top: '50%',\n marginTop: '-15px',\n width: '30px',\n height: '30px',\n },\n infoIcon: {\n color: infoColor[3],\n },\n successIcon: {\n color: successColor[3],\n },\n warningIcon: {\n color: warningColor[3],\n },\n dangerIcon: {\n color: dangerColor[3],\n },\n primaryIcon: {\n color: primaryColor[3],\n },\n roseIcon: {\n color: roseColor[3],\n },\n iconMessage: {\n paddingLeft: '50px',\n display: 'block',\n },\n actionRTL: {\n marginLeft: '-8px',\n marginRight: 'auto',\n },\n}\n\nexport default snackbarContentStyle\n","import React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Snack from '@material-ui/core/Snackbar'\nimport IconButton from '@material-ui/core/IconButton'\n// @material-ui/icons\nimport Close from '@material-ui/icons/Close'\n// core components\nimport styles from 'assets/jss/dorm-app/components/snackbarContentStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function Snackbar(props) {\n const classes = useStyles()\n const { message, color, close, icon, place, open } = props\n var action = []\n const messageClasses = classNames({\n [classes.iconMessage]: icon !== undefined,\n })\n if (close !== undefined) {\n action = [\n props.closeNotification()}>\n \n ,\n ]\n }\n return (\n \n {icon !== undefined ? : null}\n {message}\n \n }\n action={action}\n ContentProps={{\n classes: {\n root: classes.root + ' ' + classes[color],\n message: classes.message,\n },\n }}\n />\n )\n}\n\nSnackbar.propTypes = {\n message: PropTypes.node.isRequired,\n color: PropTypes.oneOf(['info', 'success', 'warning', 'danger', 'primary']),\n close: PropTypes.bool,\n icon: PropTypes.object,\n place: PropTypes.oneOf(['tl', 'tr', 'tc', 'br', 'bl', 'bc']),\n open: PropTypes.bool,\n closeNotification: PropTypes.func,\n}\n","const containerFluid = {\n paddingRight: '15px',\n paddingLeft: '15px',\n marginRight: 'auto',\n marginLeft: 'auto',\n width: '100%',\n}\nconst container = {\n ...containerFluid,\n '@media (min-width: 576px)': {\n maxWidth: '540px',\n },\n '@media (min-width: 768px)': {\n maxWidth: '720px',\n },\n '@media (min-width: 992px)': {\n maxWidth: '960px',\n },\n '@media (min-width: 1200px)': {\n maxWidth: '1140px',\n },\n}\n\nconst containerStyle = {\n container: {\n ...container,\n zIndex: 1,\n },\n}\n\nexport default containerStyle\n","import { grayColor } from 'assets/jss/app.js'\n\nconst modalStyle = {\n modalRoot: {\n overflow: 'auto',\n alignItems: 'unset',\n justifyContent: 'unset',\n },\n modal: {\n borderRadius: '6px',\n marginTop: '100px !important',\n overflow: 'visible',\n maxHeight: 'unset',\n position: 'relative',\n height: 'fit-content',\n },\n modalHeader: {\n borderBottom: 'none',\n paddingTop: '24px',\n paddingRight: '24px',\n paddingBottom: '0',\n paddingLeft: '24px',\n minHeight: '16.43px',\n },\n modalTitle: {\n margin: '0',\n lineHeight: '1.42857143',\n },\n modalCloseButton: {\n color: grayColor[0],\n marginTop: '-12px',\n WebkitAppearance: 'none',\n padding: '0',\n cursor: 'pointer',\n background: '0 0',\n border: '0',\n fontSize: 'inherit',\n opacity: '.9',\n textShadow: 'none',\n fontWeight: '700',\n lineHeight: '1',\n float: 'right',\n },\n modalClose: {\n width: '16px',\n height: '16px',\n },\n modalBody: {\n paddingTop: '24px',\n paddingRight: '24px',\n paddingBottom: '16px',\n paddingLeft: '24px',\n position: 'relative',\n overflow: 'visible',\n },\n modalFooter: {\n padding: '15px',\n textAlign: 'right',\n paddingTop: '0',\n margin: '0',\n },\n modalFooterCenter: {\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n instructionNoticeModal: {\n marginBottom: '25px',\n },\n imageNoticeModal: {\n maxWidth: '150px',\n },\n modalSmall: {\n width: '300px',\n },\n modalSmallBody: {\n paddingTop: '0',\n },\n modalSmallFooterFirstButton: {\n margin: '0',\n paddingLeft: '16px',\n paddingRight: '16px',\n width: 'auto',\n },\n modalSmallFooterSecondButton: {\n marginBottom: '0',\n marginLeft: '5px',\n },\n}\n\nexport default modalStyle\n","import { defaultFont, grayColor } from 'assets/jss/app.js'\nimport modalStyle from 'assets/jss/dorm-app/modalStyle.js'\n\nconst notificationsStyle= {\n cardTitle: {\n marginTop: '0',\n marginBottom: '3px',\n color: grayColor[2],\n fontSize: '18px',\n },\n cardHeader: {\n zIndex: '3',\n },\n cardSubtitle: {\n ...defaultFont,\n color: grayColor[0],\n fontSize: '14px',\n margin: '0 0 10px',\n },\n center: {\n textAlign: 'center',\n },\n right: {\n textAlign: 'right',\n },\n left: {\n textAlign: 'left',\n },\n marginRight: {\n marginRight: '5px',\n },\n modalSectionTitle: {\n marginTop: '30px',\n },\n ...modalStyle,\n}\n\nexport default notificationsStyle\n","import {\n blackColor,\n defaultFont,\n grayColor,\n hexToRgb,\n primaryBoxShadow,\n primaryColor,\n whiteColor,\n} from 'assets/jss/app.js'\nimport containerStyle from './components/containerStyle'\nimport notificationStyles from './views/notificationsStyle'\n\nconst customSelectStyle = {\n ...containerStyle,\n ...notificationStyles,\n\n cardCategoryWhite: {\n color: 'rgba(255,255,255,.62)',\n margin: '0',\n fontSize: '14px',\n marginTop: '0',\n marginBottom: '0',\n },\n cardTitleWhite: {\n color: '#FFFFFF',\n marginTop: '0px',\n minHeight: 'auto',\n fontWeight: '300',\n fontFamily: '\\'Roboto\\', \\'Helvetica\\', \\'Arial\\', sans-serif',\n marginBottom: '3px',\n textDecoration: 'none',\n },\n formControl: {\n marginTop: '26px',\n },\n select: {\n padding: '12px 0 7px',\n fontWeight: '400',\n lineHeight: '1.42857',\n textDecoration: 'none',\n color: grayColor[2],\n letterSpacing: '0',\n '&:focus': {\n backgroundColor: 'transparent',\n },\n '&[aria-owns] + input + svg': {\n transform: 'rotate(180deg)',\n },\n '& + input + svg': {\n transition: 'all 300ms linear',\n },\n },\n selectFormControl: {\n margin: '19px 0 5px 0 !important',\n '& > div': {\n '&:before': {\n borderBottomWidth: '1px !important',\n borderBottomColor: grayColor[4] + '!important',\n },\n '&:after': {\n borderBottomColor: primaryColor[0] + '!important',\n },\n },\n },\n selectLabel: {\n ...defaultFont,\n fontSize: '14px',\n color: grayColor[3] + ' !important',\n top: '8px',\n lineHeight: '1.42857',\n letterSpacing: 'unset',\n fontWeight: '400',\n },\n selectMenu: {\n '& > div > ul': {\n border: '0',\n padding: '5px 0',\n margin: '0',\n boxShadow: 'none',\n minWidth: '100%',\n borderRadius: '4px',\n boxSizing: 'border-box',\n display: 'block',\n fontSize: '14px',\n textAlign: 'left',\n listStyle: 'none',\n backgroundColor: whiteColor,\n backgroundClip: 'padding-box',\n },\n '& $selectPaper $selectMenuItemSelectedMultiple': {\n backgroundColor: 'inherit',\n },\n '& > div + div': {\n maxHeight: '266px !important',\n },\n },\n selectMenuItem: {\n fontSize: '13px',\n padding: '10px 20px',\n margin: '0 5px',\n borderRadius: '2px',\n transition: 'all 150ms linear',\n display: 'block',\n clear: 'both',\n fontWeight: '400',\n lineHeight: '2',\n whiteSpace: 'nowrap',\n color: grayColor[7],\n paddingRight: '30px',\n '&:hover': {\n backgroundColor: primaryColor[0],\n color: whiteColor,\n ...primaryBoxShadow,\n },\n },\n selectMenuItemSelected: {\n backgroundColor: primaryColor[0] + '!important',\n color: whiteColor,\n },\n selectMenuItemSelectedMultiple: {\n backgroundColor: 'transparent !important',\n '&:hover': {\n backgroundColor: primaryColor[0] + '!important',\n color: whiteColor,\n ...primaryBoxShadow,\n '&:after': {\n color: whiteColor,\n },\n },\n '&:after': {\n top: '16px',\n right: '12px',\n width: '12px',\n height: '5px',\n borderLeft: '2px solid currentColor',\n transform: 'rotate(-45deg)',\n opacity: '1',\n color: grayColor[2],\n position: 'absolute',\n content: '\\'\\'',\n borderBottom: '2px solid currentColor',\n transition: 'opacity 90ms cubic-bezier(0,0,.2,.1)',\n },\n },\n selectPaper: {\n boxSizing: 'borderBox',\n borderRadius: '4px',\n padding: '0',\n minWidth: '100%',\n display: 'block',\n border: '0',\n boxShadow: '0 2px 5px 0 rgba(' + hexToRgb(blackColor) + ', 0.26)',\n backgroundClip: 'padding-box',\n margin: '2px 0 0',\n fontSize: '14px',\n textAlign: 'left',\n listStyle: 'none',\n backgroundColor: 'transparent',\n maxHeight: '266px',\n },\n customTableHeader: {\n fontWeight: '550',\n },\n}\n\nexport default customSelectStyle\n","export const initialNotificationState = {\n open: false,\n message: '',\n color: 'primary',\n}\n","import * as React from 'react'\nimport { useCallback, useEffect, useReducer, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\nimport CustomInput from '../input/CustomInput'\nimport CardFooter from '../card/CardFooter'\nimport Button from '../button/RegularButton'\nimport { timeout } from '../../App'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport styles from '../../assets/jss/dorm-app/customSelectStyle.js'\nimport { useParams } from 'react-router-dom'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nfunction engagementReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'create':\n return {\n ...state,\n }\n case 'fetch':\n return {\n ...action.value,\n }\n case 'success':\n return {\n success: true,\n ...initialEngagementState,\n }\n\n case 'error':\n return {\n errorMessage: action.errorMessage,\n ...initialEngagementState,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialEngagementState = {\n success: false,\n errorMessage: '',\n department: '',\n semester: '',\n tenantName: '',\n tenantEmail: '',\n tenantRoom: '',\n points: '',\n note: '',\n engagementId: '',\n}\n\nexport default function EditEngagement() {\n const classes = useStyles()\n\n const { engagementId } = useParams()\n\n const [state, dispatch] = useReducer(engagementReducer, initialEngagementState)\n const [proceeding, setProceeding] = useState(true)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const fetchEngagement = useCallback(() => {\n getApiUrl()\n .get(`/api/engagements/${engagementId}`)\n .then(function(response) {\n setProceeding(false)\n dispatch({ type: 'fetch', value: response.data })\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [engagementId])\n\n useEffect(() => {\n setProceeding(true)\n fetchEngagement()\n }, [fetchEngagement])\n\n const submitForm = (e) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n\n e.preventDefault()\n\n dispatch({ type: 'create' })\n\n getApiUrl()\n .put(`/api/engagements/${engagementId}`, state)\n .then(function() {\n fetchEngagement()\n setNotification({\n open: true,\n message: 'Erfolgreich aktualisiert',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n \n \n \n

Amt bearbeiten

\n
\n \n \n \n \n dispatch({\n type: 'field',\n field: 'department',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'semester',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'tenantEmail',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'tenantName',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'tenantRoom',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'points',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'note',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n {\n submitForm(e)\n }}>\n Daten aktualisieren\n \n \n
\n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n
\n )\n}\n","import React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\n// @material-ui/icons\nimport Clear from '@material-ui/icons/Clear'\nimport Check from '@material-ui/icons/Check'\nimport { KeyboardDatePicker, MuiPickersUtilsProvider } from '@material-ui/pickers'\nimport DateFnsUtils from '@date-io/date-fns'\nimport deLocale from 'date-fns/locale/de'\n\n// core components\nimport styles from 'assets/jss/dorm-app/components/customInputStyle.js'\nimport { format } from 'date-fns'\n\nconst useStyles = makeStyles(styles)\n\nclass DeLocalizedUtils extends DateFnsUtils {\n getCalendarHeaderText(date) {\n return format(date, 'LLLL', { locale: this.locale })\n }\n\n getDatePickerHeaderText(date) {\n return format(date, 'dd MMMM', { locale: this.locale })\n }\n}\n\nexport default function CustomInput(props) {\n const classes = useStyles()\n const { formControlProps, labelText, error, success, inputProps } = props\n\n const labelClasses = classNames({\n [' ' + classes.dateLabel]: success && !error,\n })\n return (\n \n {labelText !== undefined ? (\n {labelText}\n ) : null}\n
\n \n \n \n {error ? (\n \n ) : success ? (\n \n ) : null}\n
\n
\n )\n}\n\nCustomInput.propTypes = {\n labelText: PropTypes.node,\n labelProps: PropTypes.object,\n id: PropTypes.string,\n inputProps: PropTypes.object,\n formControlProps: PropTypes.object,\n error: PropTypes.bool,\n success: PropTypes.bool,\n}\n","import {\n dangerColor,\n grayColor,\n infoColor,\n primaryColor,\n roseColor,\n successColor,\n warningColor,\n whiteColor,\n} from 'assets/jss/app.js'\n\nconst badgeStyle = {\n badge: {\n borderRadius: '12px',\n padding: '5px 12px',\n textTransform: 'uppercase',\n fontSize: '10px',\n fontWeight: '700',\n lineHeight: '1',\n color: whiteColor,\n textAlign: 'center',\n verticalAlign: 'baseline',\n display: 'inline-block',\n },\n primary: {\n backgroundColor: primaryColor[0],\n },\n warning: {\n backgroundColor: warningColor[0],\n },\n danger: {\n backgroundColor: dangerColor[0],\n },\n success: {\n backgroundColor: successColor[0],\n },\n info: {\n backgroundColor: infoColor[0],\n },\n rose: {\n backgroundColor: roseColor[0],\n },\n gray: {\n backgroundColor: grayColor[0],\n },\n}\n\nexport default badgeStyle\n","import React from 'react'\nimport PropTypes from 'prop-types'\n\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n\nimport styles from 'assets/jss/dorm-app/components/badgeStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function Badge(props) {\n const { color, children } = props\n const classes = useStyles()\n return {children}\n}\n\nBadge.propTypes = {\n color: PropTypes.oneOf(['primary', 'warning', 'danger', 'success', 'info', 'rose', 'gray']),\n children: PropTypes.node,\n}\n","import * as React from 'react'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Select from '@material-ui/core/Select'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styles from '../../../../../assets/jss/dorm-app/customSelectStyle'\n\nconst useStyles = makeStyles(styles)\n\nexport default function UniversitySelect(props) {\n const classes = useStyles()\n\n const { state, dispatch } = props\n\n return (\n \n \n Universität\n \n \n dispatch({\n type: 'field',\n field: 'university',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }\n inputProps={{\n name: 'university',\n id: 'university',\n }}>\n \n TU\n \n \n LMU\n \n \n Hochschule München\n \n \n HFF München\n \n \n Akademie der Bildenden Künste\n \n \n Hochschule für Musik und Theater München\n \n \n FOM\n \n \n Katholische Stiftungshochschule München\n \n \n Hochschule für Philosophie\n \n \n Hochschule für Politik\n \n \n \n )\n}\n","export function stringifyDates(state) {\n let stateCopy = JSON.parse(JSON.stringify(state))\n\n if (state.birthday != null && state.movedIn != null) {\n stateCopy.birthday = stringifyDate(state.birthday)\n stateCopy.movedIn = stringifyDate(state.movedIn)\n }\n\n if (state.movedIn != null && state.movedOut != null) {\n stateCopy.movedIn = stringifyDate(state.movedIn)\n stateCopy.movedOut = stringifyDate(state.movedOut)\n }\n\n if (state.birthday != null && state.movedIn != null && state.movedOut != null) {\n stateCopy.birthday = stringifyDate(state.birthday)\n stateCopy.movedIn = stringifyDate(state.movedIn)\n stateCopy.movedOut = stringifyDate(state.movedOut)\n }\n\n if (state.moveDate != null) {\n stateCopy.moveDate = stringifyDate(state.moveDate)\n }\n\n if (state.moveOutDate != null) {\n stateCopy.moveOutDate = stringifyDate(state.moveOutDate)\n }\n\n return stateCopy\n}\n\nexport function stringifyDate(date) {\n if (date == null) return null\n let year = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(date)\n let month = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(date)\n let day = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(date)\n return `${day}.${month}.${year}`\n}\n\nexport function createDateFromString(date) {\n return new Date(`${date.split('.')[2]}-${date.split('.')[1]}-${date.split('.')[0]}T00:00:00.000`)\n}\n\nexport function formatDatesInObject(obj) {\n let objCopy = JSON.parse(JSON.stringify(obj))\n\n if (obj.birthday != null && obj.movedIn != null) {\n objCopy.birthday = createDateFromString(obj.birthday)\n objCopy.movedIn = createDateFromString(obj.movedIn)\n }\n\n if (obj.movedIn != null && obj.movedOut != null) {\n objCopy.movedIn = createDateFromString(obj.movedIn)\n objCopy.movedOut = createDateFromString(obj.movedOut)\n }\n\n if (obj.birthday != null && obj.movedIn != null && obj.movedOut != null) {\n objCopy.birthday = createDateFromString(obj.birthday)\n objCopy.movedIn = createDateFromString(obj.movedIn)\n objCopy.movedOut = createDateFromString(obj.movedOut)\n }\n\n return objCopy\n}\n","import * as React from 'react'\nimport { useCallback, useEffect, useReducer, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../../../../grid/GridContainer'\nimport GridItem from '../../../../grid/GridItem'\nimport Card from '../../../../card/Card'\nimport CardHeader from '../../../../card/CardHeader'\nimport CardBody from '../../../../card/CardBody'\nimport CustomInput from '../../../../input/CustomInput'\nimport CardFooter from '../../../../card/CardFooter'\nimport Button from '../../../../button/RegularButton'\nimport { timeout } from '../../../../../App'\nimport Snackbar from '../../../../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Select from '@material-ui/core/Select'\nimport { CountryDropdown } from 'react-country-region-selector'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport styles from 'assets/jss/dorm-app/customSelectStyle.js'\nimport { useParams } from 'react-router-dom'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport CustomDateInput from '../../../../input/CustomDateInput'\nimport Table from '@material-ui/core/Table'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableBody from '@material-ui/core/TableBody'\nimport { initialNotificationState } from '../../../../utils/state/ApplicationState'\nimport Badge from '../../../../badge/Badge'\nimport UniversitySelect from './UniversitySelect'\nimport { createDateFromString, stringifyDates } from '../../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nfunction moveReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'create':\n return {\n ...state,\n }\n case 'success':\n return {\n ...initialMoveState,\n success: true,\n }\n case 'error':\n return {\n ...state,\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialMoveState = {\n success: false,\n newRoom: '',\n moveDate: null,\n}\n\nfunction tenantReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'fetch':\n return {\n ...action.value,\n birthday: createDateFromString(action.value.birthday),\n movedOut: createDateFromString(action.value.movedOut),\n movedIn: createDateFromString(action.value.movedIn),\n }\n case 'success':\n return {\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialTenantState = {\n success: false,\n errorMessage: '',\n name: '',\n surname: '',\n email: '',\n telNumber: '',\n birthday: null,\n gender: '',\n nationality: '',\n university: '',\n studyField: '',\n room: '',\n movedIn: null,\n movedOut: null,\n note: '',\n extensionStatus: '',\n tenantId: '',\n deposit: '',\n extension: '',\n sublet: '',\n}\n\nexport default function EditTenantPage() {\n const classes = useStyles()\n\n const { tenantId } = useParams()\n\n const [tenantState, dispatchTenant] = useReducer(tenantReducer, initialTenantState)\n const [moveState, dispatchMove] = useReducer(moveReducer, initialMoveState)\n const [departureDate, setDepartureDate] = useState(null)\n\n const [rentals, setRentals] = useState([])\n const [proceeding, setProceeding] = useState(true)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const fetchRentals = useCallback(() => {\n getApiUrl()\n .get(`/admin/tenants/${tenantId}/rentals`)\n .then(function(response) {\n setProceeding(false)\n setRentals(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [tenantId])\n\n const fetchTenant = useCallback(() => {\n getApiUrl()\n .get(`/admin/tenants/${tenantId}`)\n .then(function(response) {\n setProceeding(false)\n dispatchTenant({ type: 'fetch', value: response.data })\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [tenantId])\n\n useEffect(() => {\n setProceeding(true)\n fetchTenant()\n fetchRentals()\n }, [fetchTenant, fetchRentals])\n\n const handleTerminationSubmit = (e) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n e.preventDefault()\n\n if (departureDate === null) {\n setNotification({\n open: true,\n message: 'Bitte einen Auszugsdatum auswählen.',\n color: 'danger',\n })\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, 2000)\n return\n }\n\n const body = {\n moveOutDate: departureDate,\n tenantId: tenantId,\n }\n\n setProceeding(true)\n getApiUrl()\n .post(`/admin/departures/terminations`, stringifyDates(body))\n .then(function() {\n fetchTenant()\n fetchRentals()\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Kündigung wurde erstellt.',\n color: 'success',\n })\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const submitMove = (e) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n e.preventDefault()\n\n dispatchMove({ type: 'create' })\n\n getApiUrl()\n .post(`/admin/tenants/${tenantId}/move`, stringifyDates(moveState))\n .then(function() {\n fetchTenant()\n fetchRentals()\n setNotification({\n open: true,\n message: 'Bewohner erfolgreich umgezogen.',\n color: 'success',\n })\n dispatchMove({ type: 'success' })\n })\n .catch(function(error) {\n dispatchMove({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const submitEdit = (e) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n e.preventDefault()\n\n getApiUrl()\n .put(`/admin/tenants/${tenantId}`, stringifyDates(tenantState))\n .then(function() {\n fetchTenant()\n fetchRentals()\n setNotification({\n open: true,\n message: 'Bewohner aktualisiert',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatchTenant({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n \n \n \n

Bewohner bearbeiten

\n
\n \n \n \n \n dispatchTenant({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'surname',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'email',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'telNumber',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n Geschlecht\n \n \n dispatchTenant({\n type: 'field',\n field: 'gender',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }\n inputProps={{\n name: 'gender',\n id: 'gender',\n }}>\n \n Männlich\n \n \n Weiblich\n \n \n Divers\n \n \n \n \n \n \n dispatchTenant({\n type: 'field',\n field: 'birthday',\n value: date,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'nationality',\n value: val,\n })\n }\n classes={`MuiSelect-root MuiInputBase-input`}\n style={{\n width: '100%',\n margin: '47px 0 0 0',\n position: 'relative',\n verticalAlign: 'unset',\n font: 'inherit',\n fontWeight: '400',\n cursor: 'pointer',\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'studyField',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n \n \n dispatchTenant({\n type: 'field',\n field: 'deposit',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'room',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'movedIn',\n value: date,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'movedOut',\n value: date,\n }),\n }}\n />\n \n \n \n \n \n dispatchTenant({\n type: 'field',\n field: 'note',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n {\n submitEdit(e)\n }}>\n Daten aktualisieren\n \n \n
\n
\n
\n \n \n \n \n

Verlängerungen

\n
\n \n \n \n \n dispatchTenant({\n type: 'field',\n field: 'extension',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchTenant({\n type: 'field',\n field: 'sublet',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n {tenantState.extensionStatus === 'PROCESSING' ? (\n \n
\n Verlängerungsbewerbung gestellt\n
\n
\n ) : null}\n {tenantState.extensionStatus === 'CREATED' ? (\n \n
\n Verlängerungsbewerbung offen\n
\n
\n ) : null}\n
\n
\n
\n
\n
\n \n \n \n \n

Anmietungen

\n
\n \n \n \n \n \n \n Zimmer\n Einzug\n Auszug\n \n \n \n {rentals.map((rental) => (\n \n {rental.room}\n {rental.movedIn}\n {rental.movedOut}\n \n ))}\n \n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n

Umzug

\n
\n \n \n \n \n dispatchMove({\n type: 'field',\n field: 'newRoom',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatchMove({\n type: 'field',\n field: 'moveDate',\n value: date,\n }),\n }}\n />\n \n \n \n \n {\n submitMove(e)\n }}>\n umziehen\n \n \n
\n
\n
\n \n \n \n \n

Kündigung

\n
\n \n \n \n setDepartureDate(date),\n }}\n />\n \n \n \n \n {\n handleTerminationSubmit(e)\n }}>\n Kündigen\n \n \n
\n
\n
\n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n )\n}\n","import {\n dangerColor,\n} from 'assets/jss/app.js'\n\nconst departmentSignaturesStyle = {\n dangerBackground: {\n backgroundColor: dangerColor[5]\n },\n}\n\nexport default departmentSignaturesStyle\n","import * as React from 'react'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport Table from '@material-ui/core/Table'\nimport TableHead from '@material-ui/core/TableHead'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styles from 'assets/jss/dorm-app/components/departmentSignaturesStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function DepartmentSignatures(props) {\n const classes = useStyles()\n\n const departments = ['Flursprecher', 'Barreferat', 'Finanzenreferat', 'Innenreferat', 'Werkreferat', 'Tutoren']\n\n return (\n \n \n \n Amt\n Unterschrieben am\n Betrag\n \n \n \n {departments.map(function (department) {\n let signature = props.signatures.filter((sg) => sg.departmentName.includes(department))[0]\n return signature ? (\n 0 ? classes.dangerBackground : ''}>\n {signature.departmentName}\n {signature.signedOn}\n {signature.amount} Euro\n \n ) : (\n \n {department}\n -\n -\n \n )\n })}\n \n
\n )\n}\n","import * as React from 'react'\nimport { useCallback, useEffect, useReducer, useState } from 'react'\nimport GridItem from '../../grid/GridItem'\nimport Card from '../../card/Card'\nimport CardHeader from '../../card/CardHeader'\nimport CardBody from '../../card/CardBody'\nimport GridContainer from '../../grid/GridContainer'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { useParams } from 'react-router-dom'\nimport Container from '@material-ui/core/Container'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { timeout } from '../../../App'\nimport CustomInput from '../../input/CustomInput'\nimport Button from '../../button/RegularButton'\nimport DepartmentSignatures from '../DepartmentSignatures'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { getApiUrl } from '../../../api/api'\n\nconst styles = {\n cardCategoryWhite: {\n color: 'rgba(255,255,255,.62)',\n margin: '0',\n fontSize: '14px',\n marginTop: '0',\n marginBottom: '0',\n },\n cardTitleWhite: {\n color: '#FFFFFF',\n marginTop: '0px',\n minHeight: 'auto',\n fontWeight: '300',\n fontFamily: '\\'Roboto\\', \\'Helvetica\\', \\'Arial\\', sans-serif',\n marginBottom: '3px',\n textDecoration: 'none',\n },\n}\n\nconst useStyles = makeStyles(styles)\n\nfunction departureReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n\n case 'fetch':\n return {\n ...state,\n ...action.value,\n }\n\n case 'success':\n return {\n ...state,\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialDepartureState = {\n status: null,\n tenantName: null,\n departureDate: null,\n createdOn: null,\n departureId: null,\n signatures: [],\n iban: null,\n name: null,\n}\n\nexport default function PublicDepartureDecision() {\n const classes = useStyles()\n\n const [proceeding, setProceeding] = useState(true)\n const [state, dispatch] = useReducer(departureReducer, initialDepartureState)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [bankInfo, setBankInfo] = useState({\n iban: null,\n name: null,\n })\n\n const { departureId } = useParams()\n\n const fetchBankInfo = useCallback(() => {\n getApiUrl()\n .get(`/public/departures/${departureId}/bank`)\n .then(function(response) {\n setProceeding(false)\n setBankInfo(response.data)\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }, [departureId])\n\n const fetchDeparture = useCallback(() => {\n getApiUrl()\n .get(`/public/departures/${departureId}`)\n .then(function(response) {\n setProceeding(false)\n dispatch({ type: 'fetch', value: response.data })\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n })\n }, [departureId])\n\n const saveBankInfo = (e) => {\n e.preventDefault()\n setProceeding(true)\n\n getApiUrl()\n .post(`/public/departures/${departureId}/bank`, { name: state.name, iban: state.iban })\n .then(function() {\n setProceeding(false)\n fetchBankInfo()\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bitte Name und IBAN eingeben.',\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const confirmDeparture = (e) => {\n e.preventDefault()\n setProceeding(true)\n\n getApiUrl()\n .patch(`/public/departures/${state.departureId}/confirm`, state)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Aktion wurde erfolgreich durchgeführt.',\n color: 'success',\n })\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bitte Name und IBAN eingeben.',\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const postponeDeparture = (e) => {\n e.preventDefault()\n setProceeding(true)\n\n getApiUrl()\n .patch(`/public/departures/${state.departureId}/postpone`, {})\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Aktion wurde erfolgreich durchgeführt.',\n color: 'success',\n })\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n useEffect(() => {\n fetchBankInfo()\n fetchDeparture()\n }, [fetchBankInfo, fetchDeparture])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n if (state.status === 'CREATED') {\n return (\n \n \n \n \n \n

Im Schollheim wohnen bleiben

\n
\n \n \n \n
\n Um Deine Wohnzeit zu verlängern, musst du eine Bewerbung bei der Verwaltung einreichen. Drücke den\n Button, um den Verlängerungsprozess zu starten.\n
\n
\n \n \n \n
\n {\n postponeDeparture(e)\n }}>\n Verlängerung starten\n \n
\n
\n
\n
\n
\n
\n
\n \n \n \n

Das Schollheim verlassen

\n
\n \n \n \n
\n Falls Du zum {state.departureDate} ausziehen möchtest, hinterlege bitte ein Bankkonto, auf welches\n die Kaution zurücküberwiesen werden soll.\n
\n
\n \n \n dispatch({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'iban',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n
\n {\n confirmDeparture(e)\n }}>\n Auszug bestätigen\n \n
\n
\n
\n
\n
\n
\n
\n
\n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n )\n }\n\n if (state.status === 'CONFIRMED' || state.status === 'CLOSED') {\n return (\n \n \n {bankInfo.name == null ? (\n \n \n \n

Kontodaten

\n
\n \n \n \n
Hinterlege bitte ein Bankkonto, auf welches die Kaution zurücküberwiesen werden soll.
\n
\n \n \n dispatch({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'iban',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n
\n {\n saveBankInfo(e)\n }}>\n Kontodaten bestätigen\n \n
\n
\n
\n
\n
\n
\n
\n ) : (\n \n \n \n

Kontodaten

\n
\n \n \n \n
Die Kaution wird auf dieses Konto zurücküberwiesen.
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n )}\n \n \n \n

Eingegangene Unterschriften für {state.tenantName}

\n
\n \n \n \n \n \n \n \n
\n
\n
\n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n )\n }\n\n if (state.status === 'POSTPONED') {\n return (\n \n \n \n \n \n

Wohnzeitverlängerung

\n
\n \n

\n Die Verwaltung wurde über deine Anfrage informiert. Die auszufüllenden Unterlagen für Deine Bewerbung\n um Wohnzeitverlängerung liegen dort nun zur Abholung bereit.\n

\n
\n
\n
\n
\n
\n )\n }\n\n return (\n \n \n \n \n \n

Fehler

\n
\n \n

Ein Fehler ist aufgetreten. Bitte den Admin kontaktieren polovyi@schollheim.net

\n
\n
\n
\n
\n
\n )\n}\n","import {\n container,\n defaultFont,\n primaryColor,\n defaultBoxShadow,\n infoColor,\n successColor,\n warningColor,\n dangerColor,\n whiteColor,\n grayColor,\n} from 'assets/jss/app.js'\n\nconst headerStyle = () => ({\n appBar: {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderBottom: '0',\n marginBottom: '0',\n position: 'absolute',\n width: '100%',\n paddingTop: '10px',\n zIndex: '1029',\n color: grayColor[7],\n border: '0',\n borderRadius: '3px',\n padding: '10px 0',\n transition: 'all 150ms ease 0s',\n display: 'block',\n },\n container: {\n ...container,\n minHeight: '50px',\n },\n flex: {\n flex: 1,\n },\n title: {\n ...defaultFont,\n letterSpacing: 'unset',\n lineHeight: '30px',\n fontSize: '18px',\n borderRadius: '3px',\n textTransform: 'none',\n color: 'inherit',\n margin: '0',\n '&:hover,&:focus': {\n background: 'transparent',\n },\n },\n appResponsive: {\n top: '8px',\n },\n primary: {\n backgroundColor: primaryColor[0],\n color: whiteColor,\n ...defaultBoxShadow,\n },\n info: {\n backgroundColor: infoColor[0],\n color: whiteColor,\n ...defaultBoxShadow,\n },\n success: {\n backgroundColor: successColor[0],\n color: whiteColor,\n ...defaultBoxShadow,\n },\n warning: {\n backgroundColor: warningColor[0],\n color: whiteColor,\n ...defaultBoxShadow,\n },\n danger: {\n backgroundColor: dangerColor[0],\n color: whiteColor,\n ...defaultBoxShadow,\n },\n})\n\nexport default headerStyle\n","import {\n blackColor,\n defaultFont,\n grayColor,\n hexToRgb,\n primaryBoxShadow,\n primaryColor,\n whiteColor,\n} from 'assets/jss/app.js'\n\nconst dropdownStyle = theme => ({\n buttonLink: {\n [theme.breakpoints.down('md')]: {\n display: 'flex',\n marginLeft: '30px',\n width: 'auto',\n },\n },\n linkText: {\n zIndex: '4',\n ...defaultFont,\n fontSize: '14px',\n },\n popperClose: {\n pointerEvents: 'none',\n },\n popperNav: {\n [theme.breakpoints.down('sm')]: {\n position: 'static !important',\n left: 'unset !important',\n top: 'unset !important',\n transform: 'none !important',\n willChange: 'unset !important',\n '& > div': {\n boxShadow: 'none !important',\n marginLeft: '0rem',\n marginRight: '0rem',\n transition: 'none !important',\n marginTop: '0px !important',\n marginBottom: '0px !important',\n padding: '0px !important',\n backgroundColor: 'transparent !important',\n '& ul li': {\n color: whiteColor + ' !important',\n margin: '10px 15px 0!important',\n padding: '10px 15px !important',\n '&:hover': {\n backgroundColor: 'hsla(0,0%,78%,.2)',\n boxShadow: 'none',\n },\n },\n },\n },\n },\n dropdown: {\n borderRadius: '3px',\n border: '0',\n boxShadow: '0 2px 5px 0 rgba(' + hexToRgb(blackColor) + ', 0.26)',\n top: '100%',\n zIndex: '1000',\n minWidth: '160px',\n padding: '5px 0',\n margin: '2px 0 0',\n fontSize: '14px',\n textAlign: 'left',\n listStyle: 'none',\n backgroundColor: whiteColor,\n WebkitBackgroundClip: 'padding-box',\n backgroundClip: 'padding-box',\n },\n dropdownItem: {\n ...defaultFont,\n fontSize: '13px',\n padding: '10px 20px',\n margin: '0 5px',\n borderRadius: '2px',\n WebkitTransition: 'all 150ms linear',\n MozTransition: 'all 150ms linear',\n OTransition: 'all 150ms linear',\n MsTransition: 'all 150ms linear',\n transition: 'all 150ms linear',\n display: 'block',\n clear: 'both',\n fontWeight: '400',\n lineHeight: '1.42857143',\n color: grayColor[8],\n whiteSpace: 'nowrap',\n height: 'unset',\n minHeight: 'unset',\n '&:hover': {\n backgroundColor: primaryColor[0],\n color: whiteColor,\n ...primaryBoxShadow,\n },\n },\n})\n\nexport default dropdownStyle\n","import dropdownStyle from 'assets/jss/dorm-app/dropdownStyle.js'\n\nconst headerLinksStyle = theme => ({\n ...dropdownStyle(theme),\n buttonLink: {\n [theme.breakpoints.down('sm')]: {\n display: 'flex',\n margin: '10px 15px 0',\n width: '-webkit-fill-available',\n '& svg': {\n width: '24px',\n height: '30px',\n marginRight: '15px',\n marginLeft: '-15px',\n },\n '& .fab,& .fas,& .far,& .fal,& .material-icons': {\n fontSize: '24px',\n lineHeight: '30px',\n width: '24px',\n height: '30px',\n marginRight: '15px',\n marginLeft: '-15px',\n },\n '& > span': {\n justifyContent: 'flex-start',\n width: '100%',\n },\n },\n },\n manager: {\n [theme.breakpoints.down('sm')]: {\n width: '100%',\n },\n display: 'inline-block',\n },\n})\n\nexport default headerLinksStyle\n","import React, { useContext } from 'react'\nimport classNames from 'classnames'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport MenuList from '@material-ui/core/MenuList'\nimport Grow from '@material-ui/core/Grow'\nimport Paper from '@material-ui/core/Paper'\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener'\nimport Poppers from '@material-ui/core/Popper'\n// @material-ui/icons\nimport Person from '@material-ui/icons/Person'\n// core components\nimport styles from 'assets/jss/dorm-app/components/headerLinksStyle.js'\nimport Button from '../button/RegularButton'\nimport { useHistory } from 'react-router-dom'\nimport { emptyUser, UserContext } from '../../App'\n\nconst useStyles = makeStyles(styles)\n\nexport default function NavbarLinks() {\n const classes = useStyles()\n const hist = useHistory()\n const { setUser } = useContext(UserContext)\n const [open, setOpen] = React.useState(false)\n const [openProfile, setOpenProfile] = React.useState(false)\n\n const handleLogout = () => {\n localStorage.removeItem('token')\n setUser(emptyUser)\n hist.push('/login')\n window.location.reload(false)\n }\n const handleClickProfile = (event) => {\n if (open) {\n setOpenProfile(null)\n setOpen(false)\n } else {\n setOpenProfile(event.currentTarget)\n setOpen(true)\n }\n }\n const handleCloseProfile = () => {\n setOpenProfile(null)\n }\n return (\n
\n
\n 959 ? 'transparent' : 'white'}\n justIcon={window.innerWidth > 959}\n simple={!(window.innerWidth > 959)}\n aria-owns={openProfile ? 'profile-menu-list-grow' : null}\n aria-haspopup=\"true\"\n onClick={handleClickProfile}\n className={classes.buttonLink}>\n \n \n \n {({ TransitionProps, placement }) => (\n \n \n \n \n \n Logout\n \n \n \n \n \n )}\n \n
\n
\n )\n}\n","import React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport AppBar from '@material-ui/core/AppBar'\nimport Toolbar from '@material-ui/core/Toolbar'\nimport IconButton from '@material-ui/core/IconButton'\nimport Hidden from '@material-ui/core/Hidden'\n// @material-ui/icons\nimport Menu from '@material-ui/icons/Menu'\n// core components\nimport styles from 'assets/jss/dorm-app/components/headerStyle.js'\nimport NavbarLinks from './NavbarLinks'\n\nconst useStyles = makeStyles(styles)\n\nexport default function Navbar(props) {\n const classes = useStyles()\n\n const { color } = props\n const appBarClasses = classNames({\n [' ' + classes[color]]: color,\n })\n return (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nNavbar.propTypes = {\n color: PropTypes.oneOf(['primary', 'info', 'success', 'warning', 'danger']),\n handleDrawerToggle: PropTypes.func,\n routes: PropTypes.arrayOf(PropTypes.object),\n}\n","import {\n drawerWidth,\n transition,\n boxShadow,\n defaultFont,\n primaryColor,\n primaryBoxShadow,\n infoColor,\n successColor,\n warningColor,\n dangerColor,\n whiteColor,\n grayColor,\n blackColor,\n hexToRgb,\n} from 'assets/jss/app.js'\n\nconst sidebarStyle = (theme) => ({\n drawerPaper: {\n background: 'black',\n border: 'none',\n position: 'fixed',\n top: '0',\n bottom: '0',\n left: '0',\n zIndex: '1',\n ...boxShadow,\n width: drawerWidth,\n [theme.breakpoints.up('md')]: {\n width: drawerWidth,\n position: 'fixed',\n height: '100%',\n },\n [theme.breakpoints.down('sm')]: {\n width: drawerWidth,\n ...boxShadow,\n position: 'fixed',\n display: 'block',\n top: '0',\n height: '100vh',\n right: '0',\n left: 'auto',\n zIndex: '1032',\n visibility: 'visible',\n overflowY: 'visible',\n borderTop: 'none',\n textAlign: 'left',\n paddingRight: '0px',\n paddingLeft: '0',\n transform: `translate3d(${drawerWidth}px, 0, 0)`,\n ...transition,\n },\n },\n drawerPaperRTL: {\n [theme.breakpoints.up('md')]: {\n left: 'auto !important',\n right: '0 !important',\n },\n [theme.breakpoints.down('sm')]: {\n left: '0 !important',\n right: 'auto !important',\n },\n },\n logo: {\n position: 'relative',\n padding: '15px 15px',\n zIndex: '4',\n '&:after': {\n content: '\"\"',\n position: 'absolute',\n bottom: '0',\n\n height: '1px',\n right: '15px',\n width: 'calc(100% - 30px)',\n backgroundColor: 'rgba(' + hexToRgb(grayColor[6]) + ', 0.3)',\n },\n },\n logoLink: {\n ...defaultFont,\n textTransform: 'uppercase',\n padding: '5px 0',\n display: 'block',\n fontSize: '18px',\n textAlign: 'left',\n fontWeight: '400',\n lineHeight: '30px',\n textDecoration: 'none',\n backgroundColor: 'transparent',\n '&,&:hover': {\n color: whiteColor,\n },\n },\n logoLinkRTL: {\n textAlign: 'right',\n },\n logoImage: {\n width: '30px',\n display: 'inline-block',\n maxHeight: '30px',\n marginLeft: '10px',\n marginRight: '15px',\n },\n img: {\n width: '35px',\n top: '22px',\n position: 'absolute',\n verticalAlign: 'middle',\n border: '0',\n },\n background: {\n position: 'absolute',\n zIndex: '1',\n height: '100%',\n width: '100%',\n display: 'block',\n top: '0',\n left: '0',\n backgroundSize: 'cover',\n backgroundPosition: 'center center',\n '&:after': {\n position: 'absolute',\n zIndex: '3',\n width: '100%',\n height: '100%',\n content: '\"\"',\n display: 'block',\n background: blackColor,\n opacity: '.8',\n },\n },\n list: {\n marginTop: '20px',\n paddingLeft: '0',\n paddingTop: '0',\n paddingBottom: '0',\n marginBottom: '0',\n listStyle: 'none',\n position: 'unset',\n },\n item: {\n position: 'relative',\n display: 'block',\n textDecoration: 'none',\n '&:hover,&:focus,&:visited,&': {\n color: whiteColor,\n },\n },\n itemLink: {\n width: 'auto',\n transition: 'all 300ms linear',\n margin: '10px 15px 0',\n borderRadius: '3px',\n position: 'relative',\n display: 'block',\n padding: '10px 15px',\n backgroundColor: 'transparent',\n ...defaultFont,\n },\n itemIcon: {\n width: '24px',\n height: '30px',\n fontSize: '24px',\n lineHeight: '30px',\n float: 'left',\n marginRight: '15px',\n textAlign: 'center',\n verticalAlign: 'middle',\n color: 'rgba(' + hexToRgb(whiteColor) + ', 0.8)',\n },\n itemIconRTL: {\n marginRight: '3px',\n marginLeft: '15px',\n float: 'right',\n },\n itemText: {\n ...defaultFont,\n margin: '0',\n lineHeight: '30px',\n fontSize: '14px',\n color: whiteColor,\n },\n itemTextRTL: {\n textAlign: 'right',\n },\n whiteFont: {\n color: whiteColor,\n },\n burgundy: {\n backgroundColor: primaryColor[0],\n ...primaryBoxShadow,\n '&:hover,&:focus': {\n backgroundColor: primaryColor[0],\n ...primaryBoxShadow,\n },\n },\n blue: {\n backgroundColor: infoColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(infoColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(infoColor[0]) +\n ',.2)',\n '&:hover,&:focus': {\n backgroundColor: infoColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(infoColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(infoColor[0]) +\n ',.2)',\n },\n },\n green: {\n backgroundColor: successColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(successColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(successColor[0]) +\n ',.2)',\n '&:hover,&:focus': {\n backgroundColor: successColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(successColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(successColor[0]) +\n ',.2)',\n },\n },\n orange: {\n backgroundColor: warningColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(warningColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(warningColor[0]) +\n ',.2)',\n '&:hover,&:focus': {\n backgroundColor: warningColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(warningColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(warningColor[0]) +\n ',.2)',\n },\n },\n red: {\n backgroundColor: dangerColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(dangerColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(dangerColor[0]) +\n ',.2)',\n '&:hover,&:focus': {\n backgroundColor: dangerColor[0],\n boxShadow:\n '0 12px 20px -10px rgba(' +\n hexToRgb(dangerColor[0]) +\n ',.28), 0 4px 20px 0 rgba(' +\n hexToRgb(blackColor) +\n ',.12), 0 7px 8px -5px rgba(' +\n hexToRgb(dangerColor[0]) +\n ',.2)',\n },\n },\n sidebarWrapper: {\n position: 'relative',\n height: 'calc(100vh - 75px)',\n overflow: 'auto',\n width: '260px',\n zIndex: '4',\n overflowScrolling: 'touch',\n },\n activePro: {\n [theme.breakpoints.up('md')]: {\n position: 'absolute',\n width: '100%',\n bottom: '13px',\n },\n },\n})\n\nexport default sidebarStyle\n","/*eslint-disable*/\nimport React from 'react'\nimport classNames from 'classnames'\nimport PropTypes from 'prop-types'\nimport { NavLink } from 'react-router-dom'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Drawer from '@material-ui/core/Drawer'\nimport Hidden from '@material-ui/core/Hidden'\nimport List from '@material-ui/core/List'\nimport ListItem from '@material-ui/core/ListItem'\nimport ListItemText from '@material-ui/core/ListItemText'\nimport Icon from '@material-ui/core/Icon'\n// core components\n\nimport styles from 'assets/jss/dorm-app/components/sidebarStyle.js'\nimport NavbarLinks from '../navbar/NavbarLinks'\n\nconst useStyles = makeStyles(styles)\n\nexport default function Sidebar(props) {\n const classes = useStyles()\n\n // verifies if routeName is the one active (in browser input)\n function activeRoute(routeName) {\n return window.location.href.indexOf(routeName) > -1 ? true : false\n }\n\n const { color, logo, image, logoText, routes } = props\n var links = (\n \n {routes.map((prop, key) => {\n const listItemClasses = classNames({\n [' ' + classes[color]]: activeRoute(prop.path)\n })\n const whiteFontClasses = classNames({\n [' ' + classes.whiteFont]: activeRoute(prop.path)\n })\n return (\n \n \n {typeof prop.icon === 'string' ? (\n \n {prop.icon}\n \n ) : (\n \n )}\n \n \n \n )\n })}\n \n )\n var home = (\n
\n \n
\n \"logo\"\n
\n {logoText}\n \n
\n )\n return (\n
\n \n \n
\n \n {links}\n
\n {image !== undefined ? (\n \n ) : null}\n \n
\n \n \n {home}\n
{links}
\n {image !== undefined ? (\n \n ) : null}\n \n
\n
\n )\n}\n\nSidebar.propTypes = {\n handleDrawerToggle: PropTypes.func,\n bgColor: PropTypes.oneOf(['burgundy', 'blue', 'green', 'orange', 'red']),\n logo: PropTypes.string,\n image: PropTypes.string,\n logoText: PropTypes.string,\n routes: PropTypes.arrayOf(PropTypes.object),\n open: PropTypes.bool\n}\n","import { drawerWidth, transition } from 'assets/jss/app.js'\n\nconst appStyle = (theme) => ({\n wrapper: {\n position: 'relative',\n top: '0',\n height: '100vh',\n },\n mainPanel: {\n [theme.breakpoints.up('md')]: {\n width: `calc(100% - ${drawerWidth}px)`,\n },\n overflow: 'auto',\n position: 'relative',\n float: 'right',\n ...transition,\n maxHeight: '100%',\n width: '100%',\n overflowScrolling: 'touch',\n },\n content: {\n marginTop: '20px',\n padding: '30px 15px',\n minHeight: 'calc(100vh - 123px)',\n },\n})\n\nexport default appStyle\n","import { Redirect, Route } from 'react-router-dom'\nimport React, { useContext } from 'react'\nimport { UserContext } from '../../App'\n\nexport default function AuthenticatedRoute({ component: C, appProps, ...rest }) {\n const { user } = useContext(UserContext)\n\n return (\n \n user !== null ? (\n \n ) : (\n \n )\n }\n />\n )\n}\n","import { hexToRgb, whiteColor } from 'assets/jss/app.js'\n\nconst customTabsStyle = {\n cardTitle: {\n float: 'left',\n padding: '10px 10px 10px 0px',\n lineHeight: '24px',\n },\n cardTitleRTL: {\n float: 'right',\n padding: '10px 0px 10px 10px !important',\n },\n displayNone: {\n display: 'none !important',\n },\n tabsRoot: {\n minHeight: 'unset !important',\n overflowX: 'visible',\n '& $tabRootButton': {\n fontSize: '0.875rem',\n },\n },\n tabRootButton: {\n minHeight: 'unset !important',\n minWidth: 'unset !important',\n width: 'unset !important',\n height: 'unset !important',\n maxWidth: 'unset !important',\n maxHeight: 'unset !important',\n padding: '10px 15px',\n borderRadius: '3px',\n lineHeight: '24px',\n border: '0 !important',\n color: whiteColor + ' !important',\n marginLeft: '4px',\n '&:last-child': {\n marginLeft: '0px',\n },\n },\n tabSelected: {\n backgroundColor: 'rgba(' + hexToRgb(whiteColor) + ', 0.2)',\n transition: '0.2s background-color 0.1s',\n },\n tabWrapper: {\n display: 'inline-block',\n minHeight: 'unset !important',\n minWidth: 'unset !important',\n width: 'unset !important',\n height: 'unset !important',\n maxWidth: 'unset !important',\n maxHeight: 'unset !important',\n fontWeight: '500',\n fontSize: '12px',\n marginTop: '1px',\n '& > svg,& > .material-icons': {\n verticalAlign: 'middle',\n margin: '-1px 5px 0 0 !important',\n },\n },\n}\n\nexport default customTabsStyle\n","import React from 'react'\n// nodejs library that concatenates classes\nimport classNames from 'classnames'\n// nodejs library to set properties for components\nimport PropTypes from 'prop-types'\n// material-ui components\nimport { makeStyles } from '@material-ui/core/styles'\nimport Tabs from '@material-ui/core/Tabs'\nimport Tab from '@material-ui/core/Tab'\n// core components\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\nimport styles from 'assets/jss/dorm-app/components/customTabsStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CustomTabs(props) {\n const [value, setValue] = React.useState(0)\n const handleChange = (event, value) => {\n setValue(value)\n }\n const classes = useStyles()\n const { headerColor, plainTabs, tabs, title, rtlActive } = props\n const cardTitle = classNames({\n [classes.cardTitle]: true,\n [classes.cardTitleRTL]: rtlActive,\n })\n return (\n \n \n {title !== undefined ?
{title}
: null}\n \n {tabs.map((prop, key) => {\n let icon = {}\n if (prop.tabIcon) {\n icon = {\n icon: ,\n }\n }\n return (\n \n )\n })}\n \n
\n \n {tabs.map((prop, key) => {\n if (key === value) {\n return
{prop.tabContent}
\n }\n return null\n })}\n
\n
\n )\n}\n\nCustomTabs.propTypes = {\n headerColor: PropTypes.oneOf([\n 'warning',\n 'success',\n 'danger',\n 'info',\n 'primary',\n 'rose',\n ]),\n title: PropTypes.string,\n tabs: PropTypes.arrayOf(\n PropTypes.shape({\n tabName: PropTypes.string.isRequired,\n tabIcon: PropTypes.object,\n tabContent: PropTypes.node.isRequired,\n }),\n ),\n rtlActive: PropTypes.bool,\n plainTabs: PropTypes.bool,\n}\n","import * as React from 'react'\nimport { useReducer, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../../../../grid/GridContainer'\nimport GridItem from '../../../../grid/GridItem'\nimport CustomInput from '../../../../input/CustomInput'\nimport Button from '../../../../button/RegularButton'\nimport { timeout } from '../../../../../App'\nimport Snackbar from '../../../../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Select from '@material-ui/core/Select'\nimport { CountryDropdown } from 'react-country-region-selector'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport styles from '../../../../../assets/jss/dorm-app/customSelectStyle.js'\nimport CustomDateInput from '../../../../input/CustomDateInput'\nimport { initialNotificationState } from '../../../../utils/state/ApplicationState'\nimport UniversitySelect from './UniversitySelect'\nimport { stringifyDates } from '../../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nfunction tenantReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n\n case 'success':\n return {\n ...initialTenantState,\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialTenantState = {\n success: false,\n name: '',\n surname: '',\n email: '',\n telNumber: '',\n birthday: null,\n gender: '',\n nationality: '',\n university: '',\n studyField: '',\n room: '',\n movedIn: null,\n deposit: '',\n note: '',\n}\n\nexport default function CreateTenant() {\n const classes = useStyles()\n\n const [state, dispatch] = useReducer(tenantReducer, initialTenantState)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n function validateInput() {\n if (state.nationality.length === 0) {\n setNotification({\n open: true,\n message: 'Bitte Staatsangehörigkeit angeben.',\n color: 'danger',\n })\n return false\n }\n return true\n }\n\n const submitForm = (e) => {\n e.preventDefault()\n\n if (validateInput()) {\n getApiUrl()\n .post(`/admin/tenants`, stringifyDates(state))\n .then(function() {\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Bewohner hinzugefügt',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error' })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n }\n\n return (\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'surname',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'email',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n Geschlecht\n \n \n dispatch({\n type: 'field',\n field: 'gender',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }\n inputProps={{\n name: 'gender',\n id: 'gender',\n }}>\n \n Männlich\n \n \n Weiblich\n \n \n Divers\n \n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'nationality',\n value: val,\n })\n }\n classes={`MuiSelect-root MuiInputBase-input`}\n style={{\n width: '100%',\n margin: '47px 0 0 0',\n position: 'relative',\n verticalAlign: 'unset',\n font: 'inherit',\n fontWeight: '400',\n cursor: 'pointer',\n }}\n />\n \n \n {\n dispatch({\n type: 'field',\n field: 'birthday',\n value: date,\n })\n },\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'telNumber',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n {\n dispatch({\n type: 'field',\n field: 'movedIn',\n value: date,\n })\n },\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'room',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'deposit',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'studyField',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'note',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n
\n \n \n {\n submitForm(e)\n }}>\n Bewohner hinzufügen\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n )\n}\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api'\n\nconst columns = [\n { field: 'surname', title: 'Nachname' },\n { field: 'name', title: 'Vorname' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'deposit', title: 'Kaution' },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'birthday', title: 'Geburt' },\n { field: 'gender', title: 'Geschlecht' },\n {\n field: 'nationality',\n title: 'Staatsangehörigkeit',\n },\n {\n field: 'university',\n title: 'Universität',\n },\n {\n field: 'studyField',\n title: 'Studienfach',\n },\n]\n\nexport default function ExTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [tenants, setTenants] = useState([])\n\n const fetchExTenants = useCallback(() => {\n getApiUrl({ type: 'exTenant' })\n .get(`/admin/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n useEffect(() => {\n fetchExTenants()\n }, [fetchExTenants])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n window.open(`/admin/tenants/${rowData.tenantId}`, '_blank')\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 30,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport ExTenantTable from '../../table/ExTenantTable'\n\nexport default function ExTenantPage() {\n return \n}\n","import React, { useEffect, useState } from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api'\n\nconst columns = [\n { field: 'surname', title: 'Nachname' },\n { field: 'name', title: 'Vorname' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'probationEnd',\n title: 'Probezeit',\n customSort: (a, b) => createDateFromString(a.probationEnd) - createDateFromString(b.probationEnd),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'deposit', title: 'Kaution' },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'birthday', title: 'Geburt' },\n { field: 'gender', title: 'Geschlecht' },\n {\n field: 'nationality',\n title: 'Staatsangehörigkeit',\n },\n {\n field: 'university',\n title: 'Universität',\n },\n {\n field: 'studyField',\n title: 'Studienfach',\n },\n]\n\nexport default function FutureTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [tenants, setTenants] = useState([])\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ type: 'newTenant' })\n .get(`/admin/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n window.open(`/admin/tenants/${rowData.tenantId}`, '_blank')\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { UserContext } from '../../../../App'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../../snackbar/Snackbar'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { initialNotificationState } from '../../../utils/state/ApplicationState'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api.js'\n\nconst columns = [\n { field: 'surname', title: 'Nachname' },\n { field: 'name', title: 'Vorname' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'probationEnd',\n title: 'Probezeit',\n customSort: (a, b) => createDateFromString(a.probationEnd) - createDateFromString(b.probationEnd),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'deposit', title: 'Kaution' },\n { field: 'extension', title: 'VL' },\n { field: 'sublet', title: 'UM' },\n { field: 'birthday', title: 'Geburt' },\n {\n field: 'gender',\n title: 'Geschlecht',\n cellStyle: {\n textAlign: 'center',\n },\n },\n {\n field: 'nationality',\n title: 'Staatsangehörigkeit',\n },\n {\n field: 'university',\n title: 'Universität',\n },\n {\n field: 'studyField',\n title: 'Studienfach',\n },\n {\n title: 'Punkte',\n field: 'currentPoints',\n customSort: (a, b) => parseFloat(a.currentPoints) - parseFloat(b.currentPoints),\n },\n]\n\nexport default function CurrentTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const { user } = useContext(UserContext)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [tenants, setTenants] = useState([])\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl()\n .get(`/admin/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user.token])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n window.open(`/admin/tenants/${rowData.tenantId}`, '_blank')\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 30,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport { UserContext } from '../../../App'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport download from 'downloadjs'\nimport { createDateFromString } from '../../utils/DateUtils'\nimport { getApiUrl } from '../../../api/api'\n\nconst columns = [\n { field: 'tenantFullName', title: 'Name' },\n {\n field: 'tenantEmail',\n title: 'Email',\n render: (rowData) => {rowData.tenantEmail} ,\n },\n { field: 'tenantRoom', title: 'Zimmer' },\n\n {\n field: 'departureDate',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.departureDate) - createDateFromString(b.departureDate),\n defaultSort: 'desc',\n },\n]\n\nexport default function CompletedDepartureTable() {\n const { user } = useContext(UserContext)\n\n const [proceeding, setProceeding] = useState(true)\n\n const [departures, setDepartures] = useState([])\n\n useEffect(() => {\n getApiUrl({ status: 'CLOSED' })\n .get(`/admin/departures`)\n .then(function(response) {\n setProceeding(false)\n setDepartures(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n getApiUrl()\n .get(`/admin/departures/${rowData.departureId}/pdf`, {\n headers: { Authorization: `Bearer ${user.token}`, 'X-Smartdorm-Dorm-ID': '4885b6d1-bbe4-4d40-bd24-bce33f0d7728' },\n responseType: 'blob',\n })\n .then((response) => {\n const content = response.headers['content-type']\n download(response.data, `Laufzettel ${rowData.tenantFullName}`, content)\n })\n .catch((error) => console.log(error))\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport Table from '@material-ui/core/Table'\nimport TableBody from '@material-ui/core/TableBody'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableContainer from '@material-ui/core/TableContainer'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableRow from '@material-ui/core/TableRow'\nimport Paper from '@material-ui/core/Paper'\nimport { timeout } from '../../../App'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport Button from '../../button/RegularButton'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport DepartmentSignatures from '../DepartmentSignatures'\nimport CustomDateInput from '../../input/CustomDateInput'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { createDateFromString, stringifyDate } from '../../utils/DateUtils'\nimport { getApiUrl } from '../../../api/api'\n\nexport default function AdminConfirmedDepartureTable() {\n const [notification, setNotification] = useState(initialNotificationState)\n const [proceeding, setProceeding] = useState(true)\n const [departures, setDepartures] = useState([])\n const [departureDates, setDepartureDates] = useState([])\n\n useEffect(() => {\n let params = new URLSearchParams()\n params.append('status', 'CONFIRMED')\n\n getApiUrl(params)\n .get(`/admin/departures`)\n .then(function(response) {\n setProceeding(false)\n setDepartures(response.data)\n let dates = response.data.map((dp) => createDateFromString(dp.departureDate))\n setDepartureDates(dates)\n })\n .catch(function(error) {\n console.log(error)\n })\n }, [notification])\n\n const handleCloseDeparture = async (departureId, movedOut) => {\n setProceeding(true)\n await getApiUrl()\n .put(\n `/admin/departures/close`,\n {\n departureId: departureId,\n movedOut: stringifyDate(movedOut),\n },\n )\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Auszug abgeschlossen',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n \n \n \n \n \n \n Name\n Email\n Zimmer\n Erstellt am\n \n \n \n {departures !== undefined\n ? departures.map((row, index) => (\n \n \n {row.tenantFullName}\n \n {row.tenantEmail} \n \n {row.tenantRoom}\n {row.createdOn}\n \n \n \n {\n let tmp = departureDates.slice()\n tmp[index] = date\n setDepartureDates(tmp)\n },\n }}\n />\n {\n handleCloseDeparture(row.departureId, departureDates[index])\n }}>\n Auszugsantrag schließen\n \n \n \n \n \n \n \n \n \n \n ))\n : 'Nothing to display'}\n \n
\n
\n
\n
\n
\n
\n )\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { UserContext } from '../../../../App'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport Button from '../../../button/RegularButton'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../../snackbar/Snackbar'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { initialNotificationState } from '../../../utils/state/ApplicationState'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api'\n\nconst columns = [\n { field: 'surname', title: 'Nachname' },\n { field: 'name', title: 'Vorname' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'birthday', title: 'Geburt' },\n {\n field: 'gender',\n title: 'Geschlecht',\n cellStyle: {\n textAlign: 'center',\n },\n },\n {\n field: 'nationality',\n title: 'Staatsangehörigkeit',\n },\n {\n field: 'university',\n title: 'Universität',\n },\n {\n field: 'studyField',\n title: 'Studienfach',\n },\n]\n\nexport default function DepartureCandidatesTable() {\n const { user } = useContext(UserContext)\n const [proceeding, setProceeding] = useState(true)\n const [notification, setNotification] = useState(initialNotificationState)\n const [tenants, setTenants] = useState([])\n\n const handleDepartureSubmit = () => {\n let emails = tenants.map((tenant) => tenant.email)\n\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n const body = {\n tenantEmails: emails,\n }\n\n setProceeding(true)\n getApiUrl()\n .post(`/admin/departures`, body)\n .then(function(response) {\n setProceeding(false)\n setNotification({\n open: true,\n message: `Auszugsantrag für folgende Bewohner erstellt: ${response.data.createdDepartures}`,\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, 5000),\n )\n }\n\n useEffect(() => {\n setProceeding(true)\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // params: { type: 'departureCandidate' },\n // }\n getApiUrl({ type: 'departureCandidate' })\n .get(`/admin/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user.token])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n window.open(`/admin/tenants/${rowData.tenantId}`, '_blank')\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n
\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { createDateFromString } from '../../utils/DateUtils'\nimport { getApiUrl } from '../../../api/api'\n\nconst columns = [\n { field: 'tenantFullName', title: 'Name' },\n {\n field: 'tenantEmail',\n title: 'Email',\n render: (rowData) => {rowData.tenantEmail} ,\n },\n { field: 'tenantRoom', title: 'Zimmer' },\n\n {\n field: 'departureDate',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.departureDate) - createDateFromString(b.departureDate),\n },\n]\n\nexport default function AdminCreatedDepartureTable() {\n const [notification, setNotification] = useState(initialNotificationState)\n const [proceeding, setProceeding] = useState(true)\n const [departures, setDepartures] = useState([])\n\n useEffect(() => {\n let params = new URLSearchParams()\n params.append('status', 'CREATED')\n getApiUrl(params)\n .get(`/admin/departures`)\n .then(function(response) {\n setProceeding(false)\n setDepartures(response.data)\n })\n .catch(function(error) {\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n {\n getApiUrl()\n .put(\n `/admin/departures/${rowData.departureId}/reminder`,\n {},\n )\n .then(() => {\n setNotification({\n open: true,\n message: 'Bewohner wurde informiert',\n color: 'success',\n })\n })\n .catch((error) =>\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n }),\n )\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import Card from '../card/Card'\nimport CardBody from '../card/CardBody'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport CustomDateInput from '../input/CustomDateInput'\nimport Button from '../button/RegularButton'\nimport * as React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styles from '../../assets/jss/dorm-app/components/cardStyle'\n\nconst useStyles = makeStyles(styles)\n\nexport function Extension(props) {\n const classes = useStyles()\n\n const { claimId, moveOutList, index, tenant, handleAcceptExtension, handleRejectExtension, setMoveOutList } = props\n\n return (\n \n \n

{tenant.fullName}

\n
{tenant.room}
\n \n \n {\n let tmp = moveOutList.slice()\n tmp[index] = date\n setMoveOutList(tmp)\n },\n }}\n />\n \n\n \n {\n handleAcceptExtension(claimId, moveOutList[index])\n }}>\n bestätigen\n \n \n \n {\n handleRejectExtension(claimId)\n }}>\n ablehnen\n \n \n \n
\n
\n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport { timeout } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\n\nimport styles from 'assets/jss/dorm-app/components/cardStyle.js'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { Extension } from './Extension'\nimport { stringifyDate } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nexport default function ProcessingExtensionTable() {\n const classes = useStyles()\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [proceeding, setProceeding] = useState(false)\n\n const [moveOutList, setMoveOutList] = useState([])\n\n const [claims, setClaims] = useState([])\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ status: 'PROCESSING', type: 'EXTENSION' })\n .get(`/admin/claims`)\n .then(function(response) {\n setClaims(response.data)\n setMoveOutList(new Array(response.data.length).fill(null))\n setProceeding(false)\n })\n .catch(function(error) {\n console.log(error)\n setProceeding(false)\n })\n }, [notification])\n\n const handleAcceptExtension = (departureId, moveOut) => {\n setProceeding(true)\n\n getApiUrl()\n .patch(`/admin/claims/${departureId}/approve`, { moveOut: stringifyDate(moveOut) })\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bewerbung um Wohnzeitverlängerung genehmigt.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const handleRejectExtension = (departureId) => {\n setProceeding(true)\n getApiUrl()\n .patch(`/admin/claims/${departureId}/reject`)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bewerbung um Wohnzeitverlängerung abgelehnt',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n\n {claims.length !== 0 ? (\n claims.map((row, index) => (\n \n \n \n \n \n ))\n ) : (\n

Keine Verlängerungen in Bearbeitung

\n )}\n \n
\n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { field: 'status', title: 'Status' },\n { field: 'tenant.fullName', title: 'Name' },\n {\n field: 'tenant.email',\n title: 'Email',\n render: (rowData) => {rowData.tenant.email} ,\n },\n { field: 'tenant.room', title: 'Zimmer' },\n\n {\n field: 'createdOn',\n title: 'Erstellt am',\n customSort: (a, b) => createDateFromString(a.createdOn) - createDateFromString(b.createdOn),\n },\n]\n\nexport default function CompletedExtensionTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [claims, setClaims] = useState([])\n\n useEffect(() => {\n let params = new URLSearchParams()\n params.append('status', 'APPROVED')\n params.append('status', 'REJECTED')\n params.append('type', 'EXTENSION')\n\n getApiUrl(params)\n .get(`/admin/claims`)\n .then(function(response) {\n setProceeding(false)\n setClaims(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport { timeout } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport { createDateFromString } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { field: 'tenant.fullName', title: 'Name' },\n {\n field: 'tenant.email',\n title: 'Email',\n render: (rowData) => {rowData.tenant.email} ,\n },\n { field: 'tenant.room', title: 'Zimmer' },\n\n {\n field: 'tenant.movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.tenant.movedOut) - createDateFromString(b.tenant.movedOut),\n defaultSort: 'asc',\n },\n]\n\nexport default function OpenExtensionTable() {\n const [proceeding, setProceeding] = useState(true)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [claims, setClaims] = useState([])\n\n useEffect(() => {\n let params = new URLSearchParams()\n params.append('status', 'CREATED')\n params.append('type', 'EXTENSION')\n\n getApiUrl(params)\n .get(`/admin/claims`)\n .then(function(response) {\n setProceeding(false)\n setClaims(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification])\n\n const processClaim = (claimId) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n setProceeding(true)\n getApiUrl()\n .patch(`/admin/claims/${claimId}/process`)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Antrag ist jetzt in Bearbeitung.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n {\n getApiUrl()\n .put(\n `/admin/claims/${rowData.claimId}/reminder`,\n {},\n )\n .then(() => {\n setNotification({\n open: true,\n message: 'Bewohner wurde informiert',\n color: 'success',\n })\n })\n .catch((error) =>\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n }),\n )\n event.stopPropagation()\n },\n },\n {\n tooltip: 'Verlängerungsbewerbung eingereicht',\n icon: 'library_add',\n hidden: false,\n onClick: (event, rowData) => {\n processClaim(rowData.claimId)\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport { timeout, UserContext } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { field: 'subtenantName', title: 'Untermieter' },\n { field: 'tenantName', title: 'Hauptmieter' },\n { field: 'universityConfirmation', title: 'Bestätigung Partneruniversität', type: 'boolean' },\n { field: 'room', title: 'Zimmer' },\n { field: 'duration', title: 'Dauer' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n]\n\nexport default function SubtenantTable() {\n const { user } = useContext(UserContext)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [proceeding, setProceeding] = useState(true)\n\n const [subtenants, setSubtenants] = useState([])\n\n useEffect(() => {\n getApiUrl()\n .get(`/admin/subtenants`)\n .then(function(response) {\n setProceeding(false)\n setSubtenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification, user])\n\n const updateUniConfirmation = (subtenantId) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n setProceeding(true)\n getApiUrl()\n .patch(`/admin/subtenants/${subtenantId}/uni-confirmation`)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bestätigung eingereicht.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n {\n return rowData.universityConfirmation\n ? { hidden: true }\n : {\n tooltip: 'Bestätigung Partneruniversität einreichen',\n icon: 'library_add',\n hidden: false,\n onClick: (event, rowData) => {\n updateUniConfirmation(rowData.subtenantId)\n event.stopPropagation()\n },\n }\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useReducer, useState } from 'react'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport CustomInput from '../input/CustomInput'\nimport Button from '../button/RegularButton'\nimport { timeout } from '../../App'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport CustomDateInput from '../input/CustomDateInput'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { isBlank } from '../utils/StringUtils'\nimport { stringifyDates } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nfunction subtenantReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'create':\n return {\n ...state,\n }\n\n case 'checkbox':\n return {\n ...state,\n universityConfirmation: !state.universityConfirmation,\n }\n\n case 'success':\n return {\n ...initialSubtenantState,\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialSubtenantState = {\n success: false,\n errorMessage: '',\n name: '',\n surname: '',\n email: '',\n room: '',\n movedIn: null,\n movedOut: null,\n universityConfirmation: false,\n id: '',\n}\n\nexport default function CreateSubtenant() {\n const [state, dispatch] = useReducer(subtenantReducer, initialSubtenantState)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const submitForm = (e) => {\n e.preventDefault()\n\n dispatch({ type: 'create' })\n\n if (isBlank(state.email)) {\n setNotification({\n open: true,\n message: 'Bitte Email eintragen.',\n color: 'danger',\n })\n return\n }\n\n getApiUrl()\n .post(`/admin/subtenants`, stringifyDates(state))\n .then(function() {\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Untermieter hinzugefügt',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n return (\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'surname',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'email',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'room',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'movedIn',\n value: date,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'movedOut',\n value: date,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'checkbox',\n })\n }\n />\n }\n style={{ marginTop: '43px' }}\n label=\"Bestätigung Partneruniversität\"\n labelPlacement=\"end\"\n />\n \n \n
\n {\n submitForm(e)\n }}>\n Untermieter hinzufügen\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n )\n}\n","export function isBlank(str) {\n return !str || /^\\s*$/.test(str)\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport { timeout } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { field: 'subtenantName', title: 'Untermieter' },\n { field: 'tenantName', title: 'Hauptmieter' },\n { field: 'universityConfirmation', title: 'Bestätigung Partneruniversität', type: 'boolean' },\n { field: 'room', title: 'Zimmer' },\n { field: 'duration', title: 'Dauer' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n]\n\nexport default function CurrentSubtenantTable() {\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [proceeding, setProceeding] = useState(true)\n\n const [subtenants, setSubtenants] = useState([])\n\n useEffect(() => {\n getApiUrl({ type: 'current' })\n .get(`/admin/subtenants`)\n .then(function(response) {\n setProceeding(false)\n setSubtenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification])\n\n const updateUniConfirmation = (subtenantId) => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n setProceeding(true)\n getApiUrl()\n .patch(`/admin/subtenants/${subtenantId}/uni-confirmation`)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Bestätigung eingereicht.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n {\n return rowData.universityConfirmation\n ? { hidden: true }\n : {\n tooltip: 'Bestätigung Partneruniversität einreichen',\n icon: 'library_add',\n hidden: false,\n onClick: (event, rowData) => {\n updateUniConfirmation(rowData.subtenantId)\n event.stopPropagation()\n },\n }\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useReducer, useState } from 'react'\nimport { timeout } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport CustomInput from '../input/CustomInput'\nimport Button from '../button/RegularButton'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport { getApiUrl } from '../../api/api'\n\nfunction parcelReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'create':\n return {\n ...state,\n }\n\n case 'checkbox':\n return {\n ...state,\n registered: !state.registered,\n }\n\n case 'success':\n return {\n ...initialParcelState,\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialParcelState = {\n success: false,\n name: '',\n surname: '',\n room: '',\n registered: false,\n quantity: 1,\n}\n\nexport default function Parcels() {\n const [state, dispatch] = useReducer(parcelReducer, initialParcelState)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const submitForm = (e) => {\n e.preventDefault()\n\n dispatch({ type: 'create' })\n\n getApiUrl()\n .post(`/admin/parcels`, state)\n .then(function() {\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Bewohner wurde informiert.',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n return (\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'name',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'surname',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'room',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'quantity',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'checkbox',\n })\n }\n />\n }\n style={{ marginTop: '43px' }}\n label=\"Einschreiben\"\n labelPlacement=\"end\"\n />\n \n \n \n \n
\n \n \n {\n submitForm(e)\n }}>\n hinzufügen\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n )\n}\n","import React, { useContext, useEffect, useState } from 'react'\nimport { timeout, UserContext } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { createDateFromString } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { field: 'tenantFullName', title: 'Name' },\n { field: 'room', title: 'Zimmer' },\n {\n field: 'arrived',\n title: 'Eingetroffen am',\n customSort: (a, b) => createDateFromString(a.arrived) - createDateFromString(b.arrived),\n },\n { field: 'count', title: 'Anzahl' },\n { field: 'registered', title: 'Einschreiben', type: 'boolean' },\n]\n\nexport default function ParcelTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const { user } = useContext(UserContext)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [parcels, setParcels] = useState([])\n\n useEffect(() => {\n getApiUrl()\n .get(`/admin/parcels`)\n .then(function(response) {\n setProceeding(false)\n setParcels(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification, user.token])\n\n const pickUpParcel = (parcelId) => {\n setProceeding(true)\n getApiUrl()\n .patch(`/admin/parcels/${parcelId}/pick-up`)\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Abgeholt.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n {\n pickUpParcel(rowData.parcelId)\n event.stopPropagation()\n },\n },\n ]}\n options={{\n pageSize: 30,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n header: {\n actions: 'Aktion',\n },\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport Table from '@material-ui/core/Table'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableHead from '@material-ui/core/TableHead'\nimport TableBody from '@material-ui/core/TableBody'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\n\nimport styles from 'assets/jss/dorm-app/customSelectStyle.js'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nexport default function CurrentHSV() {\n const [proceeding, setProceeding] = useState(true)\n const [engagements, setEngagements] = useState(null)\n\n const classes = useStyles()\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ semester: 'SS24' })\n .get(`/api/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n {engagements\n ? Object.entries(engagements).map(([key, value]) => (\n \n \n \n \n

{key}

\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n ))\n : []}\n
\n
\n )\n}\n\nfunction EngagementTabContent(props) {\n const classes = useStyles()\n\n return (\n \n \n \n Name\n Email\n Telefonnummer\n Zimmer\n Flur\n \n \n \n {props.engagementInfos.map((info) => (\n \n {info.tenantName}\n \n {info.tenantEmail} \n \n {info.tenantPhone}\n {info.tenantRoom}\n {info.tenantFloor}\n \n ))}\n \n
\n )\n}\n","// @material-ui/icons\nimport PeopleIcon from '@material-ui/icons/People'\nimport KingBedIcon from '@material-ui/icons/KingBed'\n\nimport DirectionsRunIcon from '@material-ui/icons/DirectionsRun'\nimport AdminTenantsTab from '../components/tenant/admin/tab/TenatsTab'\nimport AdminDeparturesTab from '../components/tenant/admin/tab/AdminDeparturesTab'\nimport AdminClaimsTab from '../components/tenant/admin/tab/AdminClaimsTab'\nimport AdminSubtenantsTab from '../components/tenant/admin/tab/SubtenatsTab'\nimport AssignmentIcon from '@material-ui/icons/Assignment'\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd'\nimport AdminParcelTab from '../components/parcel/ParcelTab'\nimport AllInboxIcon from '@material-ui/icons/AllInbox'\nimport CurrentHSV from '../components/engagement/CurrentHSV'\n\nexport let adminRoutes = [\n {\n path: '/dashboard/admin/tenants',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: AdminTenantsTab,\n },\n {\n path: '/dashboard/admin/departures',\n name: 'Auszüge',\n icon: DirectionsRunIcon,\n component: AdminDeparturesTab,\n },\n {\n path: '/dashboard/admin/claims',\n name: 'Verlängerungsanträge',\n icon: AssignmentIcon,\n component: AdminClaimsTab,\n },\n {\n path: '/dashboard/admin/subtenants',\n name: 'Untermiete',\n icon: KingBedIcon,\n component: AdminSubtenantsTab,\n },\n {\n path: '/dashboard/admin/departments/current',\n name: 'HSV',\n icon: AssignmentIndIcon,\n component: CurrentHSV,\n },\n {\n path: '/dashboard/admin/pakete',\n name: 'Pakete',\n icon: AllInboxIcon,\n component: AdminParcelTab,\n },\n]\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport CreateTenant from './page/CreateTenant'\nimport PersonAddIcon from '@material-ui/icons/PersonAdd'\nimport PeopleIcon from '@material-ui/icons/People'\nimport ApartmentIcon from '@material-ui/icons/Apartment'\nimport ExTenantPage from './page/ExTenantPage'\nimport FutureTenantTable from '../table/FutureTenantTable'\n// import TenantAdditional from './page/TenantAdditional'\n// import EqualizerIcon from '@material-ui/icons/Equalizer'\nimport CurrentTenantTable from '../table/CurrentTenantTable'\n\nexport default function AdminTenantsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Neuer Bewohner',\n tabIcon: PersonAddIcon,\n tabContent: ,\n },\n {\n tabName: 'Einzügler',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n // {\n // tabName: 'Übersicht',\n // tabIcon: EqualizerIcon,\n // tabContent: ,\n // },\n {\n tabName: 'Ehemalige Bewohner',\n tabIcon: ApartmentIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport CompletedDepartureTable from '../../../departure/admin/CompletedDepartureTable'\nimport DirectionsRunIcon from '@material-ui/icons/DirectionsRun'\nimport DoneAllIcon from '@material-ui/icons/DoneAll'\nimport AdminConfirmedDepartureTable from '../../../departure/admin/AdminConfirmedDepartureTable'\nimport DepartureCandidatesTable from '../table/DepartureCandidatesTable'\nimport PeopleIcon from '@material-ui/icons/People'\nimport AdminCreatedDepartureTable from '../../../departure/admin/AdminCreatedDepartureTable'\nimport AssignmentLateIcon from '@material-ui/icons/AssignmentLate'\n\nexport default function AdminDeparturesTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Auszugskandidaten',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n {\n tabName: 'Offene Anträge',\n tabIcon: AssignmentLateIcon,\n tabContent: ,\n },\n {\n tabName: 'Erledigte Anträge',\n tabIcon: DoneAllIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport ProcessingExtensionTable from '../../../extension/ProcessingExtensionTable'\nimport DoneAllIcon from '@material-ui/icons/DoneAll'\nimport CompletedExtensionTable from '../../../extension/CompletedExtensionTable'\nimport OpenExtensionTable from '../../../extension/OpenExtensionTable'\n\nexport default function AdminClaimsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'In Bearbeitung',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n {\n tabName: 'Abgeschlossen',\n tabIcon: DoneAllIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PersonAddIcon from '@material-ui/icons/PersonAdd'\nimport PeopleIcon from '@material-ui/icons/People'\nimport SubtenantTable from '../../../subtenant/SubtenantTable'\nimport CreateSubtenant from '../../../subtenant/CreateSubtenant'\nimport CurrentSubtenantTable from '../../../subtenant/CurrentSubtenantTable'\n\nexport default function SubtenantsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Neuer Untermieter',\n tabIcon: PersonAddIcon,\n tabContent: ,\n },\n {\n tabName: 'Alle Untermietungen',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport CustomTabs from '../tab/CustomTabs'\nimport AddBoxIcon from '@material-ui/icons/AddBox'\nimport Parcels from './Parcels'\nimport ParcelTable from './ParcelTable'\nimport AllInboxIcon from '@material-ui/icons/AllInbox'\n\nexport default function ParcelTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Alle Pakete',\n tabIcon: AllInboxIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api'\n\nconst columns = [\n { field: 'name', title: 'Vorname' },\n { field: 'surname', title: 'Name' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'probationEnd',\n title: 'Probezeit',\n customSort: (a, b) => createDateFromString(a.probationEnd) - createDateFromString(b.probationEnd),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n {\n field: 'currentPoints',\n title: 'Punkte',\n customSort: (a, b) => parseFloat(a.currentPoints) - parseFloat(b.currentPoints),\n },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'gender', title: 'Geschlecht' },\n { field: 'birthday', title: 'Geburt' },\n]\n\nexport default function DepartmentCurrentTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [tenants, setTenants] = useState([])\n\n useEffect(() => {\n getApiUrl()\n .get(`/api/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n )\n}\n","// @material-ui/icons\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentTenantsTab from '../components/tenant/department/tab/DepartmentTenantsTab'\n\nexport const finanzenDepartmentRoutes = [\n {\n path: '/dashboard/departments/finanzen/tenants',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: DepartmentTenantsTab,\n },\n]\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentCurrentTenantTable from '../table/DepartmentCurrentTenantTable'\n\nexport default function DepartmentTenantsTab() {\n return (\n \n \n ,\n },\n ]}\n />\n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport MaterialTable from 'material-table'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { createDateFromString } from '../../utils/DateUtils'\nimport { getApiUrl } from '../../../api/api'\n\nconst columns = [\n { field: 'name', title: 'Vorname' },\n { field: 'surname', title: 'Nachname' },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'probationEnd',\n title: 'Probezeit',\n customSort: (a, b) => createDateFromString(a.probationEnd) - createDateFromString(b.probationEnd),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'birthday', title: 'Geburt' },\n { field: 'gender', title: 'Geschlecht' },\n {\n field: 'nationality',\n title: 'Staatsangehörigkeit',\n },\n {\n field: 'university',\n title: 'Universität',\n },\n {\n field: 'studyField',\n title: 'Studienfach',\n },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n { field: 'extension', title: 'VL' },\n {\n title: 'Punkte',\n field: 'currentPoints',\n customSort: (a, b) => parseFloat(a.currentPoints) - parseFloat(b.currentPoints),\n },\n]\n\nexport default function HeimratCurrentTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [tenants, setTenants] = useState([])\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl()\n .get(`/api/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport { UserContext } from '../../../App'\nimport { CSVLink } from 'react-csv'\nimport { getApiUrl } from '../../../api/api'\n\nexport default function HeimratCsvExport() {\n const { user } = useContext(UserContext)\n\n const [tenants, setTenants] = useState([])\n\n useEffect(() => {\n getApiUrl()\n .get(`/api/tenants/csv`)\n .then(function(response) {\n setTenants(response.data)\n })\n .catch(function(error) {\n console.log(error)\n })\n }, [user.token])\n\n return (\n \n \n {tenants\n ? Object.entries(tenants).map(([key, value]) => (\n \n \n
\n \n {key}\n \n
\n
\n
\n ))\n : []}\n
\n
\n )\n}\n","import * as React from 'react'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport CustomTabs from '../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport ImportExportIcon from '@material-ui/icons/ImportExport'\nimport HeimratCurrentTenantTable from './HeimratCurrentTenantTable'\nimport HeimratCsvExport from './HeimratCsvExport'\n\nexport default function HeimratTenantsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Csv Export',\n tabIcon: ImportExportIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useCallback, useContext, useEffect, useState } from 'react'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport axios from 'axios'\nimport { apiUrl, UserContext } from '../../App'\nimport MaterialTable from 'material-table'\nimport download from 'downloadjs'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { title: 'Referat', field: 'department', width: '10%' },\n {\n title: 'Motivation',\n field: 'motivation',\n width: '70%',\n render: (rowData) => {rowData.motivation} ,\n },\n { title: 'Bewohner', field: 'tenantName', width: '10%' },\n {\n title: 'Email',\n field: 'tenantEmail',\n render: (rowData) => {rowData.tenantEmail} ,\n width: '10%',\n },\n]\n\nexport default function HeimratEngagementApplication() {\n const { user } = useContext(UserContext)\n\n const [applications, setApplications] = useState([])\n\n const [proceeding, setProceeding] = useState(true)\n\n const fetchApplications = useCallback(() => {\n setProceeding(true)\n getApiUrl()\n .get(`/api/engagements/applications`)\n .then(function (response) {\n setProceeding(false)\n setApplications(response.data)\n })\n .catch(function (error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n const downloadImage = (rowData) => {\n axios\n .get(`${apiUrl}/api/engagements/applications/${rowData.applicationId}/image`, {\n headers: { Authorization: `Bearer ${user.token}`, 'X-Smartdorm-Dorm-ID': '4885b6d1-bbe4-4d40-bd24-bce33f0d7728' },\n responseType: 'blob',\n })\n .then((response) => {\n const content = response.headers['content-type']\n const fileName = response.headers['x-file-name']\n download(response.data, fileName, content)\n })\n .catch((error) => console.log(error))\n }\n\n useEffect(() => {\n fetchApplications()\n }, [fetchApplications])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n return !rowData.hasImage\n ? { hidden: true }\n : {\n tooltip: 'Das Bild herunterladen',\n icon: 'download',\n hidden: false,\n onClick: (event, rowData) => {\n downloadImage(rowData)\n event.stopPropagation()\n },\n }\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n exportButton: true,\n }}\n localization={{\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n header: {\n actions: 'Aktion',\n },\n body: {\n emptyDataSourceMessage: 'Keine Bewerbungen',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport MaterialTable from 'material-table'\nimport { UserContext } from '../../App'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { getApiUrl } from '../../api/api'\n\nconst columns = [\n { title: 'Referat', field: 'department' },\n { title: 'Semester', field: 'semester' },\n { title: 'Name', field: 'tenantName' },\n {\n title: 'Email',\n field: 'tenantEmail',\n render: (rowData) => {rowData.tenantEmail} ,\n },\n { title: 'Zimmer', field: 'tenantRoom' },\n { title: 'Flur', field: 'tenantFloor' },\n { title: 'Punkte', field: 'points', customSort: (a, b) => parseFloat(a.points) - parseFloat(b.points) },\n { title: 'Entlastet', field: 'compensate', type: 'boolean' },\n { title: 'Notiz', field: 'note' },\n]\n\nexport default function HeimratEngagements() {\n const [engagements, setEngagements] = useState(null)\n const { user } = useContext(UserContext)\n\n const [proceeding, setProceeding] = useState(true)\n\n useEffect(() => {\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n setProceeding(true)\n getApiUrl()\n .get(`/api/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user.token])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n )\n}\n","// @material-ui/icons\nimport PeopleIcon from '@material-ui/icons/People'\nimport HeimratTenantsTab from '../components/tenant/heimrat/HeimratTenantsTab'\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd'\nimport CurrentHSV from '../components/engagement/CurrentHSV'\nimport HeimratEngagementApplication from '../components/engagement/HeimratEngagementApplication'\nimport DoneAllIcon from '@material-ui/icons/DoneAll'\nimport HeimratEngagements from '../components/engagement/HeimratEngagements'\n\nexport const heimratDepartmentRoutes = [\n {\n path: '/dashboard/tenants',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: HeimratTenantsTab,\n },\n {\n path: '/dashboard/engagements/all',\n name: 'Alle Ämter',\n icon: AssignmentIndIcon,\n component: HeimratEngagements,\n },\n {\n path: '/dashboard/applications',\n name: 'Bewerbungen',\n icon: AssignmentIndIcon,\n component: HeimratEngagementApplication,\n },\n {\n path: '/dashboard/departments/current',\n name: 'HSV',\n icon: DoneAllIcon,\n component: CurrentHSV,\n },\n]\n","import * as React from 'react'\nimport { forwardRef, useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport MaterialTable from 'material-table'\nimport { timeout } from '../../App'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { AddAlert, Close } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport Dialog from '@material-ui/core/Dialog'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport Slide from '@material-ui/core/Slide'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport styles from 'assets/jss/dorm-app/views/notificationsStyle.js'\nimport RegularButton from '../button/RegularButton'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nconst columns = [\n { title: 'Referat', field: 'department' },\n { title: 'Semester', field: 'semester' },\n { title: 'Name', field: 'tenantName' },\n { title: 'Email', field: 'tenantEmail' },\n { title: 'Zimmer', field: 'tenantRoom' },\n { title: 'Flur', field: 'tenantFloor' },\n { title: 'Punkte', field: 'points', customSort: (a, b) => parseFloat(a.points) - parseFloat(b.points) },\n { title: 'Notiz', field: 'note' },\n]\n\nexport default function DepartmentCompensatedEngagements() {\n const classes = useStyles()\n\n const [fetchData, setFetchData] = useState(false)\n const [proceeding, setProceeding] = useState(true)\n const [engagements, setEngagements] = useState(null)\n const [engagementId, setEngagementId] = useState(null)\n const [modal, setModal] = useState(false)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const Transition = forwardRef(function transition(props, ref) {\n return \n })\n\n const deleteAction = () => {\n setModal(false)\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n\n getApiUrl()\n .delete(`/api/engagements/${engagementId}`)\n .then(function() {\n setFetchData(!fetchData)\n setNotification({\n open: true,\n message: 'Amt wurde gelöscht',\n color: 'success',\n })\n })\n .catch(function(error) {\n setFetchData(!fetchData)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ compensated: 'true' })\n .get(`/api/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [fetchData])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n {\n window.open(`/departments/info/engagements/${rowData.engagementId}`, '_blank')\n event.stopPropagation()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Eintrag löschen',\n onClick: (event, rowData) => {\n event.stopPropagation()\n setEngagementId(rowData.engagementId)\n setModal(true)\n },\n },\n ]}\n title=\"\"\n options={{\n pageSize: 30,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n header: {\n actions: 'Aktion',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n setModal(false)}\n aria-labelledby=\"small-modal-slide-title\"\n aria-describedby=\"small-modal-slide-description\">\n \n setModal(false)}>\n \n \n \n \n
Willst du den eintrag löschen?
\n
\n \n setModal(false)}\n color=\"transparent\"\n className={classes.modalSmallFooterFirstButton}>\n Zurück\n \n \n Ja, löschen\n \n \n \n
\n )\n}\n","import * as React from 'react'\nimport { useReducer, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport CustomInput from '../input/CustomInput'\nimport Button from '../button/RegularButton'\nimport { timeout } from '../../App'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Select from '@material-ui/core/Select'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport styles from '../../assets/jss/dorm-app/customSelectStyle.js'\nimport Checkbox from '@material-ui/core/Checkbox'\nimport FormControlLabel from '@material-ui/core/FormControlLabel'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nfunction stateReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'create':\n return {\n ...state,\n }\n\n case 'checkbox-compensate':\n return {\n ...state,\n compensate: !state.compensate,\n }\n\n case 'success':\n return {\n ...initialState,\n success: true,\n }\n\n case 'error':\n return {\n ...state,\n success: false,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialState = {\n success: false,\n department: '',\n semester: '',\n tenantName: '',\n tenantSurname: '',\n tenantEmail: '',\n tenantRoom: '',\n points: '',\n compensate: false,\n note: '',\n engagementId: '',\n}\n\nexport default function CreateEngagement() {\n const classes = useStyles()\n\n const [state, dispatch] = useReducer(stateReducer, initialState)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const departments = {\n Heimrat: 'Heimrat',\n Finanzen: 'Finanzenreferat',\n Netzwerk: 'Netzwerkreferat',\n Tutoren: 'Tutoren',\n FS: 'Flursprecher',\n AA: 'Aufnahmereferat',\n AaNach: 'Aufnahmereferat-Nachrücker',\n Automat: 'Automatenreferat',\n Bar: 'Barreferat',\n BarFinanzen: 'Barreferat (Finanzen)',\n BarTechnik: 'Barreferat (Technik)',\n Billiard: 'Spielereferat',\n Computer: 'Computerreferat',\n Info: 'Inforeferat',\n Innen: 'Innenreferat',\n Kultur: 'Kulturreferat',\n Chor: 'Chor',\n Multimedia: 'Multimediareferat',\n Nachhaltigkeit: 'Nachhaltigkeitsreferat (Nachhaltigkeit)',\n NachhaltigkeitHochbeete: 'Nachhaltigkeitsreferat (Hochbeete)',\n Revisor: 'Revisoren',\n PR: 'PR-Referat',\n Saunareferat: 'Saunareferat',\n Schlichtung: 'Schlichtungsreferat',\n SportFussball: 'Sportreferat (Fußball)',\n SportVolleyball: 'Sportreferat (Volleyball)',\n SportFitness: 'Sportreferat (Fitness)',\n Tafel: 'Tafelreferat',\n WMarken: 'Waschmarkenverkäufer',\n WaMaFlur: 'Waschmarkenverkäufer Flur',\n WaMaTechnik: 'Waschmaschinenreferat (Technik)',\n WaMaLaufer: 'Waschmaschinenreferat (Läufer)',\n Werk: 'Werkreferat',\n Zimmer: 'Zimmerreferat',\n Zeitung: 'Zeitungreferat',\n Kreativreferat: 'Kreativreferat',\n HsvVertreter: 'HSV-Vertreter',\n Extra: 'Extra'\n }\n\n const semesters = {\n 'WS24/25': 'Wintersemester 24/25',\n SS24: 'Sommersemester 24',\n 'WS23/24': 'Wintersemester 23/24',\n SS23: 'Sommersemester 23',\n 'WS22/23': 'Wintersemester 22/23',\n SS22: 'Sommersemester 22',\n 'WS21/22': 'Wintersemester 21/22',\n SS21: 'Sommersemester 21',\n 'WS20/21': 'Wintersemester 20/21',\n SS20: 'Sommersemester 20',\n 'WS19/20': 'Wintersemester 19/20',\n SS19: 'Sommersemester 19',\n 'WS18/19': 'Wintersemester 18/19',\n SS18: 'Sommersemester 18',\n }\n\n const submitForm = (e) => {\n e.preventDefault()\n\n dispatch({ type: 'create' })\n\n\n getApiUrl()\n .post(`/api/engagements`, state)\n .then(function() {\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Amt hinzugefügt',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error' })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n return (\n \n \n \n \n \n \n Referat\n \n {\n dispatch({\n type: 'field',\n field: 'department',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }}\n inputProps={{\n name: 'department',\n id: 'department',\n }}>\n {departments\n ? Object.entries(departments).map(([key, value]) => (\n \n {value}\n \n ))\n : []}\n \n \n \n \n \n \n Semester\n \n {\n dispatch({\n type: 'field',\n field: 'semester',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }}\n inputProps={{\n name: 'semester',\n id: 'semester',\n }}>\n {semesters\n ? Object.entries(semesters).map(([key, value]) => (\n \n {value}\n \n ))\n : []}\n \n \n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'tenantEmail',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'tenantName',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'tenantSurname',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n
Entweder Name oder Email kann angegeben werden.
\n
\n
\n \n \n \n dispatch({\n type: 'checkbox-compensate',\n })\n }\n />\n }\n style={{ marginTop: '43px' }}\n label=\"Sofort entlasten\"\n labelPlacement=\"end\"\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'note',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n
\n \n \n {\n submitForm(e)\n }}>\n Amt hinzufügen\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n )\n}\n","import * as React from 'react'\nimport { forwardRef, useEffect, useState } from 'react'\nimport MaterialTable from 'material-table'\nimport { timeout } from '../../App'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Button from '../button/RegularButton'\nimport RegularButton from '../button/RegularButton'\nimport { AddAlert, Close } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport Dialog from '@material-ui/core/Dialog'\nimport styles from 'assets/jss/dorm-app/views/notificationsStyle.js'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Slide from '@material-ui/core/Slide'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nconst columns = [\n { title: 'Referat', field: 'department' },\n { title: 'Semester', field: 'semester' },\n { title: 'Name', field: 'tenantName' },\n { title: 'Email', field: 'tenantEmail' },\n { title: 'Zimmer', field: 'tenantRoom' },\n { title: 'Flur', field: 'tenantFloor' },\n { title: 'Punkte', field: 'points', customSort: (a, b) => parseFloat(a.points) - parseFloat(b.points) },\n { title: 'Notiz', field: 'note' },\n]\n\nexport default function DepartmentUncompensatedEngagements() {\n const classes = useStyles()\n\n const [proceeding, setProceeding] = useState(true)\n const [fetch, setFetch] = useState(false)\n const [engagements, setEngagements] = useState(null)\n const [engagementId, setEngagementId] = useState(null)\n const [modal, setModal] = useState(false)\n const [notification, setNotification] = useState(initialNotificationState)\n\n const Transition = forwardRef(function transition(props, ref) {\n return \n })\n\n const submitForm = (e) => {\n e.preventDefault()\n let engagementIdList = engagements.map((engagement) => engagement.engagementId)\n\n getApiUrl()\n .post(\n `/api/engagements/operation`,\n {\n operation: 'compensate',\n engagementIdList: engagementIdList,\n },\n )\n .then(function() {\n setFetch(!fetch)\n setNotification({\n open: true,\n message: 'Erfolgreich entlastet',\n color: 'success',\n })\n })\n .catch(function(error) {\n setFetch(!fetch)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const deleteAction = () => {\n setModal(false)\n\n getApiUrl()\n .delete(`/api/engagements/${engagementId}`)\n .then(function() {\n setFetch(!fetch)\n setNotification({\n open: true,\n message: 'Amt wurde gelöscht',\n color: 'success',\n })\n })\n .catch(function(error) {\n setFetch(!fetch)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ compensated: 'false' })\n .get(`/api/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [fetch])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n {\n window.open(`/departments/info/engagements/${rowData.engagementId}`, '_blank')\n event.stopPropagation()\n },\n },\n {\n icon: 'delete',\n tooltip: 'Eintrag löschen',\n onClick: (event, rowData) => {\n event.stopPropagation()\n setEngagementId(rowData.engagementId)\n setModal(true)\n },\n },\n ]}\n title=\"\"\n options={{\n pageSize: 30,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n }}\n localization={{\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n header: {\n actions: 'Aktion',\n },\n body: {\n emptyDataSourceMessage: 'Keine Daten vorhanden.',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n
\n \n \n {\n submitForm(e)\n }}>\n Alle entlasten\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n setModal(false)}\n aria-labelledby=\"small-modal-slide-title\"\n aria-describedby=\"small-modal-slide-description\">\n \n setModal(false)}>\n \n \n \n \n
Willst du den eintrag löschen?
\n
\n \n setModal(false)}\n color=\"transparent\"\n className={classes.modalSmallFooterFirstButton}>\n Zurück\n \n \n Ja, löschen\n \n \n \n
\n )\n}\n","import * as React from 'react'\nimport { useReducer, useState } from 'react'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport CustomInput from '../input/CustomInput'\nimport Button from '../button/RegularButton'\nimport { timeout } from '../../App'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { getApiUrl } from '../../api/api'\n\nfunction stateReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n case 'success':\n return {\n ...initialState,\n success: true,\n }\n case 'error':\n return {\n success: false,\n errorMessage: action.errorMessage,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialState = {\n success: false,\n errorMessage: '',\n subject: '',\n content: '',\n test: false,\n}\n\nexport default function InfoEmailDistributor() {\n const [state, dispatch] = useReducer(stateReducer, initialState)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n function defineTestEmail(obj, isTest) {\n let objCopy = JSON.parse(JSON.stringify(obj))\n objCopy.test = isTest\n return objCopy\n }\n\n const submitForm = (e, isTest) => {\n e.preventDefault()\n\n getApiUrl()\n .post(`/api/email`, defineTestEmail(state, isTest))\n .then(function() {\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Erfolgreich versandt',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error', errorMessage: error })\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n return (\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'subject',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'content',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n
\n \n \n {\n submitForm(e, false)\n }}>\n Aktuelle Bewohner informieren\n \n \n \n {\n submitForm(e, true)\n }}>\n Test E-Mail senden\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n )\n}\n","import * as React from 'react'\nimport { useCallback, useEffect, useState } from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport { createDateFromString } from '../../../utils/DateUtils'\nimport { getApiUrl } from '../../../../api/api'\n\nconst columns = [\n { field: 'name', title: 'Vorname' },\n { field: 'surname', title: 'Name' },\n { field: 'room', title: 'Zimmer' },\n { field: 'floor', title: 'Flur' },\n {\n field: 'movedIn',\n title: 'Einzug',\n customSort: (a, b) => createDateFromString(a.movedIn) - createDateFromString(b.movedIn),\n },\n {\n field: 'probationEnd',\n title: 'Probezeit',\n customSort: (a, b) => createDateFromString(a.probationEnd) - createDateFromString(b.probationEnd),\n },\n {\n field: 'movedOut',\n title: 'Auszug',\n customSort: (a, b) => createDateFromString(a.movedOut) - createDateFromString(b.movedOut),\n },\n { field: 'email', title: 'Email', render: (rowData) => {rowData.email} },\n {\n field: 'currentPoints',\n title: 'Punkte',\n customSort: (a, b) => parseFloat(a.currentPoints) - parseFloat(b.currentPoints),\n },\n { field: 'telNumber', title: 'Telefonnummer' },\n { field: 'gender', title: 'Geschlecht' },\n]\n\nexport default function DepartmentExTenantTable() {\n const [proceeding, setProceeding] = useState(true)\n\n const [tenants, setTenants] = useState([])\n\n const fetchExTenants = useCallback(() => {\n getApiUrl({ type: 'exTenant' })\n .get(`/api/tenants`)\n .then(function(response) {\n setProceeding(false)\n setTenants(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n useEffect(() => {\n fetchExTenants()\n }, [fetchExTenants])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n \n \n )\n}\n","import PeopleIcon from '@material-ui/icons/People'\nimport InfoEngagementsTab from '../components/tenant/department/tab/InfoEngagementsTab'\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd'\nimport EmailIcon from '@material-ui/icons/Email'\nimport InfoEmailTab from '../components/tenant/department/tab/InfoEmailTab'\nimport InfoDepartmentTenantsTab from '../components/tenant/department/tab/InfoDepartmentTenantsTab'\n\nexport const infoDepartmentRoutes = [\n {\n path: '/dashboard/info/tenants',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: InfoDepartmentTenantsTab,\n },\n {\n path: '/dashboard/info/referate',\n name: 'Referate',\n icon: AssignmentIndIcon,\n component: InfoEngagementsTab,\n },\n {\n path: '/dashboard/info/email',\n name: 'E-Mail',\n icon: EmailIcon,\n component: InfoEmailTab,\n },\n]\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentCurrentTenantTable from '../table/DepartmentCurrentTenantTable'\nimport ApartmentIcon from '@material-ui/icons/Apartment'\nimport DepartmentExTenantTable from '../table/DepartmentExTenantTable'\n\nexport default function InfoDepartmentTenantsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Ehemalige Bewohner',\n tabIcon: ApartmentIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentCompensatedEngagements from '../../../engagement/DepartmentCompensatedEngagements'\nimport AddIcon from '@material-ui/icons/Add'\nimport CreateEngagement from '../../../engagement/CreateEngagement'\nimport DepartmentUncompensatedEngagements from '../../../engagement/DepartmentUncompensatedEngagements'\n\nexport default function InfoEngagementsTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Nicht entlastete Ämter',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n {\n tabName: 'Neues Amt',\n tabIcon: AddIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport InfoEmailDistributor from '../../../email/InfoEmailDistributor'\nimport EmailIcon from '@material-ui/icons/Email'\n\nexport default function InfoEmailTab() {\n return (\n \n \n ,\n },\n ]}\n />\n \n \n )\n}\n","// @material-ui/icons\nimport ZimmerTenantsTab from '../components/tenant/department/tab/ZimmerTenantsTab'\nimport PeopleIcon from '@material-ui/icons/People'\n\nexport const zimmerDepartmentRoutes = [\n {\n path: '/dashboard/departments/zimmer',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: ZimmerTenantsTab,\n },\n]\n","import * as React from 'react'\nimport GridItem from '../../../grid/GridItem'\nimport GridContainer from '../../../grid/GridContainer'\nimport CustomTabs from '../../../tab/CustomTabs'\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentCurrentTenantTable from '../table/DepartmentCurrentTenantTable'\n\nexport default function ZimmerTenantsTab() {\n return (\n \n \n ,\n },\n ]}\n />\n \n \n )\n}\n","import Card from '../../card/Card'\nimport CardBody from '../../card/CardBody'\nimport GridContainer from '../../grid/GridContainer'\nimport GridItem from '../../grid/GridItem'\nimport Button from '../../button/RegularButton'\nimport * as React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styles from '../../../assets/jss/dorm-app/components/cardStyle'\nimport CustomInput from '../../input/CustomInput'\n\nconst useStyles = makeStyles(styles)\n\nexport function DepartmentNewDeparture(props) {\n const classes = useStyles()\n\n const { departure, index, amounts, setAmounts, handleSignDeparture } = props\n\n return (\n \n \n

{departure.tenantFullName}

\n \n \n {\n let tmp = amounts.slice()\n tmp[index] = e.currentTarget.value\n setAmounts(tmp)\n },\n }}\n />\n \n\n \n {\n handleSignDeparture(departure.departureId, amounts[index])\n }}>\n Auszugsantrag unterschreiben\n \n \n \n
\n
\n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport { timeout, UserContext } from '../../../App'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { DepartmentNewDeparture } from './DepartmentNewDeparture'\nimport { getApiUrl } from '../../../api/api'\n\nconst styles = {\n header: {\n padding: '15px 35px',\n },\n cardCategoryWhite: {\n color: 'rgba(255,255,255,.62)',\n margin: '0',\n fontSize: '14px',\n marginTop: '0',\n marginBottom: '0',\n },\n cardTitleWhite: {\n color: '#FFFFFF',\n marginTop: '0px',\n minHeight: 'auto',\n fontWeight: '300',\n fontFamily: '\\'Roboto\\', \\'Helvetica\\', \\'Arial\\', sans-serif',\n marginBottom: '3px',\n textDecoration: 'none',\n },\n}\n\nconst useStyles = makeStyles(styles)\n\nexport default function DepartmentNewDepartures({ departmentName }) {\n const classes = useStyles()\n\n const { user } = useContext(UserContext)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [proceeding, setProceeding] = useState(true)\n\n const [amounts, setAmounts] = useState([])\n\n const [departures, setDepartures] = useState([])\n\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n\n let department\n if (departmentName == null)\n department = user.authorities.filter(it => it.includes('DEPARTURE-H'))[0].split('-')[1].toLowerCase()\n else\n department = departmentName\n\n useEffect(() => {\n // const optionsConfirmed = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // params: { status: 'CONFIRMED' },\n // }\n getApiUrl({ status: 'CONFIRMED' })\n .get(`/api/departures/${department}`)\n .then(function(response) {\n setProceeding(false)\n const tmp = response.data.filter((departure) => departure.signature === undefined)\n setDepartures(tmp)\n setAmounts(new Array(tmp.length).fill('0'))\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification, department])\n\n const handleSignDeparture = (departureId, amount) => {\n setProceeding(true)\n getApiUrl()\n .post(\n `/api/departures/${department}`,\n {\n departureId: departureId,\n amount: amount,\n },\n )\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Unterschrieben',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(() => {\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout)\n })\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n\n \n \n {departures.length !== 0 ? (\n departures.map((row, index) => (\n \n \n \n \n \n ))\n ) : (\n

Keine neue Auszüge

\n )}\n
\n
\n
\n )\n}\n","import Card from '../../card/Card'\nimport CardBody from '../../card/CardBody'\nimport GridContainer from '../../grid/GridContainer'\nimport GridItem from '../../grid/GridItem'\nimport Button from '../../button/RegularButton'\nimport * as React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport styles from '../../../assets/jss/dorm-app/components/cardStyle'\nimport CustomInput from '../../input/CustomInput'\n\nconst useStyles = makeStyles(styles)\n\nexport function DepartmentEditDeparture(props) {\n const classes = useStyles()\n\n const { departure, index, newAmounts, setNewAmounts, handleUpdateAmount } = props\n\n return (\n \n \n

{departure.tenantFullName}

\n
\n Aktueller Betrag: {departure.signature.amount} Euro\n
\n \n \n {\n let tmp = newAmounts.slice()\n tmp[index] = e.currentTarget.value\n setNewAmounts(tmp)\n },\n }}\n />\n \n\n \n {\n handleUpdateAmount(departure.departureId, newAmounts[index])\n }}>\n Betrag aktualisieren\n \n \n \n
\n
\n )\n}\n","import * as React from 'react'\nimport { useContext, useEffect, useState } from 'react'\nimport { timeout, UserContext } from '../../../App'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport { makeStyles } from '@material-ui/core/styles'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../../snackbar/Snackbar'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { initialNotificationState } from '../../utils/state/ApplicationState'\nimport { DepartmentEditDeparture } from './DepartmentEditDeparture'\nimport { getApiUrl } from '../../../api/api'\n\nconst styles = {\n header: {\n padding: '15px 35px',\n },\n cardCategoryWhite: {\n color: 'rgba(255,255,255,.62)',\n margin: '0',\n fontSize: '14px',\n marginTop: '0',\n marginBottom: '0',\n },\n cardTitleWhite: {\n color: '#FFFFFF',\n marginTop: '0px',\n minHeight: 'auto',\n fontWeight: '300',\n fontFamily: '\\'Roboto\\', \\'Helvetica\\', \\'Arial\\', sans-serif',\n marginBottom: '3px',\n textDecoration: 'none',\n },\n}\n\nconst useStyles = makeStyles(styles)\n\nexport default function DepartmentSignedDepartures({ departmentName }) {\n const classes = useStyles()\n\n const { user } = useContext(UserContext)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const [proceeding, setProceeding] = useState(true)\n\n const [newAmounts, setNewAmounts] = useState([])\n\n const [departures, setDepartures] = useState([])\n\n // const options = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // }\n\n let department\n if (departmentName == null)\n department = user.authorities.filter(it => it.includes('DEPARTURE-H'))[0].split('-')[1].toLowerCase()\n else\n department = departmentName\n\n useEffect(() => {\n // const optionsConfirmed = {\n // headers: { Authorization: `Bearer ${user.token}` },\n // params: { status: 'CONFIRMED' },\n // }\n getApiUrl({ status: 'CONFIRMED' })\n .get(`/api/departures/${department}`)\n .then(function(response) {\n setProceeding(false)\n const tmp = response.data.filter((departure) => departure.signature !== undefined)\n setDepartures(tmp)\n setNewAmounts(new Array(tmp.length).fill('0'))\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [notification, department, user])\n\n const handleUpdateAmount = (departureId, amount) => {\n setProceeding(true)\n getApiUrl()\n .put(\n `/api/departures/${department}`,\n {\n departureId: departureId,\n amount: amount,\n },\n )\n .then(function() {\n setProceeding(false)\n setNotification({\n open: true,\n message: 'Aktualisiert',\n color: 'success',\n })\n })\n .catch(function(error) {\n setProceeding(false)\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(() => {\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout)\n })\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n \n {departures.length !== 0 ? (\n departures.map((row, index) => (\n \n \n \n \n \n ))\n ) : (\n

Keine Auszüge zu bearbeiten

\n )}\n
\n
\n
\n )\n}\n","import * as React from 'react'\nimport GridItem from '../../grid/GridItem'\nimport GridContainer from '../../grid/GridContainer'\nimport CustomTabs from '../../tab/CustomTabs'\nimport DirectionsRunIcon from '@material-ui/icons/DirectionsRun'\nimport PeopleIcon from '@material-ui/icons/People'\nimport DepartmentNewDepartures from './DepartmentNewDepartures'\nimport DepartmentSignedDepartures from './DepartmentSignedDepartures'\n\nexport default function DepartmentDeparturesTab({ department }) {\n return (\n \n \n ,\n },\n {\n tabName: 'Unterschriebene Auszüge',\n tabIcon: PeopleIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","import customSelectStyle from '../customSelectStyle'\nimport { text } from '../../app'\n\nconst individualTenantPageStyle = {\n ...customSelectStyle,\n\n regularText: {\n ...text,\n },\n}\n\nexport default individualTenantPageStyle\n","import * as React from 'react'\nimport { useCallback, useContext, useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\nimport CustomInput from '../input/CustomInput'\nimport { timeout, UserContext } from '../../App'\nimport styles from 'assets/jss/dorm-app/views/individualTenantPageStyle.js'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport CustomDateInput from '../input/CustomDateInput'\nimport Badge from '../badge/Badge'\nimport Container from '@material-ui/core/Container'\nimport Button from '../button/RegularButton'\nimport Snackbar from '../snackbar/Snackbar'\nimport { AddAlert } from '@material-ui/icons'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { formatDatesInObject } from '../utils/DateUtils'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nconst initialTenantState = {\n name: '',\n surname: '',\n email: '',\n telNumber: '',\n birthday: null,\n gender: '',\n nationality: '',\n university: '',\n studyField: '',\n room: '',\n floor: '',\n movedIn: null,\n movedOut: null,\n tenantId: '',\n currentPoints: '',\n deposit: '',\n extension: '',\n extensionStatus: '',\n sublet: '',\n}\nconst initialPasswordState = {\n oldPassword: '',\n newPassword: '',\n}\n\nexport default function IndividualTenantPage() {\n const classes = useStyles()\n\n const [tenant, setTenant] = useState(initialTenantState)\n const [password, setPassword] = useState(initialPasswordState)\n const [proceeding, setProceeding] = useState(true)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const { user } = useContext(UserContext)\n\n const changePassword = (e) => {\n e.preventDefault()\n\n getApiUrl()\n .post(`/individual/password`, password)\n .then(function() {\n setPassword(initialPasswordState)\n setNotification({\n open: true,\n message: 'Passwort geändert',\n color: 'success',\n })\n })\n .catch(function(error) {\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n const fetchTenant = useCallback(() => {\n getApiUrl()\n .get(`/individual/tenants/${user.id}`)\n .then(function(response) {\n setProceeding(false)\n setTenant(formatDatesInObject(response.data))\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user])\n\n useEffect(() => {\n setProceeding(true)\n fetchTenant()\n }, [fetchTenant])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n \n \n \n

Meine Daten

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {tenant.extensionStatus === 'PROCESSING' ? (\n \n
\n Verlängerungsbewerbung gestellt\n
\n
\n ) : null}\n {tenant.extensionStatus === 'CREATED' ? (\n \n
\n Verlängerungsbewerbung offen\n
\n
\n ) : null}\n
\n \n \n
\n

\n Bei Änderungswünschen schreibe bitte eine Mail an{' '}\n \n {' '}\n verwaltung@schollheim.net\n {' '}\n mit dem Betreff \"Datenänderung SmartDorm\".\n

\n
\n
\n
\n
\n
\n
\n \n \n \n \n

Passwortänderung

\n
\n \n \n \n \n setPassword({ ...password, oldPassword: e.currentTarget.value }),\n }}\n />\n \n \n setPassword({ ...password, newPassword: e.currentTarget.value }),\n }}\n />\n \n \n
\n \n \n {\n changePassword(e)\n }}>\n Ändern\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n
\n
\n
\n
\n
\n )\n}\n","import * as React from 'react'\nimport { forwardRef, useCallback, useContext, useEffect, useReducer, useRef, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport CustomInput from '../input/CustomInput'\nimport Button from '../button/RegularButton'\nimport RegularButton from '../button/RegularButton'\nimport axios from 'axios'\nimport { apiUrl, timeout, UserContext } from '../../App'\nimport FormControl from '@material-ui/core/FormControl'\nimport InputLabel from '@material-ui/core/InputLabel'\nimport Select from '@material-ui/core/Select'\nimport MenuItem from '@material-ui/core/MenuItem'\nimport styles from '../../assets/jss/dorm-app/customSelectStyle.js'\n\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport MaterialTable from 'material-table'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\nimport Container from '@material-ui/core/Container'\nimport { AddAlert, Close } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport download from 'downloadjs'\nimport DialogTitle from '@material-ui/core/DialogTitle'\nimport DialogContent from '@material-ui/core/DialogContent'\nimport DialogActions from '@material-ui/core/DialogActions'\nimport Dialog from '@material-ui/core/Dialog'\nimport Slide from '@material-ui/core/Slide'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nconst columns = [\n { title: 'Referat', field: 'department', width: '10%' },\n { title: 'Semester', field: 'semester', width: '10%' },\n {\n title: 'Motivation',\n field: 'motivation',\n width: '80%',\n render: (rowData) => {rowData.motivation} ,\n },\n]\n\nfunction stateReducer(state, action) {\n switch (action.type) {\n case 'field':\n return {\n ...state,\n [action.field]: action.value,\n }\n\n case 'success':\n return {\n ...initialState,\n }\n\n default:\n break\n }\n return state\n}\n\nconst initialState = {\n department: '',\n semester: 'WS24/25',\n tenantId: '',\n motivation: '',\n}\n\nconst departments = {\n \"AA\": \"Aufnahmereferat\",\n \"AaNach\": \"Aufnahmereferat-Nachrücker\",\n \"Automat\": \"Automatenreferat\",\n \"Bar\": \"Barreferat\",\n \"BarFinanzen\": \"Barreferat (Finanzen)\",\n \"BarTechnik\": \"Barreferat (Technik)\",\n \"Billiard\": \"Spielereferat\",\n \"Chor\": \"Chor\",\n \"Computer\": \"Computerreferat\",\n \"Finanzen\": \"Finanzenreferat\",\n \"Heimrat\": \"Heimrat\",\n \"HsvVertreter\": \"HSV-Vertreter\",\n \"Info\": \"Inforeferat\",\n \"Innen\": \"Innenreferat\",\n \"Kreativreferat\": \"Kreativreferat\",\n \"Kultur\": \"Kulturreferat\",\n \"Multimedia\": \"Multimediareferat\",\n \"Nachhaltigkeit\": 'Nachhaltigkeitsreferat (Nachhaltigkeit)',\n \"NachhaltigkeitHochbeete\": 'Nachhaltigkeitsreferat (Hochbeete)',\n \"Netzwerk\": \"Netzwerkreferat\",\n \"PR\": \"PR-Referat\",\n \"Revisor\": \"Revisoren\",\n \"Schlichtung\": \"Schlichtungsreferat\",\n \"SportFitness\": \"Sportreferat (Fitness)\",\n \"SportFussball\": \"Sportreferat (Fußball)\",\n \"SportVolleyball\": \"Sportreferat (Volleyball)\",\n \"Tafel\": \"Tafelreferat\",\n \"Tutoren\": \"Tutoren\",\n \"WaMaLaufer\": \"Waschmaschinenreferat (Läufer)\",\n \"WaMaTechnik\": \"Waschmaschinenreferat (Technik)\",\n \"WMarken\": \"Waschmarkenverkäufer\",\n \"Werk\": \"Werkreferat\",\n \"Zimmer\": \"Zimmerreferat\",\n \"Zeitung\": \"Zeitungreferat\"\n}\n\nconst Transition = forwardRef(function transition(props, ref) {\n return \n})\n\nexport default function IndividualEngagementApplication() {\n const classes = useStyles()\n const { user } = useContext(UserContext)\n\n const [proceeding, setProceeding] = useState(true)\n const [state, dispatch] = useReducer(stateReducer, initialState)\n const [applications, setApplications] = useState([])\n const imageInputField = useRef(null)\n const [image, setImage] = useState(null)\n const [applicationId, setApplicationId] = useState(null)\n const [modal, setModal] = useState(false)\n\n const [notification, setNotification] = useState(initialNotificationState)\n\n const fetchApplications = useCallback(() => {\n getApiUrl()\n .get(`/individual/engagements/applications`)\n .then(function(response) {\n setProceeding(false)\n setApplications(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n const downloadImage = (rowData) => {\n axios\n .get(`${apiUrl}/individual/engagements/applications/${rowData.applicationId}/image`, {\n headers: {\n Authorization: `Bearer ${user.token}`,\n 'X-Smartdorm-Dorm-ID': '4885b6d1-bbe4-4d40-bd24-bce33f0d7728',\n },\n responseType: 'blob',\n })\n .then((response) => {\n const content = response.headers['content-type']\n const fileName = response.headers['x-file-name']\n download(response.data, fileName, content)\n })\n .catch((error) => console.log(error))\n }\n\n const deleteAction = () => {\n setModal(false)\n\n getApiUrl()\n .delete(`/individual/engagements/applications/${applicationId}`)\n .then(function() {\n fetchApplications()\n setNotification({\n open: true,\n message: 'Bewerbung wurde gelöscht.',\n color: 'success',\n })\n })\n .catch(function(error) {\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n useEffect(() => {\n setProceeding(true)\n fetchApplications()\n }, [fetchApplications])\n\n let validFileExtensions = ['jpg', 'jpeg', 'bmp', 'gif', 'png']\n\n function validateImage(filesInput) {\n let tmp = filesInput[0]\n if (tmp != null) {\n let fileExtension = tmp.name.split('.')[1].toLowerCase()\n let size = tmp.size\n\n if (validFileExtensions.indexOf(fileExtension) === -1) {\n setNotification({\n open: true,\n message: 'Nur Bilder im Format \\'jpg\\', \\'jpeg\\', \\'bmp\\', \\'gif\\', \\'png\\' dürfen hochgeladen werden.',\n color: 'danger',\n })\n return false\n }\n\n if (size > 6 * Math.pow(10, 6)) {\n setNotification({\n open: true,\n message: 'Das Bild darf nicht größer 6MB sein.',\n color: 'danger',\n })\n return false\n }\n return true\n }\n return false\n }\n\n const submitForm = (e) => {\n e.preventDefault()\n let formData = new FormData()\n\n formData.append('image', image)\n formData.append(\n 'request',\n new Blob([JSON.stringify({ ...state, tenantId: user.id })], {\n type: 'application/json',\n }),\n )\n\n // // Uncomment it when no applications are proceeded\n // setNotification({\n // open: true,\n // message: 'Bewerbungsfrist ist abgelaufen. Bei Fragen bitte kontaktiere die Heimräte heimrat@schollheim.net',\n // color: 'danger',\n // })\n\n\n // Uncomment it when applications are proceeded\n getApiUrl()\n .post(`/individual/engagements/applications`, formData)\n .then(function() {\n fetchApplications()\n dispatch({ type: 'success' })\n setNotification({\n open: true,\n message: 'Bewerbung hinzugefügt',\n color: 'success',\n })\n })\n .catch(function(error) {\n dispatch({ type: 'error' })\n setNotification({\n open: true,\n message: `${error.response?.data?.message}`,\n color: 'danger',\n })\n })\n .finally(\n setTimeout(function() {\n setNotification(initialNotificationState)\n }, timeout),\n )\n }\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n \n \n \n

Bewerbung

\n
\n \n \n \n \n \n \n Referat\n \n {\n dispatch({\n type: 'field',\n field: 'department',\n value: e.currentTarget.getAttribute('data-value'),\n })\n }}\n inputProps={{\n name: 'department',\n id: 'department',\n }}>\n {departments\n ? Object.entries(departments).map(([key, value]) => (\n \n {value}\n \n ))\n : []}\n \n \n \n \n \n dispatch({\n type: 'field',\n field: 'semester',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n \n dispatch({\n type: 'field',\n field: 'motivation',\n value: e.currentTarget.value,\n }),\n }}\n />\n \n \n
\n

Optionales Bild von Dir

\n {\n const { files: newFiles } = e.target\n if (validateImage(newFiles)) {\n setImage(e.target.files[0])\n } else {\n e.target.value = null\n }\n },\n }}\n />\n
\n
\n
\n \n \n {\n submitForm(e)\n }}>\n Abschicken\n \n \n \n
\n
\n
\n
\n setModal(false)}\n aria-labelledby=\"small-modal-slide-title\"\n aria-describedby=\"small-modal-slide-description\">\n \n setModal(false)}>\n \n \n \n \n
Willst du die Bewerbung löschen?
\n \n \n setModal(false)}\n color=\"transparent\"\n className={classes.modalSmallFooterFirstButton}>\n Zurück\n \n \n Ja, löschen\n \n \n \n
\n\n \n \n {\n event.stopPropagation()\n setApplicationId(rowData.applicationId)\n setModal(true)\n },\n },\n (rowData) => {\n return !rowData.hasImage\n ? { hidden: true }\n : {\n tooltip: 'Das Bild herunterladen',\n icon: 'download',\n hidden: false,\n onClick: (event, rowData) => {\n downloadImage(rowData)\n event.stopPropagation()\n },\n }\n },\n ]}\n options={{\n pageSize: 10,\n pageSizeOptions: [10, 30, 50],\n headerStyle: {\n fontWeight: 600,\n },\n exportButton: true,\n }}\n localization={{\n pagination: {\n labelDisplayedRows: '{from}-{to} von {count}',\n labelRowsSelect: 'Einträge',\n labelRowsPerPage: 'Zeilen pro Seite',\n },\n toolbar: {\n nRowsSelected: '{0} Zeile(n) ',\n searchPlaceholder: 'Suchen',\n searchTooltip: 'Suchen',\n },\n header: {\n actions: 'Aktion',\n },\n body: {\n emptyDataSourceMessage: 'Keine Bewerbungen',\n filterRow: {\n filterTooltip: 'Filter',\n },\n },\n }}\n />\n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n \n
\n )\n}\n","import * as React from 'react'\nimport { useCallback, useContext, useEffect, useState } from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport { UserContext } from '../../App'\nimport styles from 'assets/jss/dorm-app/customSelectStyle.js'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport MaterialTable from 'material-table'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nconst columns = [\n { title: 'Referat', field: 'department' },\n { title: 'Semester', field: 'semester' },\n { title: 'Punkte', field: 'points', customSort: (a, b) => parseFloat(a.points) - parseFloat(b.points) },\n { title: 'Entlastet', field: 'compensate', type: 'boolean' },\n]\n\nexport default function IndividualEngagements() {\n const classes = useStyles()\n\n const [engagements, setEngagements] = useState([])\n const [proceeding, setProceeding] = useState(true)\n\n const { user } = useContext(UserContext)\n\n const fetchEngagements = useCallback(() => {\n getApiUrl()\n .get(`/individual/tenants/${user.id}/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [user])\n\n useEffect(() => {\n setProceeding(true)\n fetchEngagements()\n }, [fetchEngagements])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n \n \n \n \n
\n )\n}\n","import * as React from 'react'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridContainer from '../grid/GridContainer'\nimport GridItem from '../grid/GridItem'\nimport styles from 'assets/jss/dorm-app/customSelectStyle.js'\n\nconst useStyles = makeStyles(styles)\n\nconst documents = {\n 'Alle Referatsordnungen': 'https://cloud.schollheim.net/s/YSpfNcJwsfZeCxW'\n// Heimrat: 'https://cloud.schollheim.net/index.php/s/fKNPPeCg3PZe2iS',\n// Finanzenreferat: 'https://cloud.schollheim.net/index.php/s/PiTPBmKAMNPgp8A',\n// Netzwerkreferat: 'https://cloud.schollheim.net/index.php/s/3kA5JSs8ds9pS4E',\n// Aufnahmereferat: 'https://cloud.schollheim.net/index.php/s/paoG37cPimRAEsf',\n// Automatenreferat: 'https://cloud.schollheim.net/index.php/s/P5jH6J2WECdpQML',\n// Computerreferat: 'https://cloud.schollheim.net/index.php/s/Qya5TfFTNQ8ercg',\n// Inforeferat: 'https://cloud.schollheim.net/index.php/s/GdXL2BDa3bXRoja',\n// Innenreferat: 'https://cloud.schollheim.net/index.php/s/egHfzeC2PXJHq3G',\n// Kulturreferat: 'https://cloud.schollheim.net/index.php/s/DRC9wH2STk6DNqP',\n// Multimediareferat: 'https://cloud.schollheim.net/index.php/s/5kFA8PjrJc6fSmf',\n// Revisoren: 'https://cloud.schollheim.net/index.php/s/byzHJZioTGbP9bC',\n// 'PR-Referat': 'https://cloud.schollheim.net/index.php/s/2dGN3nxMWsRCz9Y',\n// Schlichtungsreferat: 'https://cloud.schollheim.net/index.php/s/gG9kP4P7oyQQEeS',\n// Sportreferat: 'https://cloud.schollheim.net/index.php/s/YTScfDT4HKSHbGj',\n// Tafelreferat: 'https://cloud.schollheim.net/index.php/s/GwLgXDgNayt2gYk',\n// Waschmaschinenreferat: 'https://cloud.schollheim.net/index.php/s/K7XiKK7F2fCbZo2',\n// Werkreferat: 'https://cloud.schollheim.net/index.php/s/EkR8EnPtfrqHyxe',\n// Zimmerreferat: 'https://cloud.schollheim.net/index.php/s/6YxFT3Lt9MkWyEY',\n// Zeitungreferat: 'https://cloud.schollheim.net/index.php/s/cYqq8tLeRdQ2Fs3',\n// Tutoren: 'https://cloud.schollheim.net/index.php/s/CsSqwHkJ9d4ppXc',\n// Barreferat: 'https://cloud.schollheim.net/index.php/s/B2MarGGDk5Y6HeK',\n// 'HSV-Vertretung': 'https://cloud.schollheim.net/index.php/s/d9BFC7bb6gGLsFz',\n// Nachhaltigkeitsreferat: 'https://cloud.schollheim.net/index.php/s/eKDjfty5LtBa7Z9',\n}\n\nexport default function DepartmentInformation() {\n const classes = useStyles()\n\n return (\n
\n \n \n {\n Object.entries(documents).map(([key, value]) => (\n \n \n
{key}
\n
\n
\n ))\n }\n
\n
\n
\n )\n}\n","import * as React from 'react'\nimport { useEffect, useState } from 'react'\nimport Table from '@material-ui/core/Table'\nimport TableCell from '@material-ui/core/TableCell'\nimport TableRow from '@material-ui/core/TableRow'\nimport TableBody from '@material-ui/core/TableBody'\nimport Backdrop from '@material-ui/core/Backdrop'\nimport CircularProgress from '@material-ui/core/CircularProgress'\nimport { makeStyles } from '@material-ui/core/styles'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport Card from '../card/Card'\nimport CardHeader from '../card/CardHeader'\nimport CardBody from '../card/CardBody'\n\nimport styles from 'assets/jss/dorm-app/customSelectStyle.js'\nimport { getApiUrl } from '../../api/api'\n\nconst useStyles = makeStyles(styles)\n\nexport default function IndividualHSV() {\n const [proceeding, setProceeding] = useState(true)\n const [engagements, setEngagements] = useState(null)\n\n const classes = useStyles()\n\n useEffect(() => {\n setProceeding(true)\n getApiUrl({ semester: 'WS24/25' })\n .get(`/individual/engagements`)\n .then(function(response) {\n setProceeding(false)\n setEngagements(response.data)\n })\n .catch(function(error) {\n setProceeding(false)\n console.log(error)\n })\n }, [])\n\n if (proceeding) {\n return (\n \n \n \n )\n }\n\n return (\n
\n \n {engagements\n ? Object.entries(engagements).map(([key, value]) => (\n \n \n \n \n

{key}

\n
\n \n \n \n \n \n \n \n
\n
\n
\n
\n
\n ))\n : []}\n
\n
\n )\n}\n\nfunction EngagementTabContent(props) {\n return (\n \n \n {props.engagementInfos.map((info) => (\n \n {info.tenantName}\n {info.tenantRoom}\n {info.tenantFloor}\n \n ))}\n \n
\n )\n}\n","// @material-ui/icons\nimport AssignmentIndIcon from '@material-ui/icons/AssignmentInd'\nimport IndividualTenantTab from '../components/individual/IndividualTenantTab'\nimport IndividualHSV from '../components/individual/IndividualHSV'\nimport PersonIcon from '@material-ui/icons/Person'\n\nexport const individualTenantRoutes = [\n {\n path: '/dashboard/me',\n name: 'Mein Account',\n icon: PersonIcon,\n component: IndividualTenantTab,\n },\n {\n path: '/dashboard/departments/current',\n name: 'HSV',\n icon: AssignmentIndIcon,\n component: IndividualHSV,\n },\n]\n","import * as React from 'react'\nimport GridItem from '../grid/GridItem'\nimport GridContainer from '../grid/GridContainer'\nimport CustomTabs from '../tab/CustomTabs'\nimport IndividualTenantPage from './IndividualTenantPage'\nimport IndividualEngagementApplication from './IndividualEngagementApplication'\nimport PersonIcon from '@material-ui/icons/Person'\nimport AssignmentIcon from '@material-ui/icons/Assignment'\nimport IndividualEngagements from './IndividualEngagements'\nimport DoneAllIcon from '@material-ui/icons/DoneAll'\nimport DepartmentInformation from './DepartmentInformation'\n\nexport default function IndividualTenantTab() {\n return (\n \n \n ,\n },\n {\n tabName: 'Meine Referate',\n tabIcon: DoneAllIcon,\n tabContent: ,\n },\n {\n tabName: 'Referatsbewerbung',\n tabIcon: AssignmentIcon,\n tabContent: ,\n },\n {\n tabName: 'Referatsordnung',\n tabIcon: AssignmentIcon,\n tabContent: ,\n },\n ]}\n />\n \n \n )\n}\n","// @material-ui/icons\nimport PeopleIcon from '@material-ui/icons/People'\nimport HeimratTenantsTab from '../components/tenant/heimrat/HeimratTenantsTab'\n\nexport const schlichtungDepartmentRoutes = [\n {\n path: '/dashboard/tenants',\n name: 'Bewohner',\n icon: PeopleIcon,\n component: HeimratTenantsTab,\n },\n]\n","import React, { createRef, useState } from 'react'\nimport { Switch } from 'react-router-dom'\n// @material-ui/core components\nimport { makeStyles } from '@material-ui/core/styles'\n// core components\nimport { Redirect } from 'react-router'\nimport Navbar from 'components/navbar/Navbar.jsx'\nimport Sidebar from 'components/sidebar/Sidebar.jsx'\nimport styles from 'assets/jss/dorm-app/layouts/appStyle.js'\nimport logo from 'assets/img/logo.png'\nimport AuthenticatedRoute from '../components/login/AuthenticatedRoute'\n\nimport { adminRoutes } from '../routes/adminRoutes'\nimport { finanzenDepartmentRoutes } from '../routes/finanzenDepartmentRoutes'\nimport { heimratDepartmentRoutes } from '../routes/heimratDepartmentRoutes'\nimport { infoDepartmentRoutes } from '../routes/infoDepartmentRoutes'\nimport { zimmerDepartmentRoutes } from '../routes/zimmerDepartmentRoutes'\nimport { departureRoutes } from '../routes/departmentRoutes'\nimport { individualTenantRoutes } from '../routes/individualTenantRoutes'\nimport { schlichtungDepartmentRoutes } from '../routes/schlichtungDepartmentRoutes'\n\nconst useStyles = makeStyles(styles)\n\nfunction determineUserRoutes(user) {\n let routes = []\n\n if (user.authorities.includes('VERWALTUNG')) routes = routes.concat(adminRoutes)\n\n if (user.authorities.includes('HEIMRAT')) routes = routes.concat(heimratDepartmentRoutes)\n\n routes = routes.concat(departureRoutes(user))\n\n if (user.authorities.includes('FINANZEN')) routes = routes.concat(finanzenDepartmentRoutes)\n\n if (user.authorities.includes('ZIMMER')) routes = routes.concat(zimmerDepartmentRoutes)\n\n if (user.authorities.includes('INFO')) routes = routes.concat(infoDepartmentRoutes)\n\n if (user.authorities.includes('SCHLICHTUNG')) routes = routes.concat(schlichtungDepartmentRoutes)\n\n if (user.authorities.includes('TENANT')) routes = routes.concat(individualTenantRoutes)\n\n let map = routes.reduce(function(result, item) {\n result[item.name] = result[item.name] || []\n result[item.name].push(item)\n return result\n }, {})\n\n return Object.values(map).map(entry => entry[0])\n}\n\nexport default function Layout({ user }) {\n const classes = useStyles()\n\n const routes = determineUserRoutes(user)\n\n const switchRoutes = (\n \n {routes.map((prop, key) => {\n return \n })}\n \n )\n\n const mainPanel = createRef()\n\n const [mobileOpen, setMobileOpen] = useState(false)\n\n const handleDrawerToggle = () => {\n setMobileOpen(!mobileOpen)\n }\n\n return (\n \n \n
\n \n
\n \n
\n
{switchRoutes}
\n
\n
\n
\n
\n )\n}\n","// @material-ui/icons\nimport DirectionsRunIcon from '@material-ui/icons/DirectionsRun'\nimport DepartmentDeparturesTab from '../components/departure/department/DepartmentDeparturesTab'\n\n\nexport function departureRoutes(user) {\n let routes = []\n\n if (user.authorities.includes('DEPARTURE-TUTOREN'))\n routes = routes.concat([\n {\n path: '/dashboard/departures/tutoren',\n name: 'Auszüge Tutor',\n icon: DirectionsRunIcon,\n additionalProps: {\n department: 'tutoren',\n },\n component: DepartmentDeparturesTab,\n },\n ])\n if (user.authorities.includes('DEPARTURE-BAR'))\n routes = routes.concat([\n {\n path: '/dashboard/departures/bar',\n name: 'Auszüge Bar',\n icon: DirectionsRunIcon,\n additionalProps: {\n department: 'bar',\n },\n component: DepartmentDeparturesTab,\n },\n ])\n if (user.authorities.includes('DEPARTURE-WERK'))\n routes = routes.concat([\n {\n path: '/dashboard/departures/werk',\n name: 'Auszüge Werk',\n icon: DirectionsRunIcon,\n additionalProps: {\n department: 'werk',\n },\n component: DepartmentDeparturesTab,\n },\n ])\n if (user.authorities.includes('DEPARTURE-INNEN'))\n routes = routes.concat([\n {\n path: '/dashboard/departures/innen',\n name: 'Auszüge Innen',\n icon: DirectionsRunIcon,\n additionalProps: {\n department: 'innen',\n },\n component: DepartmentDeparturesTab,\n },\n ])\n if (user.authorities.includes('DEPARTURE-FINANZEN'))\n routes = routes.concat([\n {\n path: '/dashboard/departures/finanzen',\n name: 'Auszüge Finanz',\n icon: DirectionsRunIcon,\n additionalProps: {\n department: 'finanzen',\n },\n component: DepartmentDeparturesTab,\n },\n ])\n if (user.authorities.filter(it => it.includes('DEPARTURE-H')).length !== 0) {\n routes = routes.concat([\n {\n path: '/dashboard/departures/floor',\n name: 'Auszüge Flur',\n icon: DirectionsRunIcon,\n component: DepartmentDeparturesTab,\n },\n ])\n }\n\n return routes\n}\n","import React, { useState } from 'react'\nimport Avatar from '@material-ui/core/Avatar'\n// import Button from '@material-ui/core/Button'\nimport Button from 'components/button/RegularButton.jsx'\nimport CssBaseline from '@material-ui/core/CssBaseline'\nimport TextField from '@material-ui/core/TextField'\nimport Box from '@material-ui/core/Box'\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined'\nimport Typography from '@material-ui/core/Typography'\nimport { makeStyles } from '@material-ui/core/styles'\nimport Container from '@material-ui/core/Container'\nimport { AddAlert } from '@material-ui/icons'\nimport Snackbar from '../snackbar/Snackbar'\nimport { initialNotificationState } from '../utils/state/ApplicationState'\nimport { useHistory } from 'react-router-dom'\nimport { useLocation } from 'react-router'\nimport { getApiUrl } from '../../api/api'\n\n// function Copyright() {\n// return (\n// \n// Powered by Netzwerkreferat\n// \n// )\n// }\n\nconst useStyles = makeStyles((theme) => ({\n paper: {\n marginTop: theme.spacing(8),\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n },\n avatar: {\n margin: theme.spacing(1),\n backgroundColor: theme.palette.secondary.main,\n },\n form: {\n width: '100%',\n marginTop: theme.spacing(1),\n },\n submit: {\n margin: theme.spacing(3, 0, 2),\n },\n}))\n\nexport default function PasswordReset() {\n const classes = useStyles()\n\n const [username, setUsername] = useState('')\n const [notification, setNotification] = useState(initialNotificationState)\n\n const hist = useHistory()\n let search = useLocation().search\n let redirect\n if (search != null) redirect = search.split('=')[1]\n\n const loginLink = () => hist.push('/login')\n\n const submitForm = (e) => {\n e.preventDefault()\n\n getApiUrl()\n .get(`/public/password/reset/${username}`)\n .then(function(response) {\n setNotification({\n open: true,\n message: response.data,\n color: 'success',\n })\n setUsername('')\n setTimeout(function() {\n redirect != null ? hist.push(redirect) : hist.push('/login')\n }, 6000)\n })\n .catch(function(error) {\n if (error.response !== undefined) {\n setNotification({\n open: true,\n message: error.response.data.message,\n color: 'danger',\n })\n } else {\n setNotification({\n open: true,\n message: 'Bitte den Admin kontaktieren.',\n color: 'danger',\n })\n }\n })\n }\n\n return (\n \n \n
\n \n \n \n \n Passwort zurücksetzen\n \n
\n setUsername(e.currentTarget.value)}\n />\n {\n submitForm(e)\n }}>\n zurücksetzen\n \n \n
\n \n \n \n \n setNotification({\n open: false,\n message: '',\n color: '',\n })\n }\n close\n />\n
\n )\n}\n","import React, { createContext, useMemo, useState } from 'react'\nimport { BrowserRouter as Router, Route, useHistory } from 'react-router-dom'\nimport Login from './components/login/Login'\nimport { Redirect } from 'react-router'\nimport EditEngagement from './components/engagement/EditEngagement'\nimport EditTenantPage from './components/tenant/admin/tab/page/EditTenantPage'\nimport PublicDepartureDecision from './components/departure/public/PublicDepartureDecision'\nimport Layout from './layouts/Layout'\nimport PasswordReset from './components/login/PasswordReset'\n\nexport const UserContext = createContext({\n token: null,\n exp: null,\n username: null,\n id: null,\n authorities: [],\n})\n\nexport const apiUrl = process.env.REACT_APP_API_URL\nexport const timeout = 10000\n\n\nexport const emptyUser = JSON.parse(\n JSON.stringify({\n token: null,\n exp: null,\n username: null,\n id: null,\n authorities: [],\n }),\n)\n\nexport default function App() {\n const hist = useHistory()\n\n let userState = getWithExpiry('token')\n\n if (!userState) {\n userState = emptyUser\n }\n const [user, setUser] = useState(userState)\n\n const value = useMemo(() => ({ user, setUser }), [user, setUser])\n\n return (\n \n \n \n {user.authorities.length !== 0 ? : }\n \n \n \n \n \n \n {\n if (user.token !== null) return \n return \n }}\n />\n \n \n )\n}\n\n// const smartdormHeaderName = 'X-Smartdorm-Dorm-ID'\n// const smartdormID = '4885b6d1-bbe4-4d40-bd24-bce33f0d7728'\n//\n// export function authToken() {\n// let userState = getWithExpiry('token')\n// if (userState != null)\n// return userState['token']\n// else return ''\n// }\n\n// export function authHeader() {\n// let userState = getWithExpiry('token')\n// if (userState && userState.token) {\n// return { Authorization: 'Bearer ' + userState.token, dormIdHeader: dormId }\n// } else {\n// return { dormIdHeader: dormId }\n// }\n// }\n\nexport function getWithExpiry(key) {\n const itemStr = localStorage.getItem(key)\n\n if (itemStr == null) {\n return null\n }\n\n const item = parseJwt(itemStr)\n const now = new Date()\n\n if (now.getTime() / 1000 > item.exp) {\n localStorage.removeItem(key)\n return null\n }\n return item\n}\n\nexport function parseJwt(token) {\n let base64Url = token.split('.')[1]\n let base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n let jsonPayload = decodeURIComponent(\n atob(base64)\n .split('')\n .map(function(c) {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)\n })\n .join(''),\n )\n\n let jsonData = JSON.parse(jsonPayload)\n jsonData['token'] = token\n\n return jsonData\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport * as serviceWorker from './serviceWorker'\nimport 'assets/css/app.css'\nimport App from './App'\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister()\n"],"sourceRoot":""}