{"version":3,"sources":["images/spoorpark-logo-in-groen-blokje-met-schaduw.png","images/FooterBackground.png","images/parkplan.jpg","utils/AuthenticationContext.js","utils/jwt.js","utils/ScrollToTop.js","components/layout/navigation/index.js","components/layout/navigation/Navigation.js","components/layout/footer/index.js","components/layout/footer/Footer.js","components/layout/index.js","components/call-to-action/index.js","components/call-to-action/CallToAction.js","pages/Home.js","constants/PriceService.js","components/PlotTable/PlotTable.js","pages/Cart.js","constants/Paints.js","components/PlotPicker/PlotPicker.js","pages/PlotPicker.js","components/UserInformation/YupInitialValues.js","components/UserInformation/ValidationSchema/AccountInformation.js","components/UserInformation/ValidationSchema/NewAccount.js","components/UserInformation/ValidationSchema/Present.js","utils/createPayment.js","utils/MergeYupSchemas.js","utils/TimestringToUnix.js","utils/PersistencyMethods.js","utils/TimeframeToUnix.js","utils/RandomPassword.js","components/UserInformation/AccountInfo.js","components/UserInformation/LocationInfo.js","components/UserInformation/PersonalInfo.js","components/UserInformation/PresentInfo.js","components/UserInformation/ReserveAndOrderSpots.js","pages/UserInformation.js","components/User/LoginForm.js","components/User/ForgottenPassword/ForgottenPassword.js","components/User/ForgottenPassword/index.js","pages/UserLogin.js","pages/ResetPassword.js","pages/ReceiverPasswordReset.js","components/AuthenticatedRoute/index.js","components/User/UserDetails.js","components/User/OrderDetails.js","pages/User.js","utils/paymentResultMessages.js","pages/PaymentResultV2.js","components/search-field/SearchIcon.js","components/search-field/SearchField.js","components/search-field/index.js","components/Admin/AccountList.js","components/Admin/AccountCreate.js","components/Admin/OrderList.js","components/Admin/LoginForm.js","pages/Admin.js","App.js","registerServiceWorker.js","index.js","images/SpoorparkHero.jpg"],"names":["module","exports","__webpack_require__","p","AuthenticationContext","React","createContext","AuthenticationProvider","_ref","children","isAuthenticated","setAuthenticated","react_default","a","createElement","Provider","value","getJWTToken","localStorage","getItem","addJWTToken","token","setItem","authenticate","username","password","Promise","resolve","reject","fetch","method","headers","Content-Type","body","JSON","stringify","then","response","ok","text","decodedToken","JwtDecode","accountID","catch","error","withRouter","pathname","location","useEffect","window","scrollTo","Navigation","_useContext","useContext","className","react_router_dom","to","src","Logo","alt","Fragment","onClick","removeItem","Footer","Hero","target","rel","href","style","color","Layout","navigation","footer","CallToAction","route","Home","layout","ParkPlan","width","height","call_to_action","DetermineSpotPrice","timeframe","PlotTable","plotIds","_useState","useState","_useState2","Object","slicedToArray","plots","setPlots","scope","length","Cart","_ref$location$state","state","components_PlotTable_PlotTable","PAINT_OPEN_SPOT","fill-outline-color","fill-opacity","fill-color","PAINT_RESERVED_SPOT","PAINT_PAYED_SPOT","PAINT_CLOSED_SPOT","PlotPicker","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","handleClick","e","setSelectedPlots","clickStateIds","features","id","tempPlots","concat","toConsumableArray","selectedPlots","setState","i","splice","Map","hoverStateId","isLoading","bind","assertThisInitialized","clickSpot","_this2","mapboxgl","accessToken","map","container","center","minZoom","maxZoom","zoom","addControl","NavigationControl","on","firstSymbolId","layers","getStyle","type","addLayer","source","url","spotapi","Authorization","result","json","spots","addSource","data","paint","getCanvas","cursor","setFeatureState","hover","click","marginTop","zIndex","left","top","position","visibility","react_loader_spinner_default","Component","PlotPickerPage","history","_useState3","_useState4","_useState5","_useState6","setTimeframe","components_PlotPicker_PlotPicker","name","event","htmlFor","determinePricePerSpot","plot","properties","guid","push","disabled","YupInitialValues","firstName","lastName","phoneNumber","email","birthdate","street","number","addition","residency","postalCode","receiverName","receiverEmail","Yup","shape","required","matches","message","excludeEmptyString","positive","createPayment","asyncToGenerator","regenerator_default","mark","_callee","orderid","receiveremail","wrap","_context","prev","next","abrupt","stop","_x","_x2","apply","arguments","MergeYupSchemas","_len","schemas","Array","_key","first","slice","reduce","mergedSchemas","schema","TimestringToUnix","timestring","parts","split","Date","getTime","prepareAccountObject","isReceiverAccount","undefined","role","dateOfBirth","timestringToUnix","address","persistAccount","account","reserveSpots","spotIds","persistOrder","receiverId","orderUrl","unixDifference","timeframeToUnix","order","purchaseDate","now","expirationDate","generateRandomPassword","possibleCharacters","charactersLength","generatedPassword","charAt","Math","floor","random","AccountInfo","formik_esm","component","LocationInfo","PersonalInfo","placeholder","PresentInfo","reserveAndOrderSpots","_args","parse","UserInformation","isPresent","setPresent","isNewAccount","setIsNewAccount","setError","ValidationSchema","AccountInfoSchema","mergeYupSchemas","NewAccountSchema","PresentSchema","onFormSubmit","_ref2","values","setSubmitting","accountPromise","randomPassword","receiverValues","receiverAccount","spotReceiverPromise","orderId","status","sent","assign","all","res","validationSchema","initialValues","onSubmit","_ref3","render","_ref4","isSubmitting","UserInformation_AccountInfo","onChange","checked","UserInformation_PersonalInfo","UserInformation_LocationInfo","UserInformation_PresentInfo","LoginForm","setUsername","setPassword","showErrorMessage","autoComplete","preventDefault","decoded","jwt_decode","ForgottenPassword","receiverVersion","forgottenPassword","setForgottenPassword","success","setSuccess","UserLogin","User_LoginForm","User_ForgottenPassword","checkPassword","oneOf","ResetPassword","params","match","code","setCode","ReceiverpasswordReset","AuthenticatedRoute","exact","path","react_router","UserDetails","handleChange","defineProperty","getUserByUsername","handleDateChange","handleSubmit","deleteAccount","user","edit","Name","Email","PhoneNumber","console","log","updatedUser","links","orders","_this3","_this4","confirm","_this5","cellPadding","toLocaleDateString","margin","float","marginLeft","rror","OrderDetails","getSpotsByAccountID","unixTimeToDate","integerToSpotStatus","calctotalprice","_step2","_iterator2","_createForOfIteratorHelper","_loop2","spot","flyTo","geometry","coordinates","pitch","bearing","s","n","done","err","f","_iterator","_step","_loop","blob","newBlob","Blob","navigator","msSaveOrOpenBlob","URL","createObjectURL","link","document","download","unix","date","getDate","getMonth","getFullYear","spotstatus","totalprice","price","mapID","key","backgroundColor","display","marginBottom","rowSpan","lng","lat","reminderSent","expirationSent","generateCertificates","User","Navigate","UserSettings","User_UserDetails","UserOrder","User_OrderDetails","paid","failed","canceled","expired","unknown","open","PaymentResult","allPaymentStatusses","setAllPaymentStatusses","paymentStatus","setPaymentStatus","search","orderPromise","paymentStatussesPromise","paymentStatusses","find","element","toLowerCase","renderPage","SearchIcon","searchButtonEdge","iconEdge","ceil","version","x","y","viewBox","fill","d","searchFieldStyle","border","justifyContent","searchFieldButtonStyle","SEARCH_BUTTON_EDGE","outline","padding","boxSizing","appearance","borderLeft","searchFieldInputStyle","fontSize","flex","fontWeight","SearchField","searchText","onEnter","onSearchClickProp","onSearchClick","setValue","onKeyPress","which","keyCode","search_field_SearchIcon","AccountList","accounts","setAccounts","allAccounts","setAllAccounts","_useState7","_useState8","filteredAccounts","setFilteredAccounts","_useState9","_useState10","isFiltering","setFiltering","_useState11","_useState12","accountCount","setAccountCount","_useState13","_useState14","activePage","setActivePage","_useState15","_useState16","setLoading","_useState17","_useState18","csvData","setCsvData","_useState19","_useState20","csvOptions","setCsvOptions","getAccounts","getAllAccounts","fetchedAccounts","newCsvData","forEach","includes","Vrienden van Spoorpark emailadressen","options","fieldSeparator","filename","quoteStrings","decimalSeparator","showTitle","useTextFile","useBom","useKeysAsHeaders","Page","Size","count","unixTimeStamp","locallyFilteredAccounts","search_field","ExportToCsv","generateCsv","startsWith","reload","handleDelete","Pagination_default","itemsCountPerPage","totalItemsCount","pageRangeDisplayed","pageNumber","itemClass","linkClass","AccountCreate","OrderList","handlePageChange","getOrders","orderCount","context","Error","contextType","Admin","AdminAccount","Admin_AccountCreate","Admin_AccountList","AdminSpot","confirmUpdatePlots","Admin_createForOfIteratorHelper","Admin_this","AdminOrder","Admin_OrderList","AdminLogin","Admin_LoginForm","App","AuthenticationContext_AuthenticationProvider","utils_ScrollToTop","components_AuthenticatedRoute","Boolean","hostname","ReactDOM","src_App","getElementById","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.377ecc6d.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/FooterBackground.b0af4f60.png\";","module.exports = __webpack_public_path__ + \"static/media/parkplan.21501380.jpg\";","import React from 'react';\r\n\r\nexport const AuthenticationContext = React.createContext();\r\nexport const AuthenticationProvider = ({\r\n children,\r\n isAuthenticated,\r\n setAuthenticated,\r\n}) => (\r\n \r\n {children}\r\n \r\n);\r\n","import JwtDecode from 'jwt-decode';\r\n\r\nexport const getJWTToken = () => localStorage.getItem('jwt-token');\r\n\r\nexport const addJWTToken = token => localStorage.setItem('jwt-token', token);\r\n\r\nexport const removeJWTToken = () => localStorage.removeItem('jwt-token');\r\n\r\nexport const authenticate = (username, password) =>\r\n new Promise((resolve, reject) =>\r\n fetch('/api/authentication', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n username,\r\n password,\r\n }),\r\n })\r\n .then(response => {\r\n if (!response.ok) throw response;\r\n return response.text();\r\n })\r\n .then(token => {\r\n addJWTToken(token);\r\n const decodedToken = JwtDecode(token);\r\n\r\n localStorage.setItem('username', decodedToken.username);\r\n localStorage.setItem('accountID', decodedToken.accountID);\r\n\r\n resolve(token);\r\n })\r\n .catch(error => reject(error))\r\n );\r\n","import { useEffect } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nconst ScrollToTop = ({ children, location: { pathname } }) => {\r\n useEffect(() => {\r\n window.scrollTo(0, 0);\r\n }, [pathname]);\r\n\r\n return children;\r\n};\r\n\r\nexport default withRouter(ScrollToTop);\r\n","import Navigation from './Navigation';\r\n\r\nexport default Navigation;\r\n","import React, { useContext } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Logo from '../../../images/spoorpark-logo-in-groen-blokje-met-schaduw.png';\r\nimport { AuthenticationContext } from '../../../utils/AuthenticationContext';\r\nimport { removeJWTToken } from '../../../utils/jwt';\r\n//import './styles.css';\r\n\r\nconst Navigation = () => {\r\n\r\n const { isAuthenticated, setAuthenticated } = useContext(\r\n AuthenticationContext\r\n );\r\n\r\n const logOut = () => {\r\n removeJWTToken();\r\n setAuthenticated(false);\r\n localStorage.removeItem('username');\r\n localStorage.removeItem('accountID');\r\n localStorage.removeItem('orderID');\r\n localStorage.removeItem('paymentID');\r\n localStorage.removeItem('plotIds');\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \"logo\"\r\n \r\n
\r\n
\r\n
\r\n
    \r\n {isAuthenticated ? (\r\n <>\r\n
  • \r\n \r\n Mijn account\r\n \r\n
  • \r\n
  • \r\n \r\n Log uit\r\n \r\n
  • \r\n \r\n ) : (\r\n
  • \r\n \r\n Log in\r\n \r\n
  • \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n //
  • \r\n // \r\n // Home\r\n // \r\n //
  • \r\n\r\n //
    \r\n //
    \r\n // \r\n // \"Spoorpark\r\n // \r\n\r\n //
    \r\n // {!true ? (\r\n // <>\r\n // \r\n //

    Gebruikerspaneel

    \r\n // \r\n // \r\n //

    Log uit

    \r\n // />\r\n // \r\n // \r\n // ) : (\r\n // \r\n //

    Log in

    \r\n // \r\n // )}\r\n //
    \r\n //
    \r\n //
    \r\n );\r\n};\r\n\r\nexport default Navigation;\r\n","import Footer from './Footer';\r\n\r\nexport default Footer;\r\n","import React from 'react';\r\n//import './styles.css';\r\nimport Hero from '../../../images/FooterBackground.png';\r\n\r\nconst Footer = () => (\r\n
    \r\n
    \r\n \"img\r\n
    \r\n
    \r\n \r\n
    \r\n);\r\n\r\nexport default Footer;\r\n","import React from 'react';\r\n\r\nimport './styles.css';\r\n\r\nimport Navigation from './navigation';\r\nimport Footer from './footer';\r\n\r\nconst Layout = ({ children }) => (\r\n
    \r\n \r\n
    {children}
    \r\n
    \r\n);\r\n\r\nexport default Layout;\r\n","import CallToAction from './CallToAction';\r\n\r\nexport default CallToAction;\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst CallToAction = ({ text, route}) => (\r\n \r\n {text}\r\n \r\n);\r\n\r\nexport default CallToAction;\r\n","import React from 'react';\r\n\r\nimport Layout from '../components/layout';\r\nimport ParkPlan from '../images/parkplan.jpg';\r\nimport Hero from '../images/SpoorparkHero.jpg';\r\nimport CallToAction from '../components/call-to-action';\r\n\r\nconst Home = () => (\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \"Hero\"\r\n
    \r\n
    \r\n

    \r\n Vrienden van het Spoorpark\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    \r\n Het Spoorpark is van ons allemaal!\r\n

    \r\n

    \r\n Meer dan welk ander park in de stad is het Spoorpark van ons allemaal.\r\n Het is gerealiseerd als burgerinitiatief en die basisgedachte willen we vasthouden.\r\n Dus hoe meer burgers aanhaken, meedoen, enthousiast zijn, het park omarmen en ons ook financieel steunen, des te meer het Spoorpark een plek zal zijn waar alle Tilburgers zich niet alleen gevoelsmatig, maar ook feitelijk aan kunnen verbinden.\r\n

    \r\n

    \r\n \"parkplattegrond\"\r\n

    \r\n

    \r\n Word vriend van het Spoorpark en adopteer je eigen plek in het park!\r\n

    \r\n

    \r\n Voor 25 euro per jaar per 10 vierkante meter ben je al Vriend van het Spoorpark. \r\n Met de steun van al onze vrienden kunnen we onze belofte waarmaken: een schoon, veilig en gezellig park voor jong en oud. \r\n Doe mee en kies jouw favoriete spot(s) in het park. Of geef een plek cadeau aan een vriend, vriendin, collega, kind of kleinkind.\r\n

    \r\n

    \r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default Home;\r\n\r\n//

    Het Spoorpark is van ons allemaal!

    \r\n//

    \r\n// Meer dan welk ander park in de stad is het Spoorpark van ons allemaal.{' '}\r\n//
    \r\n// Het is gerealiseerd als burgerinitiatief en die basisgedachte willen we\r\n// vasthouden.
    \r\n// Dus hoe meer burgers aanhaken, meedoen, enthousiast zijn, het park omarmen\r\n// en ons ook financieel steunen, des te meer het Spoorpark een plek zal zijn\r\n// waar alle Tilburgers zich niet alleen gevoelsmatig, maar ook feitelijk aan\r\n// kunnen verbinden.\r\n//

    \r\n// \r\n//

    \r\n// Sluit u aan bij de Vrienden van het Spoorpark door het adopteren van een\r\n// spot binnen het park!\r\n//

    \r\n//

    \r\n// Voor 25 euro per jaar per 10 vierkante meter bent u al Vriend van het\r\n// Spoorpark.
    \r\n// Met de steun van al onze vrienden kunnen we onze belofte waarmaken: een\r\n// schoon, veilig en gezellig park voor jong en oud.
    \r\n// Doe mee en kies uw favoriete spot(s) in het park.
    \r\n// Of geef het cadeau aan een vriend, vriendin, collega, uw kind of\r\n// kleinkind.\r\n//

    \r\n// ","const DetermineSpotPrice = (timeframe) => {\r\n switch (timeframe) {\r\n case '3 jaar':\r\n // 3 years costs €60 instead of €75, which saves €5 per year\r\n return '65';\r\n case '5 jaar':\r\n // 5 years costs €90 instead of €125, which saves €7 per year\r\n return '100';\r\n default:\r\n return '25';\r\n }\r\n}\r\n\r\nexport { DetermineSpotPrice };","import React, { useState, useEffect } from 'react';\r\nimport { DetermineSpotPrice } from '../../constants/PriceService';\r\n\r\nconst PlotTable = ({ plotIds, timeframe }) => {\r\n const [plots, setPlots] = useState([]);\r\n\r\n useEffect(() => {\r\n setPlots(plotIds);\r\n }, [plotIds]);\r\n\r\n return (\r\n <>\r\n {timeframe === '3 jaar' && (\r\n
    \r\n Met uw adoptie voor {timeframe} bespaart u in totaal €\r\n 10!\r\n
    \r\n )}\r\n {timeframe === '5 jaar' && (\r\n
    \r\n Met uw adoptie voor {timeframe} bespaart u in totaal €\r\n 25!\r\n
    \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    AdoptietijdHoeveelheid spotsPrijs per spotTotaalprijs (incl. BTW)
    {timeframe}{plots.length}€{DetermineSpotPrice(timeframe)}€{plots.length * (DetermineSpotPrice(timeframe))}
    \r\n \r\n );\r\n};\r\n\r\nexport default PlotTable;\r\n","import React from 'react';\r\n\r\nimport Layout from '../components/layout';\r\nimport PlotTable from '../components/PlotTable/PlotTable';\r\nimport CallToAction from '../components/call-to-action';\r\n\r\nconst Cart = ({\r\n location: {\r\n state: { plotIds, timeframe },\r\n },\r\n}) => (\r\n \r\n

    Aankoopoverzicht

    \r\n \r\n \r\n
    \r\n);\r\n\r\nexport default Cart;\r\n","var PAINT_OPEN_SPOT = {\r\n 'fill-outline-color': [\r\n 'case',\r\n ['boolean', ['feature-state', 'hover'], false],\r\n '#000',\r\n '#AAFFAA',\r\n ],\r\n 'fill-opacity': 0.6,\r\n 'fill-color': [\r\n 'case',\r\n ['boolean', ['feature-state', 'click'], false],\r\n '#0000FF',\r\n '#11AA11',\r\n ],\r\n };\r\n\r\nvar PAINT_RESERVED_SPOT = {\r\n 'fill-color': '#FFA500',\r\n 'fill-opacity': 1,\r\n};\r\n\r\nvar PAINT_PAYED_SPOT = {\r\n 'fill-color': '#F00',\r\n 'fill-opacity': 0.6,\r\n};\r\n\r\nvar PAINT_CLOSED_SPOT = {\r\n 'fill-outline-color': [\r\n 'case',\r\n ['boolean', ['feature-state', 'hover'], false],\r\n '#000',\r\n '#AAFFAA',\r\n ],\r\n 'fill-opacity': 0.6,\r\n 'fill-color': [\r\n 'case',\r\n ['boolean', ['feature-state', 'click'], false],\r\n '#00F',\r\n '#F0F',\r\n ],\r\n };\r\n\r\nexport {PAINT_OPEN_SPOT, PAINT_RESERVED_SPOT, PAINT_PAYED_SPOT, PAINT_CLOSED_SPOT}","import React from 'react';\r\n\r\nimport './styles.css';\r\nimport mapboxgl from 'mapbox-gl';\r\nimport Loader from 'react-loader-spinner';\r\nimport { PAINT_CLOSED_SPOT, PAINT_OPEN_SPOT, PAINT_PAYED_SPOT, PAINT_RESERVED_SPOT } from '../../constants/Paints';\r\n\r\nclass PlotPicker extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedPlots: [],\r\n clickStateIds: new Map(),\r\n hoverStateId: null,\r\n error: '',\r\n isLoading: true,\r\n };\r\n this.handleClick = this.handleClick.bind(this);\r\n this.clickSpot = this.clickSpot.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n mapboxgl.accessToken =\r\n 'pk.eyJ1Ijoic3Bvb3JwYXJrdGlsYnVyZyIsImEiOiJjandqNTB1Y2owZ243NDNwYnQ2eWJuNWp0In0.k5Q6UPxmFmxe6fw7upbdXg';\r\n const map = new mapboxgl.Map({\r\n container: 'map',\r\n style: 'mapbox://styles/mapbox/streets-v11',\r\n center: [5.0697, 51.5616],\r\n minZoom: 16,\r\n maxZoom: 16.9,\r\n zoom: 16,\r\n });\r\n\r\n // Add zoom and rotation controls to the map.\r\n map.addControl(new mapboxgl.NavigationControl());\r\n\r\n map.on('load', function () {\r\n\r\n var layers = map.getStyle().layers;\r\n // Find the index of the first symbol layer in the map style\r\n var firstSymbolId;\r\n for (var i = 0; i < layers.length; i++) {\r\n if (layers[i].type === 'symbol') {\r\n firstSymbolId = layers[i].id;\r\n break;\r\n }\r\n }\r\n\r\n map.addLayer({\r\n id: 'spoorpark',\r\n source: {\r\n type: 'raster',\r\n url: 'mapbox://spoorparktilburg.bioumigo',\r\n },\r\n type: 'raster',\r\n },\r\n firstSymbolId);\r\n })\r\n\r\n // use props here for fetch call Tom.\r\n fetch(this.props.spotapi, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(result => result.json())\r\n\r\n //.then(\r\n \r\n //)\r\n\r\n .then(spots => {\r\n // TODO: cache this!!\r\n map.addSource('openSpots', {\r\n type: 'geojson',\r\n data: spots[0],\r\n });\r\n\r\n map.addLayer({\r\n id: 'state-fills',\r\n type: 'fill',\r\n source: 'openSpots',\r\n layout: {},\r\n paint: PAINT_OPEN_SPOT\r\n });\r\n this.setState({ isLoading: false })\r\n map.on('mouseenter', 'state-fills', function () {\r\n map.getCanvas().style.cursor = 'pointer';\r\n });\r\n\r\n map.on('mouseleave', 'state-fills', function () {\r\n map.getCanvas().style.cursor = 'default';\r\n });\r\n\r\n // Add clicked spot to the selected spots\r\n map.on('click', 'state-fills', this.handleClick);\r\n // Show hovered spot\r\n map.on('mousemove', 'state-fills', e => {\r\n if (e.features.length > 0) {\r\n if (this.state.hoverStateId) {\r\n map.setFeatureState(\r\n { source: 'openSpots', id: this.state.hoverStateId },\r\n { hover: false }\r\n );\r\n }\r\n this.setState({ hoverStateId: e.features[0].id });\r\n map.setFeatureState(\r\n { source: 'openSpots', id: this.state.hoverStateId },\r\n { hover: true }\r\n );\r\n }\r\n });\r\n\r\n // Show clicked spot\r\n map.on('click', 'state-fills', e => {\r\n if (e.features.length > 0) {\r\n if (this.state.clickStateIds[e.features[0].id]) {\r\n map.setFeatureState(\r\n {\r\n source: 'openSpots',\r\n id: e.features[0].id,\r\n },\r\n {\r\n click: false,\r\n }\r\n );\r\n const tempPlots = [...this.state.clickStateIds];\r\n tempPlots[e.features[0].id] = false;\r\n this.setState({ clickStateIds: tempPlots });\r\n } else {\r\n const tempPlots = [...this.state.clickStateIds, e.features[0].id];\r\n tempPlots[e.features[0].id] = true;\r\n this.setState({ clickStateIds: tempPlots });\r\n map.setFeatureState(\r\n {\r\n source: 'openSpots',\r\n id: e.features[0].id,\r\n },\r\n { click: true }\r\n );\r\n }\r\n }\r\n });\r\n if (spots[1] != null) {\r\n map.addSource('reservedSpot', {\r\n type: 'geojson',\r\n data: spots[1],\r\n });\r\n\r\n map.addLayer({\r\n id: 'state-reserved',\r\n type: 'fill',\r\n source: 'reservedSpot',\r\n layout: {},\r\n paint: PAINT_RESERVED_SPOT\r\n });\r\n }\r\n\r\n map.on('click', 'state-reserved', e => {\r\n this.clickSpot(map, e, 'openSpots');\r\n });\r\n\r\n if (spots[2] != null) {\r\n map.addSource('paidSpot', {\r\n type: 'geojson',\r\n data: spots[2],\r\n });\r\n\r\n map.addLayer({\r\n id: 'state-paid',\r\n type: 'fill',\r\n source: 'paidSpot',\r\n layout: {},\r\n paint: PAINT_PAYED_SPOT\r\n });\r\n }\r\n\r\n if (spots[3] != null) {\r\n map.addSource('closedSpot', {\r\n type: 'geojson',\r\n data: spots[3],\r\n });\r\n\r\n map.addLayer({\r\n id: 'state-closed',\r\n type: 'fill',\r\n source: 'closedSpot',\r\n layout: {},\r\n paint: PAINT_CLOSED_SPOT\r\n });\r\n map.on('click', 'state-closed', e => {\r\n this.clickSpot(map, e, 'closedSpot');\r\n });\r\n }\r\n // Add clicked spot to the selected spots\r\n if (this.props.spotapi === '/api/spot/geojsonadmin') {\r\n map.on('click', 'state-fills', this.handleClick);\r\n map.on('click', 'state-closed', this.handleClick);\r\n } else {\r\n map.on('click', 'state-fills', this.handleClick);\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({ error });\r\n });\r\n }\r\n\r\n // Handle click for the spot selecting\r\n handleClick = e => {\r\n const { setSelectedPlots } = this.props;\r\n if (!this.state.clickStateIds[e.features[0].id]) {\r\n const tempPlots = [...this.state.selectedPlots];\r\n\r\n // Check the spot id if it exists in the array\r\n for (let i = 0; i < tempPlots.length; i += 1) {\r\n if (tempPlots[i].id === e.features[0].id) {\r\n tempPlots.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n\r\n // Set the state and the selected plots again\r\n this.setState({ selectedPlots: tempPlots });\r\n setSelectedPlots(tempPlots);\r\n } else {\r\n // Add a new spot to the state\r\n const tempPlots = [...this.state.selectedPlots, e.features[0]];\r\n this.setState({ selectedPlots: tempPlots });\r\n setSelectedPlots(tempPlots);\r\n }\r\n };\r\n\r\n clickSpot(map, e, source) {\r\n if (e.features.length > 0) {\r\n if (this.state.clickStateIds[e.features[0].id]) {\r\n map.setFeatureState(\r\n {\r\n source,\r\n id: e.features[0].id,\r\n },\r\n {\r\n click: false,\r\n }\r\n );\r\n const tempPlots = [...this.state.clickStateIds];\r\n tempPlots[e.features[0].id] = false;\r\n this.setState({ clickStateIds: tempPlots });\r\n } else {\r\n const tempPlots = [...this.state.clickStateIds, e.features[0].id];\r\n tempPlots[e.features[0].id] = true;\r\n this.setState({ clickStateIds: tempPlots });\r\n map.setFeatureState(\r\n {\r\n source,\r\n id: e.features[0].id,\r\n },\r\n { click: true }\r\n );\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.state.error && (\r\n
    \r\n Kon spots niet ophalen. Probeer het later opnieuw.\r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default PlotPicker;","import React, { useState } from 'react';\r\n\r\nimport Layout from '../components/layout';\r\nimport PlotPicker from '../components/PlotPicker/PlotPicker';\r\n//import { DetermineSpotPrice } from '../constants/PriceService';\r\nimport Hero from '../images/SpoorparkHero.jpg';\r\n\r\nconst PlotPickerPage = ({ history }) => {\r\n // New React Hooks :)\r\n const [error] = useState();\r\n const [selectedPlots, setSelectedPlots] = useState([]);\r\n const [timeframe, setTimeframe] = useState('1 jaar');\r\n\r\n const determinePricePerSpot = () => {\r\n switch (timeframe) {\r\n case '3 jaar':\r\n // 3 years costs €60 instead of €75, which saves €5 per year\r\n return '66';\r\n case '5 jaar':\r\n // 5 years costs €90 instead of €125, which saves €7 per year\r\n return '100';\r\n default:\r\n return '25';\r\n }\r\n };\r\n\r\n const confirmPlots = () => {\r\n const plotIds = selectedPlots.map(plot => plot.properties.guid);\r\n localStorage.setItem('plotIds', JSON.stringify(plotIds));\r\n history.push({\r\n pathname: '/user-information',\r\n state: { plotIds, timeframe },\r\n });\r\n };\r\n\r\n return (\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \"Hero\"\r\n
    \r\n
    \r\n

    \r\n Vrienden van het Spoorpark\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n

    Kies jouw spot(s)

    \r\n

    \r\n Door het selecteren van een of meerdere spots op onderstaande kaart kun je een stukje Spoorpark adopteren.\r\n Om een beter zicht te krijgen op de verschillende plots kun je ook inzoomen op de kaart.\r\n
    \r\n Let op: Wanneer je spot(s) langer dan een jaar adopteert krijg je korting!\r\n

    \r\n
    \r\n
    \r\n \r\n
    \r\n

    \r\n Legenda\r\n

    \r\n
      \r\n
    • \r\n Beschikbaar\r\n
    • \r\n
    • \r\n Gereserveerd\r\n
    • \r\n
    • \r\n Geadopteerd\r\n
    • \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n

    \r\n Kies de adoptietijd van de geselecteerde spot(s)\r\n

    \r\n\r\n
    \r\n
    \r\n setTimeframe(event.target.value)}>\r\n \r\n
    \r\n
    \r\n setTimeframe(event.target.value)}>\r\n \r\n
    \r\n
    \r\n setTimeframe(event.target.value)}>\r\n \r\n
    \r\n
    \r\n\r\n

    \r\n Je hebt momenteel {selectedPlots.length} spot(s) geselecteerd voor een totaalbedrag van{' '}\r\n €{selectedPlots.length * determinePricePerSpot()},00.\r\n

    \r\n\r\n \r\n Volgende stap\r\n \r\n\r\n {error && (\r\n
    \r\n Kon spots niet reserveren. Probeer het later opnieuw.\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PlotPickerPage;\r\n","export default {\r\n firstName: '',\r\n lastName: '',\r\n phoneNumber: '',\r\n email: '',\r\n birthdate: '',\r\n street: '',\r\n number: '',\r\n addition: '',\r\n residency: '',\r\n postalCode: '',\r\n username: '',\r\n password: '',\r\n receiverName: '',\r\n receiverEmail: '',\r\n};\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n username: Yup.string().required('E-mailadres is verplicht'),\r\n password: Yup.string().required('Wachtwoord is verplicht'),\r\n});\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n firstName: Yup.string().required('Voornaam is verplicht'),\r\n lastName: Yup.string().required('Achternaam is verplicht'),\r\n phoneNumber: Yup.string().required('Telefoonnummer is verplicht'),\r\n email: Yup.string()\r\n .email('Het ingevulde e-mailadres is niet valide')\r\n .required('Email is verplicht'),\r\n birthdate: Yup.string('De ingevulde datum is niet valide')\r\n .matches(/^([0-2][0-9]|(3)[0-1])(\\/)(((0)[0-9])|((1)[0-2]))(\\/)\\d{4}$/, {\r\n message: 'De ingevulde datum moet voldoen aan het dd/mm/jjjj formaat',\r\n excludeEmptyString: true,\r\n })\r\n .required('Geboortedatum is verplicht'),\r\n street: Yup.string().required('Straatnaam is verplicht'),\r\n number: Yup.number()\r\n .positive('Huisnummer moet positief zijn')\r\n .required('Huisnummer is verplicht'),\r\n addition: Yup.string(),\r\n residency: Yup.string().required('Woonplaats is verplicht'),\r\n postalCode: Yup.string().required('Postcode is verplicht'),\r\n});\r\n","import * as Yup from 'yup';\r\n\r\nexport default Yup.object().shape({\r\n receiverName: Yup.string().required('Naam ontvanger is verplicht'),\r\n receiverEmail: Yup.string()\r\n .email('Het ingevulde e-mailadres is niet valide')\r\n .required('Email ontvanger is verplicht'),\r\n});\r\n","export const createPayment = async (orderid, receiveremail) =>\r\n new Promise(reject =>\r\n fetch(`api/mollie/idealPay/${orderid}/${receiveremail}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(response => {\r\n if (!response.ok) reject(response);\r\n return response.json();\r\n })\r\n .then(json => {\r\n localStorage.setItem('paymentID', json.id);\r\n window.location = json.url;\r\n })\r\n );\r\n","// Merges all the passed in schema's together.\r\n// It takes an infinite amount of schemas as they're all spread out\r\nexport default (...schemas) => {\r\n const [first, ...rest] = schemas;\r\n\r\n const merged = rest.reduce(\r\n (mergedSchemas, schema) => mergedSchemas.concat(schema),\r\n first\r\n );\r\n\r\n return merged;\r\n};\r\n","export default timestring => {\r\n const parts = timestring.split('/');\r\n const date = new Date(parts[2], parts[1] - 1, parts[0], 12, 0, 0, 0);\r\n const unix = date.getTime() / 1000;\r\n return unix;\r\n};\r\n","import timestringToUnix from './TimestringToUnix';\r\nimport timeframeToUnix from './TimeframeToUnix';\r\nimport { getJWTToken } from './jwt';\r\n\r\nexport const prepareAccountObject = (\r\n {\r\n username,\r\n password,\r\n firstName,\r\n lastName,\r\n phoneNumber,\r\n email,\r\n birthdate,\r\n street,\r\n number,\r\n addition,\r\n residency,\r\n postalCode,\r\n receiverName,\r\n },\r\n isReceiverAccount = false\r\n) => ({\r\n username,\r\n password,\r\n email,\r\n role: 1,\r\n name: isReceiverAccount ? receiverName : `${firstName} ${lastName}`,\r\n phoneNumber: isReceiverAccount ? '' : phoneNumber,\r\n dateOfBirth: isReceiverAccount ? 0 : timestringToUnix(birthdate),\r\n address: isReceiverAccount\r\n ? null\r\n : {\r\n street,\r\n number,\r\n addition,\r\n residency,\r\n postalCode,\r\n },\r\n});\r\n\r\nexport const persistAccount = account =>\r\n new Promise((resolve, reject) =>\r\n fetch('/api/account', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(account),\r\n }).then(response => {\r\n if (!response.ok) reject(response);\r\n else resolve(response);\r\n })\r\n );\r\n\r\nexport const reserveSpots = spotIds =>\r\n new Promise((resolve, reject) =>\r\n fetch('/api/spot/reserve', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`,\r\n },\r\n body: JSON.stringify(spotIds),\r\n }).then(response => {\r\n if (!response.ok) reject(response);\r\n else resolve(response);\r\n })\r\n );\r\n\r\nexport const persistOrder = (plotIds, timeframe, receiverId) => {\r\n const unixDifference = timeframeToUnix(timeframe);\r\n\r\n // TODO: remove available and price parameters from being parsed in the backend\r\n const order = {\r\n purchaseDate: Date.now() / 1000,\r\n expirationDate: Date.now() / 1000 + unixDifference,\r\n spots: plotIds.map(id => ({\r\n id,\r\n })),\r\n };\r\n\r\n let orderUrl;\r\n if (receiverId) orderUrl = `/api/order/${localStorage.getItem('accountID')}/${receiverId}`;\r\n else orderUrl = `/api/order/${localStorage.getItem('accountID')}`;\r\n\r\n return new Promise((resolve, reject) =>\r\n fetch(orderUrl, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`,\r\n },\r\n body: JSON.stringify(order),\r\n }).then(response => {\r\n if (!response.ok) reject(response);\r\n else resolve(response.text());\r\n })\r\n );\r\n};\r\n","export default timeframe => {\r\n switch (timeframe) {\r\n case '1 jaar':\r\n // First multiply by the amount of senconds in an hour.\r\n // Take a whole day after that and multiply by 365 days a year.\r\n return 3600 * 24 * 365;\r\n case '3 jaar':\r\n // Multiply year by 3\r\n return 3600 * 24 * 365 * 3;\r\n case '5 jaar':\r\n // Multiply year by 5\r\n return 3600 * 24 * 365 * 5;\r\n default:\r\n // Default is one year too\r\n return 3600 * 24 * 365;\r\n }\r\n};\r\n","const generateRandomPassword = () => {\r\n const possibleCharacters =\r\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const charactersLength = possibleCharacters.length;\r\n\r\n let generatedPassword = '';\r\n for (let i = 0; i < 20; i += 1) {\r\n generatedPassword += possibleCharacters.charAt(\r\n Math.floor(Math.random() * charactersLength)\r\n );\r\n }\r\n\r\n return generatedPassword;\r\n};\r\n\r\nexport default generateRandomPassword;\r\n","import React from 'react';\r\nimport { Field, ErrorMessage } from 'formik';\r\n\r\nconst AccountInfo = () => (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport default AccountInfo;\r\n","import React from 'react';\r\nimport { Field, ErrorMessage } from 'formik';\r\n\r\nconst LocationInfo = () => (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport default LocationInfo;\r\n","import React from 'react';\r\nimport { Field, ErrorMessage } from 'formik';\r\n\r\nconst PersonalInfo = () => (\r\n <>\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n);\r\n\r\nexport default PersonalInfo;\r\n","import React from 'react';\r\nimport { Field, ErrorMessage } from 'formik';\r\n\r\n//import './styles.css';\r\n\r\nconst PresentInfo = () => (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default PresentInfo;\r\n","import { persistOrder, reserveSpots } from '../../utils/PersistencyMethods';\r\n\r\nconst reserveAndOrderSpots = async (timeframe, receiverId = null) => {\r\n // Reserve the spots that are given to the receiver\r\n const plotIds = JSON.parse(localStorage.getItem('plotIds'));\r\n\r\n // Configure an order to be persisted based on the receiver's spots\r\n return reserveSpots(plotIds).then(() => persistOrder(plotIds, timeframe, receiverId));\r\n};\r\n\r\nexport default reserveAndOrderSpots;","import React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage } from 'formik';\r\n\r\n// Yup specific imports\r\nimport initialValues from '../components/UserInformation/YupInitialValues';\r\nimport AccountInfoSchema from '../components/UserInformation/ValidationSchema/AccountInformation';\r\nimport NewAccountSchema from '../components/UserInformation/ValidationSchema/NewAccount';\r\nimport PresentSchema from '../components/UserInformation/ValidationSchema/Present';\r\n\r\nimport { createPayment } from '../utils/createPayment';\r\nimport { authenticate, getJWTToken } from '../utils/jwt';\r\nimport mergeYupSchemas from '../utils/MergeYupSchemas';\r\nimport {\r\n persistAccount,\r\n prepareAccountObject,\r\n} from '../utils/PersistencyMethods';\r\nimport generateRandomPassword from '../utils/RandomPassword';\r\n\r\nimport Layout from '../components/layout';\r\nimport {\r\n AccountInfo,\r\n LocationInfo,\r\n PersonalInfo,\r\n PresentInfo,\r\n} from '../components/UserInformation';\r\nimport reserveAndOrderSpots from '../components/UserInformation/ReserveAndOrderSpots';\r\n\r\nconst UserInformation = ({\r\n location: {\r\n state: { timeframe },\r\n },\r\n}) => {\r\n const [isPresent, setPresent] = useState(false);\r\n const [isNewAccount, setIsNewAccount] = useState(false);\r\n const [error, setError] = useState();\r\n\r\n // Default schema that always needs to be validated (containing username and password)\r\n let ValidationSchema = AccountInfoSchema;\r\n if (isNewAccount)\r\n ValidationSchema = mergeYupSchemas(ValidationSchema, NewAccountSchema);\r\n if (isPresent)\r\n ValidationSchema = mergeYupSchemas(ValidationSchema, PresentSchema);\r\n\r\n const onFormSubmit = async (values, setSubmitting) => {\r\n let accountPromise = null;\r\n\r\n if (isNewAccount) {\r\n // Create a new account, log it in and add the JWT to localStorage\r\n const account = prepareAccountObject(values);\r\n accountPromise = persistAccount(account).then(() =>\r\n authenticate(account.username, account.password)\r\n );\r\n } else {\r\n // Validate the account to log in with and add the JWT to localStorage\r\n accountPromise = authenticate(values.username, values.password);\r\n }\r\n\r\n // Create a receiver account with automatically generated password\r\n if (isPresent) {\r\n // Check if the receiver account already exists\r\n const receiverId = await fetch(\r\n `/api/account/email/${values.receiverEmail}`\r\n ).then(response => {\r\n if (response.status === 204) return null;\r\n return response.json();\r\n });\r\n\r\n if (receiverId != null) {\r\n reserveAndOrderSpots(timeframe, receiverId)\r\n .then(orderId => createPayment(orderId, values.receiverEmail))\r\n .catch(error => {\r\n error\r\n .text()\r\n .then(message => {\r\n setError(message);\r\n setSubmitting(false);\r\n })\r\n .catch(() => {\r\n setError(error);\r\n setSubmitting(false);\r\n });\r\n });\r\n } else {\r\n const randomPassword = generateRandomPassword();\r\n\r\n // Replace username, password and email of person that gifts the spot with the info of the receiver\r\n // This way the receiver will get the reminder after the spot adoption runs out\r\n const receiverValues = Object.assign({}, values);\r\n receiverValues.username = values.receiverEmail;\r\n receiverValues.password = randomPassword;\r\n receiverValues.email = values.receiverEmail;\r\n\r\n // Save the receiver account\r\n const receiverAccount = prepareAccountObject(receiverValues, true);\r\n const spotReceiverPromise = persistAccount(receiverAccount);\r\n\r\n let orderId;\r\n\r\n // Wait for the accountPromise and spot receiver Promise to both succeed\r\n Promise.all([accountPromise, spotReceiverPromise])\r\n // Log in with the created receiver account\r\n .then(() => authenticate(values.receiverEmail, randomPassword))\r\n // Call convenience method (avoiding duplicate code) to reserve and order the specified spots\r\n .then(() => reserveAndOrderSpots(timeframe))\r\n // Log back in with the account that gives the plot(s)\r\n .then(result => (orderId = result))\r\n .then(() => authenticate(values.username, values.password))\r\n // Create the payment in order to pay for the reserverd spots\r\n .then(() => createPayment(orderId, values.receiverEmail))\r\n .catch(error => {\r\n error\r\n .text()\r\n .then(message => {\r\n setError(message);\r\n setSubmitting(false);\r\n })\r\n .catch(() => {\r\n setError(error);\r\n setSubmitting(false);\r\n });\r\n });\r\n }\r\n // Make sure the 'not a gift' section isn't run after this\r\n return;\r\n }\r\n\r\n // Not a gift\r\n accountPromise\r\n // Call convenience method (avoiding duplicate code) to reserve and order the specified spots\r\n .then(() => reserveAndOrderSpots(timeframe))\r\n\r\n // TODO: clean up again, ideally the whole application gets rewritten\r\n .then(res => {\r\n const username = localStorage.getItem('username');\r\n fetch(`api/account/username/${username}`, {\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`,\r\n },\r\n })\r\n .then(response => response.json())\r\n .then(account => createPayment(res, account.email));\r\n })\r\n .catch(error => {\r\n error\r\n .text()\r\n .then(message => {\r\n if (error.status !== 401) setError(message);\r\n else setError('E-mailadres/wachtwoord klopt niet');\r\n setSubmitting(false);\r\n })\r\n .catch(() => {\r\n setError(error);\r\n setSubmitting(false);\r\n });\r\n });\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Jouw gegevens

    \r\n

    Vul hieronder je gegevens in om de adoptie van de door jou gekozen spot(s) af te ronden.

    \r\n \r\n onFormSubmit(values, setSubmitting)\r\n }\r\n render={({ isSubmitting }) => (\r\n
    \r\n \r\n\r\n
    \r\n setIsNewAccount(event.target.checked)}\r\n />\r\n \r\n \r\n
    \r\n\r\n {isNewAccount && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n\r\n
    \r\n setPresent(event.target.checked)}\r\n />\r\n \r\n \r\n
    \r\n\r\n {isPresent && }\r\n\r\n \r\n Naar betalen\r\n \r\n \r\n )}\r\n />\r\n\r\n {error && (\r\n
    \r\n {error.status ? (\r\n <>\r\n Er is helaas een error opgetreden met de code {error.status}.{' '}\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog eens.\r\n \r\n ) : (\r\n <>{error}\r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default UserInformation;","import React, { useContext, useState } from 'react';\r\n\r\nimport jwt_decode from 'jwt-decode';\r\n\r\nimport { AuthenticationContext } from '../../utils/AuthenticationContext';\r\nimport { addJWTToken } from '../../utils/jwt';\r\n\r\nconst LoginForm = ({ history }) => {\r\n const [username, setUsername] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [error, setError] = useState();\r\n const { setAuthenticated } = useContext(AuthenticationContext);\r\n\r\n const handleSubmit = event => {\r\n event.preventDefault();\r\n\r\n fetch('/api/authentication', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n username,\r\n password,\r\n }),\r\n })\r\n .then(response => {\r\n if (response.ok) return response.text();\r\n throw response;\r\n })\r\n .then(token => addJWTToken(token))\r\n .then(() => setAuthenticated(true))\r\n .then(() => {\r\n const decoded = jwt_decode(localStorage.getItem('jwt-token'));\r\n localStorage.setItem('username', decoded.username);\r\n localStorage.setItem('accountID', decoded.accountID);\r\n })\r\n .then(() => history.push('/gebruiker'))\r\n .catch(error => {\r\n setError(error);\r\n });\r\n };\r\n\r\n const showErrorMessage = error => (\r\n
    \r\n {error.status === 401\r\n ? 'Incorrecte inloggegevens'\r\n : `Een error met de code ${error.status} is opgetreden.\r\n Neem contact op met de administrator en/of probeer het opnieuw.`}\r\n
    \r\n );\r\n\r\n return (\r\n <>\r\n {error && showErrorMessage(error)}\r\n
    \r\n \r\n setUsername(event.target.value)}\r\n />\r\n \r\n setPassword(event.target.value)}\r\n />\r\n \r\n Login\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LoginForm;\r\n","import React, { useState } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage } from 'formik';\r\nimport * as Yup from 'yup';\r\n//import './styles.css';\r\n\r\nconst initialValues = {\r\n email: '',\r\n};\r\n\r\nconst validationSchema = Yup.object().shape({\r\n email: Yup.string()\r\n .email('Het ingevulde e-mailadres is niet valide')\r\n .required('Email is verplicht'),\r\n});\r\n\r\nconst ForgottenPassword = ({ receiverVersion }) => {\r\n const [forgottenPassword, setForgottenPassword] = useState(false);\r\n const [error, setError] = useState();\r\n const [success, setSuccess] = useState();\r\n\r\n return (\r\n
    \r\n {\r\n fetch('/api/account/password-reset', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(values.email),\r\n })\r\n .then(response => {\r\n if (response.ok)\r\n setSuccess('Verwacht een email in uw inbox met instructies (Controleer ook uw spamfolder)');\r\n else throw response;\r\n })\r\n .catch(error => {\r\n if (error.status === 404)\r\n setError(\r\n 'Er bestaat geen account behorend bij het aangegeven e-mailadres'\r\n );\r\n else {\r\n setError(\r\n `Er is helaas een fout met statuscode ${\r\n error.status\r\n } opgetreden. Neem contact op of probeer het later opnieuw.`\r\n );\r\n }\r\n\r\n setSubmitting(false);\r\n });\r\n }}\r\n render={({ isSubmitting }) => (\r\n
    \r\n {!receiverVersion && (\r\n
    \r\n setForgottenPassword(event.target.checked)}\r\n />\r\n \r\n \r\n
    \r\n )}\r\n\r\n {(forgottenPassword || receiverVersion) && (\r\n <>\r\n

    \r\n Vul hier uw e-mailadres in om een nieuw wachtwoord in te stellen\r\n

    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n Verstuur\r\n \r\n \r\n )}\r\n \r\n )}\r\n />\r\n\r\n {error &&
    {error}
    }\r\n {success &&
    {success}
    }\r\n
    \r\n );\r\n};\r\n\r\nexport default ForgottenPassword;\r\n","import ForgottenPassword from './ForgottenPassword';\r\n\r\nexport default ForgottenPassword;\r\n","import React from 'react';\r\n\r\nimport Layout from '../components/layout';\r\nimport LoginForm from '../components/User/LoginForm';\r\nimport ForgottenPassword from '../components/User/ForgottenPassword';\r\n\r\nconst UserLogin = ({ history }) => (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Login

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport default UserLogin;","import React, { useState, useEffect } from 'react';\r\nimport { Formik, Form, Field, ErrorMessage } from 'formik';\r\nimport * as Yup from 'yup';\r\n\r\nimport Layout from '../components/layout';\r\n\r\nconst validationSchema = Yup.object().shape({\r\n password: Yup.string().required('Nieuw wachtwoord is verplicht'),\r\n checkPassword: Yup.string()\r\n .oneOf([Yup.ref('password')], 'Wachtwoorden komen niet overeen')\r\n .required('Wachtwoordconfirmatie is verplicht'),\r\n});\r\n\r\nconst ResetPassword = ({ match: { params } }) => {\r\n const [success, setSuccess] = useState();\r\n const [error, setError] = useState();\r\n const [code, setCode] = useState();\r\n\r\n useEffect(() => {\r\n if (params.code) setCode(params.code);\r\n }, [params.code]);\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {code ? (\r\n <>\r\n

    Aanvraag wachtwoordreset

    \r\n

    Vul hieronder uw nieuwe wachtwoord in

    \r\n\r\n {\r\n fetch(`/api/account/password-reset/${code}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(values.password),\r\n })\r\n .then(response => {\r\n if (response.ok)\r\n setSuccess('Uw wachtwoord is succesvol gewijzigd');\r\n else throw response;\r\n })\r\n .catch(error => {\r\n if (error.status === 404)\r\n setError(\r\n 'Deze link is verlopen. Genereer een nieuwe op de login pagina'\r\n );\r\n else\r\n setError(\r\n `Er is helaas een fout met statuscode ${\r\n error.status\r\n } opgetreden. Neem contact op of probeer het later opnieuw.`\r\n );\r\n\r\n setSubmitting(false);\r\n });\r\n }}\r\n render={({ isSubmitting }) => (\r\n
    \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n Wijzig\r\n \r\n \r\n\r\n )}\r\n />\r\n {error && (\r\n
    \r\n {error}\r\n
    \r\n )}\r\n {success && (\r\n
    \r\n {success}\r\n
    \r\n )}\r\n \r\n ) : (\r\n

    \r\n Kon resetcode niet uit de link halen. Heeft u de goede link gebruikt?\r\n

    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ResetPassword;\r\n","import React from 'react';\r\n\r\nimport Layout from '../components/layout';\r\nimport ForgottenPassword from '../components/User/ForgottenPassword';\r\n\r\nconst ReceiverpasswordReset = () => (\r\n \r\n

    Gefeliciteerd met uw geschonken spot!

    \r\n \r\n
    \r\n);\r\n\r\nexport default ReceiverpasswordReset;\r\n","import React, { useContext } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\n\r\nimport { AuthenticationContext } from '../../utils/AuthenticationContext';\r\n\r\nconst AuthenticatedRoute = ({ component: Component, exact, path }) => {\r\n const { isAuthenticated } = useContext(AuthenticationContext);\r\n\r\n return (\r\n \r\n isAuthenticated ? : \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default AuthenticatedRoute;\r\n","import React from 'react';\r\n//import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n//import { faEdit, faTrash } from '@fortawesome/free-solid-svg-icons';\r\n\r\nclass UserDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.getUserByUsername = this.getUserByUsername.bind(this);\r\n this.handleDateChange = this.handleDateChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.deleteAccount = this.deleteAccount.bind(this);\r\n\r\n this.state = {\r\n error: '',\r\n user: null,\r\n edit: false,\r\n name: '',\r\n email: '',\r\n phoneNumber: '',\r\n dateOfBirth: '',\r\n };\r\n }\r\n\r\n componentWillMount() {\r\n this.getUserByUsername(localStorage.getItem('username'));\r\n }\r\n\r\n getUserByUsername(username) {\r\n fetch(`/api/account/username/${username}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(res => res.json())\r\n .then(res => {\r\n this.setState({\r\n user: res,\r\n name: res.Name,\r\n email: res.Email,\r\n phoneNumber: res.PhoneNumber,\r\n dateOfBirth: new Date(res.dateOfBirth * 1000)\r\n //dateOfBirth: new Date()\r\n });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value,\r\n });\r\n };\r\n\r\n async handleSubmit(event) {\r\n event.preventDefault();\r\n const updatedUser = this.state.user;\r\n updatedUser.name = this.state.name;\r\n updatedUser.phoneNumber = this.state.phoneNumber;\r\n updatedUser.dateOfBirth = this.state.dateOfBirth;\r\n //updatedUser.dateOfBirth = Math.round(\r\n // this.state.dateOfBirth.getTime() / 1000\r\n ;\r\n delete updatedUser.links;\r\n delete updatedUser.address;\r\n delete updatedUser.orders;\r\n await fetch(`/api/account`, {\r\n method: 'PUT',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n body: JSON.stringify(updatedUser),\r\n })\r\n .then(response => response.text())\r\n .catch(error => {\r\n this.setState({ error });\r\n });\r\n this.setState({ edit: false });\r\n this.getUserByUsername(localStorage.getItem('username'));\r\n }\r\n\r\n handleDateChange(event) {\r\n this.setState({ dateOfBirth: new Date(event.target.value) });\r\n }\r\n\r\n deleteAccount() {\r\n const confirm = window.confirm(\r\n 'Weet u zeker dat u uw account wilt verwijderen?'\r\n );\r\n if (confirm) {\r\n fetch(`/api/account/${localStorage.getItem('accountID')}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(response => {\r\n if (response.status !== 204) {\r\n throw response;\r\n }\r\n localStorage.removeItem('jwt-token');\r\n localStorage.removeItem('accountID');\r\n localStorage.removeItem('username');\r\n this.props.history.push('/login');\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n } else {\r\n // Do nothing!\r\n }\r\n }\r\n\r\n render() {\r\n if (localStorage.getItem('jwt-token') != null && this.state.user != null) {\r\n //const inputDateOfBirth = `${this.state.dateOfBirth.getFullYear()}-${`0${this.state.dateOfBirth.getMonth() + 1}`.slice(-2)}-${`0${this.state.dateOfBirth.getDate()}`.slice(-2)}`;\r\n if (!this.state.edit) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Naam:{this.state.user.name}
    Gebruikersnaam:{this.state.user.username}
    Geboortedatum:{this.state.dateOfBirth.toLocaleDateString()}
    Email:{this.state.user.email}
    Telefoonnummer:{this.state.user.phoneNumber}
    \r\n
    \r\n this.setState({ edit: true })}\r\n >\r\n
    \r\n this.deleteAccount()}\r\n >\r\n \r\n
    \r\n
    \r\n {this.state.error && (\r\n
    \r\n Er is helaas een error opgetreden met de code {this.state.rror}.{' '}\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog\r\n eens.\r\n
    \r\n )}\r\n \r\n );\r\n }\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Naam:\r\n \r\n
    Gebruikersnaam:{this.state.user.username}
    Geboortedatum:\r\n \r\n
    Email:{this.state.email}
    Telefoonnummer:\r\n \r\n
    \r\n \r\n Opslaan\r\n \r\n \r\n
    \r\n {this.state.error && (\r\n
    \r\n Er is helaas een error opgetreden met de code {this.state.error}.{' '}\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog eens.\r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n Laden

    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default UserDetails;\r\n","import React from 'react';\r\n\r\nimport mapboxgl from 'mapbox-gl';\r\nimport { createPayment } from '../../utils/createPayment';\r\n\r\nclass OrderDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.getSpotsByAccountID = this.getSpotsByAccountID.bind(this);\r\n this.unixTimeToDate = this.unixTimeToDate.bind(this);\r\n this.integerToSpotStatus = this.integerToSpotStatus.bind(this);\r\n this.calctotalprice = this.calctotalprice.bind(this);\r\n\r\n this.state = {\r\n error: '',\r\n orders: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await this.getSpotsByAccountID(localStorage.getItem('accountID'));\r\n for (const order of this.state.orders) {\r\n mapboxgl.accessToken =\r\n 'pk.eyJ1Ijoic3Bvb3JwYXJrdGlsYnVyZyIsImEiOiJjandqNTB1Y2owZ243NDNwYnQ2eWJuNWp0In0.k5Q6UPxmFmxe6fw7upbdXg';\r\n if (process.env.NODE_ENV === 'production') {\r\n mapboxgl.accessToken =\r\n 'pk.eyJ1IjoibXZnaGVhYmIiLCJhIjoiY2tsOW54MjBwM2QyZzMwbXN6ZzI0dWloMyJ9.eH2SwEQ8vP84l6mJeC7ivw';\r\n }\r\n\r\n const map = new mapboxgl.Map({\r\n container: `map${order.id}`,\r\n style: 'mapbox://styles/mapbox/streets-v11',\r\n center: [5.0697, 51.5616],\r\n minZoom: 16,\r\n maxZoom: 17.6,\r\n zoom: 16,\r\n });\r\n map.on('load', function () {\r\n\r\n var layers = map.getStyle().layers;\r\n // Find the index of the first symbol layer in the map style\r\n var firstSymbolId;\r\n for (var i = 0; i < layers.length; i++) {\r\n if (layers[i].type === 'symbol') {\r\n firstSymbolId = layers[i].id;\r\n break;\r\n }\r\n }\r\n\r\n for (const spot of order.spots) {\r\n fetch(`/api/spot/geojson/${spot.id}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(result => result.json())\r\n .then(spots => {\r\n map.addSource(`spots${spot.id}`, {\r\n type: 'geojson',\r\n data: spots[0],\r\n });\r\n\r\n map.addLayer(\r\n {\r\n id: `state-fills${spot.id}`,\r\n type: 'fill',\r\n source: `spots${spot.id}`,\r\n layout: {},\r\n paint: {\r\n 'fill-color': '#F00',\r\n 'fill-opacity': 0.6,\r\n },\r\n },\r\n );\r\n map.flyTo({\r\n center: [\r\n spots[0].features[0].geometry.coordinates[0][0][0],\r\n spots[0].features[0].geometry.coordinates[0][0][1],\r\n ],\r\n zoom: 16.5,\r\n pitch: 0,\r\n bearing: 0,\r\n });\r\n })\r\n .catch(error => {\r\n this.setState(error);\r\n });\r\n }\r\n\r\n map.addLayer(\r\n {\r\n id: 'spoorpark',\r\n source: {\r\n type: 'raster',\r\n url: 'mapbox://spoorparktilburg.bioumigo',\r\n },\r\n type: 'raster',\r\n },\r\n firstSymbolId\r\n );\r\n });\r\n\r\n //setTimeout(() => {\r\n\r\n //}, 2000);\r\n }\r\n }\r\n\r\n async getSpotsByAccountID(accountID) {\r\n await fetch(`/api/order/accountID/${accountID}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(res => res.json())\r\n .then(res => {\r\n this.setState({ orders: res.orders });\r\n })\r\n .catch(error => {\r\n this.setState({ error });\r\n });\r\n }\r\n\r\n async generateCertificates(order) {\r\n\r\n await fetch(`/api/pdf/certificate/${localStorage.getItem('accountID')}/${order.id}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(res => {\r\n debugger;\r\n return res.blob()\r\n })\r\n .then(blob => {\r\n // It is necessary to create a new blob object with mime-type explicitly set\r\n // otherwise only Chrome works like it should\r\n const newBlob = new Blob([blob], { type: \"application/zip\" })\r\n\r\n // IE doesn't allow using a blob object directly as link href\r\n // instead it is necessary to use msSaveOrOpenBlob\r\n if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n window.navigator.msSaveOrOpenBlob(newBlob);\r\n return;\r\n }\r\n\r\n // For other browsers: \r\n // Create a link pointing to the ObjectURL containing the blob.\r\n const data = window.URL.createObjectURL(newBlob);\r\n const link = document.createElement('a');\r\n link.href = data;\r\n link.download = order.spots.length > 1 ? \"certificaten.zip\" : \"certificaat.zip\";\r\n link.click();\r\n })\r\n .catch(error => {\r\n this.setState({ error });\r\n console.log(error)\r\n return null;\r\n });\r\n }\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value,\r\n });\r\n };\r\n\r\n unixTimeToDate(unix) {\r\n const date = new Date(unix * 1000);\r\n return `${`0${date.getDate()}`.slice(-2)}-${`0${date.getMonth() + 1}`.slice(\r\n -2\r\n )}-${date.getFullYear()}`;\r\n }\r\n\r\n integerToSpotStatus(spotstatus) {\r\n switch (spotstatus) {\r\n case 0:\r\n return 'Open';\r\n case 1:\r\n return 'Gereserveerd';\r\n case 2:\r\n return 'Betaald';\r\n case 3:\r\n return 'Gesloten';\r\n default:\r\n return 'Open';\r\n }\r\n }\r\n\r\n calctotalprice(spots) {\r\n var totalprice = 0;\r\n\r\n for (var i = 0; i < spots.length; i++) {\r\n totalprice += spots[i].price;\r\n }\r\n return totalprice;\r\n}\r\n\r\nrender() {\r\n if (\r\n localStorage.getItem('jwt-token') != null &&\r\n this.state.orders.length > 0\r\n ) {\r\n return (\r\n
    \r\n {this.state.orders.map(order => {\r\n const mapID = `map${order.id}`;\r\n return (\r\n
    \r\n

    \r\n Order: {this.unixTimeToDate(order.purchaseDate)}\r\n

    \r\n\r\n \r\n\r\n Plekken behorende tot deze order worden weergegeven\r\n door een{' '}\r\n \r\n\r\n

    \r\n Spot(s)\r\n

    \r\n {order.spots.map((spot, i) => (\r\n \r\n \r\n \r\n Spot {i + 1}\r\n \r\n lengtegraad: {spot.coordinates[0].lng}{' '}\r\n
    \r\n breedtegraad: {spot.coordinates[0].lat}{' '}\r\n
    \r\n Bedrag: €{spot.price}{' '},-\r\n \r\n \r\n \r\n \r\n ))}\r\n\r\n

    \r\n Order informatie\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Order ID{order.id}
    Aankoopdatum{this.unixTimeToDate(order.purchaseDate)}
    Verloopdatum{this.unixTimeToDate(order.expirationDate)}
    Herinnering verstuurd{order.reminderSent ? 'Ja' : 'Nee'}
    Verloop verstuurd{order.expirationSent ? 'Ja' : 'Nee'}
    Totaalbedrag€{this.calctotalprice(order.spots)},-
    \r\n\r\n

    \r\n {order.expirationSent ? '' :\r\n createPayment(order.id, '')}\r\n >\r\n Verleng Order met 1 jaar (€{this.calctotalprice(order.spots)},-)\r\n \r\n }\r\n this.generateCertificates(order)}\r\n >\r\n {order.spots.length > 1 ? \"Download certificaten\" : \"Download certificaat\"}\r\n \r\n\r\n

    \r\n\r\n
    \r\n\r\n
    \r\n );\r\n })}\r\n {this.state.error && (\r\n
    \r\n Er is helaas een error opgetreden met de code {this.state.error}.{' '}\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog eens.\r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n Laden

    \r\n
    \r\n );\r\n}\r\n}\r\n\r\nexport default OrderDetails;\r\n","import React from 'react';\r\nimport CallToAction from '../components/call-to-action';\r\nimport Layout from '../components/layout';\r\nimport UserDetails from '../components/User/UserDetails';\r\nimport OrderDetails from '../components/User/OrderDetails';\r\n\r\nconst User = ( { history }) => {\r\n \r\nconst Navigate = (path) => {\r\n history.push({pathname: path})\r\n}\r\nreturn (\r\n \r\n

    Mijn account

    \r\n
    \r\n \r\n
    \r\n
    \r\n);\r\n}\r\n\r\nconst UserSettings = ({ history }) => (\r\n \r\n

    Accountgegevens

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nconst UserOrder = ({ history }) => (\r\n \r\n

    Mijn spots

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport { User, UserSettings, UserOrder };","import React from 'react';\r\n\r\nexport const paid = (\r\n <>\r\n

    Beste vriend van het Spoorpark,

    \r\n

    \r\n Bedankt voor het adopteren van jouw eigen spot in het Spoorpark!
    \r\n Dankzij jouw steun help je ons in het beheer en onderhoud van het park.\r\n

    \r\n

    \r\n Om de details van je adoptie te bekijken, inclusief de coördinaten, kun je inloggen met je E-mailadres en wachtwoord. Daar kun je ook een officieel certificaat downloaden als bewijs van onze vriendschap. Leuk om te printen en in te lijsten.\r\n

    \r\n

    \r\n Graag tot ziens in het park!\r\n

    \r\n \r\n);\r\n\r\nexport const failed = (\r\n <>\r\n

    Betaling mislukt

    \r\n

    \r\n Helaas ging er iets mis bij het betalen...
    \r\n Probeer het nog eens of neem contact op met het Spoorpark.\r\n

    \r\n \r\n);\r\n\r\nexport const canceled = (\r\n <>\r\n

    Betaling geannuleerd

    \r\n

    Jammer dat u ervoor heeft gekozen om de betaling te annuleren.

    \r\n \r\n);\r\n\r\nexport const expired = (\r\n <>\r\n

    Betaling verlopen

    \r\n

    \r\n Helaas heeft u de betaling te lang uitgesteld.
    \r\n Voor de veiligheid is de betaling als verlopen gemarkeerd.
    \r\n Gelieve het bestellen opnieuw te proberen.\r\n

    \r\n \r\n);\r\n\r\nexport const unknown = (\r\n <>\r\n

    Onbekende status

    \r\n

    \r\n Waarschijnlijk is uw betaling nog in behandeling. Zodra u een emailbevestiging ontvangt bent u verzekerd van uw spot in het Spoorpark!
    \r\n Neem contact op met het Spoorpark wanneer u voor lange tijd geen mail ontvangt.\r\n

    \r\n \r\n);\r\n\r\nexport const open = (\r\n <>\r\n

    Onbekende status

    \r\n

    \r\n Waarschijnlijk is uw betaling nog in behandeling. Zodra u een emailbevestiging ontvangt bent u verzekerd van uw spot in het Spoorpark!
    \r\n Neem contact op met het Spoorpark wanneer u voor lange tijd geen mail ontvangt.\r\n

    \r\n \r\n);\r\n","import React, { useEffect, useState } from 'react';\r\nimport Loader from 'react-loader-spinner';\r\n\r\nimport Layout from '../components/layout';\r\n\r\nimport {\r\n paid,\r\n failed,\r\n canceled,\r\n expired,\r\n open,\r\n unknown,\r\n} from '../utils/paymentResultMessages';\r\nimport { getJWTToken } from '../utils/jwt';\r\n\r\nconst PaymentResult = props => {\r\n const [allPaymentStatusses, setAllPaymentStatusses] = useState();\r\n const [paymentStatus, setPaymentStatus] = useState();\r\n const [error, setError] = useState(null);\r\n\r\n useEffect(() => {\r\n // Fetch the URl parameters\r\n const urlParameter = props.location.search;\r\n // Get the part after the = sign, which is the actual orderId\r\n const orderId = urlParameter.split(\"=\")[1];\r\n\r\n const orderPromise = new Promise((resolve, reject) =>\r\n fetch(`api/order/orderID/${orderId}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`\r\n }\r\n }).then(response => {\r\n if (!response.ok) {\r\n setError(null);\r\n throw response;\r\n }\r\n return response.json();\r\n })\r\n .then(order => resolve(order.paymentStatus))\r\n .catch(() => reject(\"Er is een error opgetreden bij het ophalen van de betalingsstatus\")));\r\n\r\n const paymentStatussesPromise = new Promise((resolve, reject) =>\r\n fetch(`api/mollie/payment-statusses`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`\r\n }\r\n })\r\n .then(response => {\r\n if (!response.ok) {\r\n setError(null);\r\n throw response;\r\n }\r\n return response.json();\r\n })\r\n .then(paymentStatusses => resolve(paymentStatusses))\r\n .catch(() => reject(\"Er is een error opgetreden bij het ophalen van de betalingsstatussen\"))\r\n )\r\n\r\n Promise.all([orderPromise, paymentStatussesPromise])\r\n .then(values => {\r\n setPaymentStatus(values[0]);\r\n setAllPaymentStatusses(values[1]);\r\n })\r\n .catch(error => setError(error));\r\n }, [props.location.search, paymentStatus])\r\n\r\n const renderPage = () => {\r\n if (!paymentStatus || !allPaymentStatusses) return ;\r\n\r\n const currentPaymentStatus = allPaymentStatusses.find(element => element.value === paymentStatus);\r\n switch (currentPaymentStatus.name.toLowerCase()) {\r\n case \"paid\":\r\n return paid;\r\n case \"failed\":\r\n return failed;\r\n case \"canceled\":\r\n return canceled;\r\n case \"expired\":\r\n return expired;\r\n case \"unknow\":\r\n return unknown;\r\n default:\r\n return open;\r\n }\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n {error != null ? (\r\n
    \r\n {error.status ? (\r\n <>\r\n Er is helaas een error opgetreden met de code {error.status}.\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog eens.\r\n \r\n ) : (\r\n <>{error}\r\n )}\r\n
    \r\n ) : renderPage()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PaymentResult;","import React from 'react';\r\n\r\nconst SearchIcon = ({ searchButtonEdge }) => {\r\n const iconEdge = Math.ceil(searchButtonEdge * 0.6);\r\n const searchIconStyle = {\r\n fill: '#727272',\r\n };\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SearchIcon;\r\n","import React, { useState } from 'react';\r\n\r\nimport SearchIcon from './SearchIcon';\r\n\r\nconst ENTER_KEY = 13;\r\nconst SEARCH_BUTTON_EDGE = 35;\r\n\r\nconst searchFieldStyle = {\r\n border: '1px #ddd solid',\r\n display: 'inline-flex',\r\n justifyContent: 'space-between',\r\n height: SEARCH_BUTTON_EDGE,\r\n};\r\n\r\nconst searchFieldButtonStyle = {\r\n height: SEARCH_BUTTON_EDGE - 2, // reduces 2px because of top and bottom border\r\n width: SEARCH_BUTTON_EDGE - 2,\r\n outline: 'none',\r\n backgroundColor: 'white',\r\n cursor: 'pointer',\r\n padding: 5,\r\n boxSizing: 'border-box',\r\n appearance: 'none',\r\n border: 'none',\r\n borderLeft: '1px #ddd solid',\r\n};\r\n\r\nconst searchFieldInputStyle = {\r\n outline: 'none',\r\n border: 'none',\r\n fontSize: 14,\r\n padding: 10,\r\n flex: 1,\r\n color: '#5a5a5a',\r\n fontWeight: 100,\r\n height: SEARCH_BUTTON_EDGE - 2,\r\n};\r\n\r\nconst SearchField = ({\r\n searchText,\r\n placeholder,\r\n className,\r\n onChange,\r\n onEnter,\r\n onSearchClick: onSearchClickProp,\r\n}) => {\r\n const [value, setValue] = useState(searchText || '');\r\n\r\n const onChangeBound = event => {\r\n setValue(event.target.value);\r\n if (typeof onChange === 'function') onChange(event.target.value, event);\r\n };\r\n\r\n const onEnterBound = event => {\r\n const isEnterPressed =\r\n event.which === ENTER_KEY || event.keyCode === ENTER_KEY;\r\n if (isEnterPressed && typeof onEnter === 'function')\r\n onEnter(event.target.value, event);\r\n };\r\n\r\n const onSearchClick = () => {\r\n if (typeof onSearchClickProp === 'function') onSearchClickProp(value);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SearchField;\r\n","import SearchField from './SearchField';\r\n\r\nexport default SearchField;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Pagination from 'react-js-pagination';\r\nimport { ExportToCsv } from 'export-to-csv';\r\nimport Loader from 'react-loader-spinner';\r\n\r\nimport SearchField from '../search-field';\r\nimport { getJWTToken } from '../../utils/jwt';\r\n\r\nconst AccountList = () => {\r\n const [error, setError] = useState('');\r\n const [accounts, setAccounts] = useState([]);\r\n const [allAccounts, setAllAccounts] = useState([]);\r\n const [filteredAccounts, setFilteredAccounts] = useState([]);\r\n const [isFiltering, setFiltering] = useState(false);\r\n const [accountCount, setAccountCount] = useState(0);\r\n const [activePage, setActivePage] = useState(1);\r\n const [isLoading, setLoading] = useState(true);\r\n const [csvData, setCsvData] = useState([]);\r\n const [csvOptions, setCsvOptions] = useState();\r\n\r\n useEffect(() => {\r\n getAccounts(1, 5);\r\n getAllAccounts().then(fetchedAccounts => {\r\n setAllAccounts(fetchedAccounts.accounts);\r\n\r\n let newCsvData = [];\r\n fetchedAccounts.accounts.forEach(account => {\r\n if (\r\n !account.email.includes('anonymous') &&\r\n !account.email.includes('admin')\r\n ) {\r\n newCsvData = newCsvData.concat({\r\n 'Vrienden van Spoorpark emailadressen': account.email,\r\n });\r\n }\r\n });\r\n\r\n setCsvData(newCsvData);\r\n\r\n const date = unixTimeToDate(Date.now());\r\n const options = {\r\n fieldSeparator: ',',\r\n filename: `Vrienden_van_Spoorpark_emailadressen_${date}`,\r\n quoteStrings: '\"',\r\n decimalSeparator: '.',\r\n showTitle: false,\r\n useTextFile: false,\r\n useBom: true,\r\n useKeysAsHeaders: true,\r\n };\r\n setCsvOptions(options);\r\n });\r\n }, []);\r\n\r\n const getAccounts = (Page, Size) =>\r\n fetch(`api/account?Page=${Page - 1}&Size=${Size}`,\r\n {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${getJWTToken()}`,\r\n },\r\n }\r\n )\r\n .then(result => result.json())\r\n .then(result => {\r\n setAccounts(result.accounts);\r\n setAccountCount(result.count);\r\n setFilteredAccounts(result.accounts);\r\n })\r\n .then(() => setLoading(false))\r\n .catch(error => setError(error));\r\n\r\n const getAllAccounts = () =>\r\n fetch(`api/account/GetAll`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(result => result.json())\r\n .catch(error => setError(error));\r\n\r\n const handleDelete = account => {\r\n const deletionConfirmed = window.confirm(\r\n `Are you sure you want to delete account: ${account.name}?`\r\n );\r\n\r\n if (deletionConfirmed) {\r\n fetch(`api/account/${account.id} `, {\r\n method: 'DELETE',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(result => {\r\n if (!result.ok) {\r\n result.text().then(error => setError(error));\r\n }\r\n window.location.reload();\r\n })\r\n .catch(error => setError(error));\r\n }\r\n };\r\n\r\n const handlePageChange = pageNumber => {\r\n getAccounts(pageNumber, 5);\r\n setActivePage(pageNumber);\r\n };\r\n\r\n const unixTimeToDate = unixTimeStamp => {\r\n const date = new Date(unixTimeStamp * 1000);\r\n return `${date.getDate()}-${date.getMonth() + 1}-${date.getFullYear()}`;\r\n };\r\n\r\n const search = value => {\r\n const locallyFilteredAccounts = [];\r\n if (value.length > 0) {\r\n allAccounts.forEach(account => {\r\n if (account.name.toLowerCase().includes(value.toLowerCase()))\r\n locallyFilteredAccounts.push(account);\r\n });\r\n setFilteredAccounts(locallyFilteredAccounts);\r\n setFiltering(true);\r\n } else {\r\n setFilteredAccounts(accounts);\r\n setFiltering(false);\r\n }\r\n };\r\n\r\n if (error)\r\n return (\r\n
    \r\n {error.status ? (\r\n <>\r\n Er is helaas een error opgetreden met de code {error.status}.\r\n
    \r\n Neem contact op met de beheerder en/of probeer het later nog eens.\r\n \r\n ) : (\r\n <>{error}\r\n )}\r\n
    \r\n );\r\n if (isLoading)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n return (\r\n
    \r\n \r\n\r\n new ExportToCsv(csvOptions).generateCsv(csvData)}\r\n style={{ marginLeft: '15px' }}\r\n >\r\n Download emailadressen\r\n \r\n\r\n
      \r\n {filteredAccounts.length > 0 ? (\r\n filteredAccounts.map(account => {\r\n if (\r\n !account.name.startsWith('anonymous') &&\r\n account.username !== localStorage.getItem('username')\r\n )\r\n return (\r\n
    • \r\n

      Naam: {account.name}

      \r\n

      Gebruikersnaam: {account.username}

      \r\n

      Emailadres: {account.email}

      \r\n

      Orders: {account.orders.length}

      \r\n handleDelete(account)}\r\n >\r\n Verwijder\r\n \r\n
    • \r\n );\r\n return null;\r\n })\r\n ) : (\r\n // Match the width of the unfiltered account list\r\n
    • \r\n Geen accounts gevonden\r\n
    • \r\n )}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default AccountList;\r\n","import React from 'react';\r\n\r\nclass AccountCreate extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n name: '',\r\n username: '',\r\n password: '',\r\n email: '',\r\n };\r\n }\r\n\r\n validateForm() {\r\n return this.state.username.length > 0\r\n && this.state.password.length > 0\r\n && this.state.name.length > 0\r\n && this.state.email.length > 0;\r\n }\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value,\r\n });\r\n };\r\n\r\n handleSubmit = event => {\r\n event.preventDefault();\r\n fetch('/api/account', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n name: this.state.name,\r\n username: this.state.username,\r\n password: this.state.password,\r\n email: this.state.email,\r\n }),\r\n })\r\n .then(response => {\r\n // A new account has been added, reload.\r\n window.location.reload();\r\n })\r\n .catch(error => console.log(error));\r\n };\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n

    Name

    \r\n \r\n
    \r\n
    \r\n

    Username

    \r\n \r\n
    \r\n
    \r\n

    Password

    \r\n \r\n
    \r\n
    \r\n

    email

    \r\n \r\n
    \r\n \r\n Create Account\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default AccountCreate;\r\n","import React from 'react';\r\nimport Pagination from 'react-js-pagination';\r\n\r\nimport Loader from 'react-loader-spinner';\r\n\r\nclass OrderList extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: '',\r\n orders: [],\r\n orderCount: 0,\r\n activePage: 1,\r\n isLoading: true,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.getOrders(1, 10);\r\n }\r\n\r\n getOrders(Page, Size) {\r\n fetch(`/api/order?Page=${Page - 1}&Size=${Size}`, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(result => result.json())\r\n .then(result =>\r\n this.setState({ orders: result.orders, orderCount: result.count })\r\n )\r\n .then(() => this.setState({ isLoading: false }))\r\n .catch(error => {\r\n this.setState({ error });\r\n });\r\n }\r\n\r\n handlePageChange = pageNumber => {\r\n this.getOrders(pageNumber, 10);\r\n this.setState({ activePage: pageNumber });\r\n };\r\n\r\n unixTimeToDate(unix) {\r\n const date = new Date(unix * 1000);\r\n return `${`0${date.getDate()}`.slice(-2)}-${`0${date.getMonth() + 1}`.slice(\r\n -2\r\n )}-${date.getFullYear()}`;\r\n }\r\n\r\n render() {\r\n if (this.state.error) {\r\n return (\r\n
    \r\n

    Error loading page.

    \r\n

    {this.state.error.name}

    \r\n
    \r\n );\r\n }\r\n if (this.state.isLoading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n return (\r\n
    \r\n
    \r\n
      \r\n {this.state.orders ? (\r\n this.state.orders.map(order => (\r\n
    • \r\n
      \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
      ID{order.id}
      Aankoopdatum{this.unixTimeToDate(order.purchaseDate)}
      Verloopdatum{this.unixTimeToDate(order.expirationDate)}
      Herinnering verstuurd{order.reminderSent ? 'Ja' : 'Nee'}
      Verloop verstuurd{order.expirationSent ? 'Ja' : 'Nee'}
      Aantal spots{order.spots && order.spots.length}
      \r\n
      \r\n
    • \r\n ))\r\n ) : (\r\n
    • Geen Orders.
    • \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default OrderList;\r\n","import React/*, { useContext } */from 'react';\r\nimport jwt_decode from 'jwt-decode';\r\n\r\nimport { AuthenticationContext } from '../../utils/AuthenticationContext';\r\nimport { addJWTToken } from '../../utils/jwt';\r\n//import './styles.css';\r\n\r\n\r\nclass LoginForm extends React.Component {\r\n static contextType = AuthenticationContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n username: '',\r\n password: '',\r\n error: null,\r\n };\r\n }\r\n\r\n validateForm() {\r\n return this.state.username.length > 0 && this.state.password.length > 0;\r\n }\r\n\r\n handleChange = event => {\r\n this.setState({\r\n [event.target.id]: event.target.value,\r\n });\r\n };\r\n\r\n handleSubmit = event => {\r\n const { setAuthenticated } = this.context;\r\n event.preventDefault();\r\n fetch('/api/authentication', {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n username: this.state.username,\r\n password: this.state.password,\r\n }),\r\n })\r\n .then(response => {\r\n if (response.ok) return response.text();\r\n throw response;\r\n })\r\n .then(token => addJWTToken(token))\r\n .then(() => setAuthenticated(true))\r\n .then(() => {\r\n const decoded = jwt_decode(localStorage.getItem('jwt-token'));\r\n localStorage.setItem('username', decoded.username);\r\n localStorage.setItem('accountID', decoded.accountID);\r\n if (decoded.role === 'Admin') {\r\n this.props.history.push('/admin/overzicht');\r\n } else {\r\n const error = new Error('Incorrecte inloggegevens');\r\n error.status = 401;\r\n throw error;\r\n }\r\n })\r\n .catch(error => this.setState({ error }));\r\n };\r\n\r\n showErrorMessage = error => (\r\n
    \r\n {error.status === 401\r\n ? 'Incorrecte inloggegevens'\r\n : `Een error met de code ${error.status} is opgetreden.\r\n Neem contact op met de administrator en/of probeer het opnieuw.`}\r\n
    \r\n );\r\n\r\n render() {\r\n return (\r\n <>\r\n {this.state.error && this.showErrorMessage(this.state.error)}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n Login\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LoginForm;\r\n","import React, { useState } from 'react';\r\nimport CallToAction from '../components/call-to-action';\r\n\r\nimport Layout from '../components/layout';\r\nimport AccountList from '../components/Admin/AccountList';\r\nimport AccountCreate from '../components/Admin/AccountCreate';\r\nimport OrderList from '../components/Admin/OrderList';\r\nimport LoginForm from '../components/Admin/LoginForm';\r\n//import SpotList from '../components/Admin/SpotList';\r\n//import SpotCreate from '../components/Admin/SpotCreate';\r\nimport PlotPicker from '../components/PlotPicker/PlotPicker';\r\n\r\nconst Admin = () => (\r\n \r\n

    Administrator overzicht.

    \r\n
    \r\n
    \r\n
    \r\n

    Klik hier voor een overzicht van een account.

    \r\n \r\n
    \r\n

    Klik hier voor een overzicht van plekken op de kaart.

    \r\n \r\n
    \r\n

    Klik hier voor een overzicht van orders die zijn gemaakt.

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nconst AdminAccount = ({ history }) => (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nconst AdminSpot = () => {\r\n // Update spots open/closed/\r\n const confirmUpdatePlots = (plots, status) => {\r\n const spotIds = [];\r\n for (const spot of plots) {\r\n spotIds.push(spot.properties.guid);\r\n }\r\n\r\n fetch(`/api/spot/updateSpots/${status}`, {\r\n method: 'PUT',\r\n body: JSON.stringify(spotIds),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: `Bearer ${localStorage.getItem('jwt-token')}`,\r\n },\r\n })\r\n .then(() => window.location.reload())\r\n .catch(error => {\r\n this.setState({ error });\r\n });\r\n };\r\n\r\n const [selectedPlots, setSelectedPlots] = useState([]);\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n confirmUpdatePlots(selectedPlots, 0)}\r\n disabled={selectedPlots.length === 0}\r\n >\r\n Open geselecteerde spots\r\n {' '}\r\n confirmUpdatePlots(selectedPlots, 2)}\r\n disabled={selectedPlots.length === 0}\r\n >\r\n Sluit geselecteerde spots\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst AdminOrder = () => (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nconst AdminLogin = ({ history }) => (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Admin login

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nexport { Admin, AdminAccount, AdminSpot, AdminOrder, AdminLogin };\r\n","import React, { useState } from 'react';\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\n\r\nimport { AuthenticationProvider } from './utils/AuthenticationContext';\r\nimport { getJWTToken } from './utils/jwt';\r\nimport ScrollToTop from './utils/ScrollToTop';\r\n\r\nimport Home from './pages/Home';\r\nimport Cart from './pages/Cart';\r\nimport PlotPicker from './pages/PlotPicker';\r\nimport UserInformation from './pages/UserInformation';\r\nimport UserLogin from './pages/UserLogin';\r\nimport ResetPassword from './pages/ResetPassword';\r\nimport ReceiverpasswordReset from './pages/ReceiverPasswordReset';\r\nimport AuthenticatedRoute from './components/AuthenticatedRoute';\r\nimport { UserOrder, UserSettings, User } from './pages/User.js';\r\nimport PaymentResult from './pages/PaymentResultV2';\r\nimport {\r\n Admin,\r\n AdminAccount,\r\n AdminSpot,\r\n AdminOrder,\r\n AdminLogin,\r\n} from './pages/Admin.js';\r\n\r\nconst App = () => {\r\n const [isAuthenticated, setAuthenticated] = useState(getJWTToken() != null);\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport default function register () {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW (swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker (swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister () {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport * as serviceWorker from './registerServiceWorker';\r\n//import { library } from '@fortawesome/fontawesome-svg-core';\r\n//import { fab } from '@fortawesome/free-brands-svg-icons';\r\nimport 'bootstrap/dist/css/bootstrap.min.css';\r\nimport './styles/global.css';\r\nimport './styles/master.min.css';\r\n\r\n//library.add(fab);\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n\r\n","module.exports = __webpack_public_path__ + \"static/media/SpoorparkHero.b96c5e8c.jpg\";"],"sourceRoot":""}