{"version":3,"sources":["Images/payment_provider_images/visa.svg","Images/payment_provider_images/mc.svg","Images/signup_desktop_image.jpg","Images/payment_provider_images/amex.svg","Images/payment_provider_images/maestro.svg","Images/payment_provider_images/powered_by_stripe.png","Images/payment_provider_images/connect_with_stripe.png","Images/paynet_logo.png","Images/HappyTableLogo8.png","Images/ht_logo_final.png","Images/payment_provider_images/google-pay.svg","Images/payment_provider_images/apple-pay.svg","Components/Modal.js","Contexts/GlobalContext.js","Util/Cookie.js","Util/TestOrProd.js","CustomHooks/useFetch.js","Components/PasswordChanger.js","Components/MultiLanguage/useGuiTranslations.js","Components/CustomerSite.js","CustomHooks/useCustomerSettings.js","Components/TrialWarning.js","Components/MenuMobile.js","Components/MaterialThemeProvider.js","Util/ValidateEmail.js","Components/Login.js","Components/MessageBoxWithAction.js","Util/StringFunctions.js","Components/MultiLanguage/DefaultLanguageSelector.js","Components/MultiLanguage/TimeZoneSelector.js","Components/MultiLanguage/CountrySelector.js","CustomHooks/useGoogleAnalytics.js","Components/SignUp.js","Components/SignUp__Success.js","Components/MailVerification.js","Components/MessageBox.js","Components/ForgotPassword.js","Components/PasswordReset.js","Contexts/MenuContext.js","Components/MultiLanguage/GuiLanguageSelector.js","Components/Header.js","CustomHooks/useTawk.js","Components/MobileBreadCrumb.js","Components/Header__Wrapper.js","Components/Orders/OpenOrders/OpenOrderLine.js","Util/DateFunctions.js","Components/Orders/OpenOrders/OpenOrders__Details__Small_2.js","Components/Orders/OpenOrders/OpenOrders__GridView.js","Components/OptionGroups/useOptionGroups.js","Components/CallTheWaiter/CallTheWaiter.js","Components/Orders/OpenOrders/NoOrdersYet.js","Components/PushNotifications/WarningOnOpenOrdersPage.js","Util/LoadScript.js","CustomHooks/useOneSignal.js","Components/Orders/OpenOrders/OpenOrders.js","Components/Orders/OrderHistory/OrderHistoryLine.js","Components/Orders/OrderHistory/OrderHistory.js","Components/Categories/Categories.js","Components/FoodAndDrinks/FoodAndDrinks2__Products.js","Components/OptionGroups/AddOrEditOptionGroup__View.js","Components/OptionGroups/AddOrEditOptionGroup.js","Components/FoodAndDrinks/FoodAndDrinks2_AddOrEditProduct_View.js","Components/FoodAndDrinks/FoodAndDrinks2__AddOrEditProduct.js","Components/FoodAndDrinks/FoodAndDrinks2.js","Components/Tables.js","Components/Logo.js","Components/Dashboard/Dashboard__Kpi.js","Components/Dashboard/Dashboard__ChartLegend.js","Components/Dashboard/Dashboard__LineAreaChart.js","Components/Dashboard/Dashboard__BarChart.js","Components/Dashboard/Dashboard__PieChart.js","Components/Dashboard/Dashboard__Table.js","Components/Dashboard/Dashboard.js","Components/PaymentConfiguration/CurrencySelector.js","Components/PaymentConfiguration/Payment__Configuration.js","Components/PaymentConfiguration/Payment__Configuration__Completed.js","Util/QueryString.js","Components/Init.js","Components/CookieConsent.js","Components/Subscription/Subscription__Form.js","Components/Subscription/Subscription.js","Components/Reducer.js","Components/Subscription/Subscription__Success.js","Components/Subscription/Subscription__Cancel.js","Components/Settings/GoogleMap.js","Components/Settings/OpeningTimes.js","Components/Settings/DeliverAndCollect.js","Components/Settings/useCustomerServicePreferences.js","Components/Settings/usePostcodeToLat.js","Components/MultiLanguage/MultiLanguage2.js","Components/OptionGroups/OptionGroupsList.js","Components/Settings/AdvancedSettingBox.js","Components/Settings/AdvancedSettings.js","Components/Settings/ColorPicker.js","Components/Settings/FontPicker.js","Components/Settings/ColorsAndFonts.js","Components/Subscription/PaynetSubscriptionForm.js","Components/PaymentConfiguration/PaynetConfiguration.js","Components/BreadCrumb.js","Components/Subscription/PaynetSuccess.js","Components/Orders/UnpaidOrders__table.js","Components/Orders/UnpaidOrders.js","Components/GoogAnalytics.js","Components/PushNotifications/PushSettings__Default.js","Components/PushNotifications/PushSettings__Denied.js","Components/PushNotifications/PushSettings_Granted.js","Components/PushNotifications/PushSettings.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Modal","props","className","onClick","viewModal","e","stopPropagation","children","GlobalContext","React","createContext","getCookie","name","nameEQ","ca","document","cookie","split","i","length","c","charAt","substring","indexOf","setCookie","value","days","expires","date","Date","setTime","getTime","toUTCString","deleteCookie","isItTestEnvironment","window","location","href","useFetch","initialURL","useState","response","setData","globalContext","useContext","url","method","postData","headers","addTokenHeader","multipart","returnRawResponse","hideMessageBox","fetchParams","fetchData","useEffect","a","async","authValue","map","header","bodyData","JSON","stringify","apiDomain","requestToURL","fetch","mode","body","then","ok","json","responseJson","catch","err","Math","random","console","log","status","statusText","fetchUrl","fail","undefined","doNotHideMessageBox","dispatchMethod","type","message","showButton","error","errorMessage","PasswordChanger","setStatus","oldPassword","setOldPassword","newPassword","setNewPassword","newPasswordAgain","setNewPasswordAgain","email","yourName","restaurantName","errorMessages","setErrorMessages","setErrorMessage","key","Fragment","style","fontSize","marginTop","TextField","id","label","onChange","target","helperText","Button","variant","color","preventDefault","validated","newPasswordRetype","useGuiTranslations","translations","en","tr","textNo","globalState","selectedGuiLanguage","CustomerSite","classes","useStyles","customerSiteUrl","setCustomerSiteUrl","translateGui","customerSettings","domainAlias","root","open","aria-label","test-link","makeStyles","position","bottom","padding","display","alignItems","textDecoration","useCustomerSettings","getCustomerSettingsHookResponse","getCustomerSettingsHook","TrialWarning","history","useHistory","accountStatus","remainingTimeInDays","Link","push","closeMenu","marginRight","blueMenuItem","withRouter","changePasswordOn","setChangePasswordOn","pathname","justifyContent","width","Typography","gutterBottom","menuLocation","component","RouterLink","to","country","theme","createMuiTheme","palette","primary","main","secondary","typography","fontFamily","join","MaterialThemeProvider","ThemeProvider","validateEmail","test","Login","setEmail","password","setPassword","passwordAgain","guiLanguage","setGuiLanguage","b","submitForm","username","trimEmail","trimmedEmail","tokenString","user","customerAlias","address","localStorage","setItem","handleKeyPress","src","Logo","alignSelf","onKeyPress","paddingTop","MessageBoxWithAction","outerWrapper","innerWrapper","buttons","doNotShowCancelButton","cancel","zIndex","top","height","backgroundColor","left","margin","borderRadius","flexDirection","capitalizeFirstLetter","str","toUpperCase","slice","DefaultLanguageSelector","FormControl","formControl","InputLabel","Select","labelId","language","setLanguage","code","lang","index","MenuItem","TimeZoneSelector","getTimeZonesHookResponse","getTimeZonesHook","timeZone","setTimeZone","tz","displayName","CountrySelector","setCountry","useGoogleAnalytics","pagePath","setPagePath","listen","action","search","hash","SignUp","emailError","setEmailError","setYourName","yourNameError","setYourNameError","setRestaurantName","restaurantNameError","setRestaurantNameError","passwordError","setPasswordError","setPasswordAgain","passwordAgainError","setPasswordAgainError","alias","setAlias","errorFromServerMessage","setErrorFromServerMessage","aggreementChecked","setAggreementChecked","agreementError","setAgreementError","submittedBefore","setSubmittedBefore","phone","setPhone","phoneError","setPhoneError","currency","setCurrency","validate","Array","isArray","errCode","failMessage","f","getSlug","phoneNumber","Checkbox","checked","companyName","city","surname","companyAlias","langCode","timeZoneId","desktopImageDiv","backgroundImage","desktopImage","backgroundPosition","backgroundSize","SignUp__Success","class","fontWeight","MailVerification","replace","LoginLink","MessageBox","messageOptions","CircularProgress","doSmthIfOk","ForgotPassword","logoImage","PasswordReset","setCode","GuiLanguageSelector","languageMenuRef","useRef","displayLanguageMenu","setDisplayLanguageMenu","setSelectedLanguageCode","defaultLanguage","languageCode","getItem","parse","addEventListener","clickListener","removeEventListener","current","contains","cursor","ref","languagesDiv","changeLanguage","boxShadow","Header","menuOpenState","setMenuOpenState","headerMenuOn","setHeaderMenuOn","wrapperRef","handleClickOutside","event","loadScript","setLoadScript","s1","createElement","s0","getElementsByTagName","charset","setAttribute","parentNode","insertBefore","waitForSeconds","seconds","Promise","resolve","reject","ctr","intervalId","setInterval","clearInterval","useTawk","marginLeft","loginUrl","MobileBreadCrumb","OpenOrderLine","orderItem","order","checkState","setCheckState","setStateOfItemHook","orderItemId","foodOrDrink","itemAmount","optionGroups","total","optionGroup","options","option","price","itemCount","getOptionPriceTotal","itemOptionGroups","toFixed","checkbox","orderStatus","inputProps","align","colSpan","optionGroupId","filter","optGrp","optionGroupName","optionName","formatDate","d","month","getMonth","day","getDate","year","getFullYear","getFormattedDateTime","dateTimeString","newDate","setHours","getHours","toLocaleString","hour","minute","OpenOrders__Details__Small_2","useTheme","col1","orderTypeWrapper","orderType","restaurantIcon","directionsWalkIcon","motorcycleIcon","orderTypeText","orderDetails","tableNo","tableNumber","orderDate","orderNumber","fontStyle","note","orderDetailsWrapper","paymentType","postCode","col2","col3","Table","table","orderDetail","parseFloat","orderAmount","textAlign","textTransform","opacity","card","fonttSize","minWidth","borderLeft","maxWidth","OpenOrders__GridView","orderList","tableWidth","useOptionGroups","getOptionGroupsHookResponse","getOptionGroupsHook","deleteOptionGroupHookResponse","deleteOptionGroupHook","getOptionGroups","CallTheWaiter","getCallsHookResponse","getCallsHook","setCallCompletedHook","timerId","doneCalls","setDoneCalls","pendingCalls","setPendingCalls","removeCall","callId","temp","getMessages","messages","title","customerIcon","titleText","pendingCall","messageId","line","flexColumn","tableName","request","button","border","marginBottom","borderBottom","paddingBottom","NoOrdersYet","svgImageWrapper","data-name","xmlns","viewBox","transform","fill","points","cx","cy","r","textWrapper","maxHeight","WarningOnOpenOrdersPage","displayWarning","setDisplayWarning","Notification","permission","wrapperDiv","rightSideWrapper","dismissDiv","iconAndMessageWrapper","yesButton","flexGrow","scriptUrl","querySelector","isScriptLoaded","script","appendChild","useOneSignal","sendOneSignalIdResponse","sendOneSignalId","oneSignalInitialized","OneSignal","oneSignal","appId","init","welcomeNotification","disable","promptOptions","slidedown","enabled","autoPrompt","actionMessage","acceptButtonText","cancelButtonText","showHttpPermissionRequest","on","isSubscribed","getUserId","sendOneSignalIdFunc","oneSignalUserId","OpenOrders","getOpenOrdersResponse","getOpenOrders","orders","setOrders","optionGroupsHookResponse","audio","Audio","indexedDB","databases","db","onerror","onsuccess","result","transaction","objectStore","get","errorCode","getOrders","foodOptionGroups","filteredExistingOrders","newOrders","existingOrders","ringTheBell","orderFiltered","play","userInteractedWithTheDocument","existingOrder","orderFromServer","OrderHistoryLine","displayDetails","setDisplayDetails","TableRow","TableCell","scope","itemQuantity","OrderHistory","selectedDate","setSelectedDate","getOrdersResponse","getOrdersHook","overflowX","queryDate","TableContainer","Paper","elevation","utils","DateFnsUtils","locale","trLocale","Grid","container","justify","disableToolbar","format","KeyboardButtonProps","TableHead","TableBody","Categories","getCategoriesResponse","getCategoriesHook","addCategoryResponse","addCategoryHook","editCategoryResponse","editCategoryHook","deleteCategoryResponse","deleteCategoryHook","setCategoryOrderHookResponse","setCategoryOrderHook","columns","field","initialEditValue","data","state","setState","getCategories","categoryArr","categories","categoryName","openToSales","isAvailable","categoryID","changeCategoryOrder","categoryId","direction","success","colsArr","addButton","paging","editable","onRowAdd","newData","description","addCategory","onRowUpdate","oldData","editCategory","onRowDelete","softDelete","deleteCategory","actions","icon","ArrowUpwardIcon","tooltip","rowData","ArrowDownwardIcon","localization","emptyDataSourceMessage","editRow","deleteText","addTooltip","deleteTooltip","editTooltip","ProductsTable","selectedCategoryId","addProduct","editProduct","getProductsResponse","getProductsHook","setProductOrderHookResponse","setProductOrderHook","deleteProductHookResponse","deleteProductHook","getProducts","changeProductOrder","productId","flex","IconButton","products","product","iconButton","addIcon","AddOrEditOptionGroup__View","OkAndCancelButton","okAndCancelButtonWrapper","closeForm","okButton","submit","AllowMultiplesOfAnOption","allowMultiplesOfAnOption","setAllowMultiplesOfAnOption","setOptionGroupName","optionGroupNameError","maxWidth150","from","setFrom","dash","setTo","optionRow","updateOption","optionNameError","optionPrice","InputProps","startAdornment","InputAdornment","optionPriceError","deleteIcon","deleteOption","addNewOptionRow","overflowY","minHeight","AddOrEditOptionGroup","setOptionGroupNameError","setOptions","setGAPath","addOptionGroupHookResponse","addOptionGroupHook","getOptionGroupHookResponse","getOptionGroupHook","updateOptionGroupHookResponse","updateOptionGroupHook","updateOptionGroup","optionId","setSelectedOptionGroupIdAndCloseOptionGroupForm","addMultiplesOfItem","addOptionGroup","optionAttr","newOptions","splice","optionResult","FoodAndDrinks2_AddOrEditProduct_View","PictureUpload","rowInfo","accept","multiple","setSelectedFileToImageSrc","files","setFileInfo","htmlFor","addImageButton","setPictureUrl","formElementsWrapper","setName","nameError","multiline","rows","setDesription","setPrice","available","setAvailable","productGroup","setProductGroup","optionGroupsWrapper","optionGroupTitle","combobox","optionGroupSelectValue","setOptionGroupSelectValue","addToOptionGroups","addOptionGroupButton","addedOptionGroupsWrapper","addedOptionGroupRow","setOptionGroupId","removeFromOptionGroups","foodImage","pictureUrl","FoodAndDrinks2_AddOrEditProduct","editProductId","setNameError","fileInfo","addProductResponse","addProductHook","editPictureResponse","editPictureHook","getProductHookResponse","getProductHook","editProductHookResponse","editProductHook","setOptionGroups","optionGroupAdded","renamedOptionGroup","o","optionGroupIdList","formData","FormData","append","picture","selectedOptionGroupId","file","fr","FileReader","onload","readAsDataURL","newOptionGroup","newOptionGroups","newlyAddedOptionGroupId","spacing","selectEmpty","FoodAndDrinks2","setCategories","setSelectedCategoryId","deleteProductResponse","editProductResponse","deletePictureResponse","setEditProductId","dataAll","foodOrDrinkName","isActive","fileName","comboChange","ProductsCategorySelector","category","Tables","getTablesHookResponse","getTablesHook","addTableHookResponse","addTableHook","deleteTableResponse","deleteTableHook","editTableResponse","editTableHook","getQRCodeResponse","getQRCodeHook","qrCodeBase64","setQRCodeBase64","selectedTableURL","setSelectedTableURL","selectedTableName","setSelectedTableName","customerLogoURL","setCustomerLogoURL","tables","setTables","clickedTable","setClickedTable","setColumns","getTables","setSelectedTable","friendlyUrl","compare","table1","table2","comparison","parseInt","tableArr","sort","logoBase64","tableId","getQRCode","onRowClick","togglePanel","addTable","editTable","deleteTable","content","pri","getElementById","contentWindow","write","close","focus","print","putCustomerSettingsHookResponse","putCustomerSettingsHook","info","putCustomerSettings","logoFileBase64","_fileName","logoFileName","companyInfoWrapper","textbox","reader","fileType","readerEvt","binaryString","base64String","btoa","readAsBinaryString","Dashboard__Kpi","materialIcon","kpiName","Dashboard__ChartLegend","Dashboard__LineAreaChart","uv","pv","amt","right","dataKey","strokeDasharray","stroke","Dashboard__BarChart","Dashboard__PieChart","activeIndex","setActiveIndex","COLORS","activeShape","renderActiveShape","innerRadius","outerRadius","onMouseEnter","entry","RADIAN","PI","midAngle","startAngle","endAngle","payload","percent","sin","cos","x","y","dy","textAnchor","Dashboard__Table","Dashboard","CurrencySelector","_currency","currencyCombo","Payment__Configuration","getAccountStatusResponse","getAccountStatus","accountConnected","setAccountConnected","connectedAccountId","setConnectedAccountId","stripeUrl","setStripeUrl","clientId","stripeUserId","poweredByStripe","visaLogo","mcLogo","maestro","amex","connectWithStripe","Payment__Configuration__Completed","postAuthCodeResponse","postAuthCode","statusMessage","setStatusMessage","codeTemp","queryString","queryParameterName","arr","filteredArr","getValueOfAQueryParameter","authorizationCode","Init","CookieConsent","consent","setConsent","fade","useSpring","config","duration","div","closeButtonWrapper","noConsent","yesConsent","Subscription","upcomingInvoice","redirectToRelevantSubsPage","subscribeWrapper","periodEnd","toLocaleDateString","reducer","initialState","Subscription__Success","Subscription__Cancel","Map","onMount","onMountProps","setMap","onLoad","google","maps","Circle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","center","radius","range","head","OpeningTimes","updateWorkingHoursSpec","openClose","newValue","newWorkingHours","workingHoursSpec","opens","closes","setWorkingHoursSpec","spec","textField","InputLabelProps","shrink","step","defaultProps","lat","lng","zoom","DeliverAndCollect","selfOrdering","setSelfOrdering","collect","setCollect","deliver","setDeliver","averageTimeToCollect","setAverageTimeToCollect","averageTimeToCollectError","setAverageTimeToCollectError","setAverageTimeToDeliver","setPostcode","setPostcodeError","deliveryRange","setDeliveryRange","getCustomerServicePreferencesHookResponse","getCustomerServicePreferencesHook","postCustomerServicePreferencesHookResponse","postCustomerServicePreferencesHook","useCustomerServicePreferences","updateCustomerServicePreferences","getLatLongResponse","getLatLong","postcode","countryCode","usePostcodeToLat","getLatAndLong","setLat","long","setLong","payAtTable","setPayAtTable","payWithCard","setPayWithCard","orderPaymentOptions","payOnTheTableEnabled","payOnlineEnabled","useCallback","averageTimeToDeliver","postcodeOnBlur","_postcode","longitude","latitude","paddingLeft","MultiLanguage2","isMultiLangEnabled","setIsMultiLangEnabled","availableLanguages","setAvailableLanguages","setDefaultLanguage","updateMultilangSettingsHook","languages","multiLangEnabled","tempArr","availableLanguage","checkBoxClicked","tableStyle","OptionGroupsList","AdvancedSettingBox","setting","settingLeft","settingRight","settingRightUp","settingRightDown","AdvancedSettings","version","flexWrap","ColorPicker","showColorPalette","setShowColorPalette","colorPickerRef","handleClick","setSelectedColor","selectedColor","colorButton","colorPickerWrapper","onChangeComplete","hex","FontPicker","showFontList","setShowFontList","rel","selectedFontSpan","selectedFont","font","setSelectedFont","lineHeight","ColorsAndFonts","selectedPrimaryColor","setSelectedPrimaryColor","selectedSecondaryColor","setSelectedSecondaryColor","selectedPrimaryFont","setSelectedPrimaryFont","selectedSecondaryFont","setSelectedSecondaryFont","selectedPrimaryTextColor","setSelectedPrimaryTextColor","selectedSecondaryTextColor","setSelectedSecondaryTextColor","setBackgroundColor","getSettingsHookResponse","getSettingsHook","saveSettingsHook","settings","primaryColor","secondaryColor","primaryFont","secondaryFont","primaryTextColor","secondaryTextColor","PaynetSubscriptionForm","radioValue","setRadioValue","nameOnCard","setNameOnCard","setPhoneNumber","errorClass","setErrorClass","getRedirectLinkHookResponse","getRedirectLinkHook","tempErrorClass","errorExist","redirectUrl","setTimeout","package","badge","Radio","placeholder","buton","PaynetConfiguration","paynetLogo","BreadCrumb","PaynetSuccess","UnpaidOrders__table","tableTotal","purchaseOrderList","purchaseOrder","orderLine","toBeAdded","totalLine","getTableTotal","addTableToCompletedPayments","customerTableId","borderTop","UnpaidOrders","removeTableHook","completedPayments","setCompletedPayments","searchText","setSearchText","today","yesterday","setDate","toISOString","tableList","removeTable","tempOrderList","GoogleAnalytics","gtag","PushSettings__Default","wrapper","messageDiv","buttonWrapper","registerForPushNotifications","PushSettings__Denied","imageWrapper","image","origin","PushSettings__Granted","PushSettings","setPermission","App","isMobile","setIsMobile","useReducer","ver","dispatch","updateDimensions","innerWidth","Provider","exact","path","Boolean","hostname","match","ReactDOM","render","navigator","serviceWorker","ready","registration"],"mappings":"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","file":"static/js/main.3a73fa1a.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/visa.74442ed3.svg\";","module.exports = __webpack_public_path__ + \"static/media/mc.cd1698e1.svg\";","module.exports = __webpack_public_path__ + \"static/media/signup_desktop_image.ce97bab8.jpg\";","module.exports = __webpack_public_path__ + \"static/media/amex.1b212bc0.svg\";","module.exports = __webpack_public_path__ + \"static/media/maestro.0878f0cc.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/connect_with_stripe.9f75731a.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/HappyTableLogo8.0a97fe1d.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAABRCAYAAAD7N7sQAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH5AkKCxgSXlt30QAAFtBJREFUeNrtnXmYldV9xz8zw52FQRhExCAIuIEIiAuoY2PiFkWtVptUp7GJRhM1KllsqmTpmmQSU5c2aW1qNKaNonEpjakNUap1wYiJooAYQBEDCMoAM4iz38kf33OZc9/3ve9933vvzLxXzvd57vPMvNs5533P9/x+57ecAw4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg57ESqiXtjWnMp5buSC7gG/32FwUdvYNNRViI2OpQtD692xdGHJyhqsckqFYTGurQc+DjR4jj8OrIpwfwr4E2C85/gzwG+H+kU4+JACLgA+NNQViYhfAauBicB5ZPftHcCDwPslLK8WuBAY6zn+GPDqUL8ML+IQfRTw18DBnuOfJRrRa4AvASd6jv8VjuhJROZ7nTDUFYmIyxDRDwduAaqtc2uAxZSW6MNR3z3Kc/wzJJDolTGvTxdZXl/EYw7JQDl9G7uu6ZBzA1VmohGX6A57F8qmIzuEwxHdIQxVQ12BGIhsWN4bEWeO7rB3IQ2sRXPRIFQAk4ERnuPvAluGoL7bh6DMskFZEt3rqhto91ymvMEqZzDKioB24FpkfQ9CNfBT4BTP8fuAv6M4CZuZMkR9Rh/wXtxCvC6yoXKLDUY9yoboYX74UhI/TjmDWVa+coqJUwi6d9Zj7X1bOupaQ25LAUEPbgdaCn4pA4h8sQGDRfyhqEfiie7phBOB2cB05I+vQR1rI7ACeAXYUogE9pRTCxwGzETuxNHmeAuwzpT1OtBVgrLGATOAI0yb6kybNiE3zUrg3cHSKjJ45Yz/CS2vtrEpp30nase0OnQVmgbMNu9hHOqbu4G30HddgTWAFNH5q9A3PQ71ozFomrINueFeQt+4u7axaSCDbPYHZqE+NhFNkbqBrcDvgOXAeqCnFPVINNEtQswCPg2cizpEdcDl7WhOuQj4T2BdW3MqbtTeCOBs4BLgeGA//AbLXvQxngZ+Avwf0FlAWVNNOecBhxI8F96NOt9/AfcCr4eUMw24kmxVewfwT6gThyHo3reBfwZ25W1UTFgdvtK858uAM4AJBPfJ99Cg9zM0NdgUs/P3oWnA8cDlwJnAgfiNjWlkX/h/4MfAk7WNTd1QvFS12jwZffcLUR8I+u496P0vAe4EltY2NqWLqUciie4h3ueA+cCkPLfVoQFhFvBnwHeBe9uaU11hBLTKmg18AxG9NqScKiR5LzLXPgh8i3AS2mXVAZcCX0YED0M9cLT5NQE3AQvbmlOdAeUcBFxHdufdAtxNfqJPCrh3DXAHJSa61eH3QwE5VyDpFoYRwFxgDnAx8A/AL2obm9IRO34dcIO594CQ6yrRt21C3/Ye4DvA74uRqqbNKRRZugBJ8TAMQ1L+UuAc4N+BW4GWQuuRZPfaWOA29KLzkdyLacC/AH8D1Oeav1rHzwLuR6NsbYTnZ7APkkYLkbQgT1kNaAC6lfwk9+II06a/BUYElNOHJIGNHqL5wnPdO1CYDPwIdfp8JLdRgVTuH6OBKRUxJn8i8EXCSe7FKODzSDucAYXF/5t76kxbf0h+knsx1tx7O0WEIyeO6KYDj0TS6zPktvrmw3DgK2gkrw4xVp2CPsDhRVR7DpJ+s0LaNBxJomuQbaHQNl0PfA2oCTPAJRGm0x+ABqzzKdwyvy/Soq4AKiMQsJh+/hHUPw6Oe6Op1zCkvX0VCQYv2oE3gJeB19B0K6j+nwBuBkYVMuCUQnXvi9jh+ogmXSrRSHoJwR1hl3kpq8zfYxDBZuAnUAqph6+iud0emDpPAv4Rqb1B2GzK2mDqNRnFNo8LuHYmGpw+2dacavGo1hVIDfsswZ2uE8VprwJ2IuPfdCTFg9o031z/H1FefBJgOmc1GqTm5bhsOzKGvQZ0oPc8G2lo3r5aj7Sb1cCTMauTRga3F9E3TiHj6zEEaxiNaJD+XG1j0+6YqvMfo5h473dsp9+etBLZIapRnzwPaYreBLBPIMPkTcQMRy8F0YcjNScfRuQrz5DvaNSRvdemUYbSbcBzQJt1bgxwOpJ2cwLKvRF4pq05tdEiYBXyEx8TUJWdyAhyNzLwdZrjdajTXQ58Cv8IfToyGt6KGdRMm6aaugVJ8mXm+iXIqpxGg8EY4DQ0UM0NeOc3Ak+3NafWJ8DnHhWZ9+MdwLuAh4EfIKJnkk8qEdnPRVJxmue+/ZFa+1JtY1NrRAL+HhkoH0CejV5zvBY4Erga+HP0rW38KfAomrfnhRnYxpn6jfSc3oHsQXchwtvYivrEr5Ax1E6aGYY0wkdrG5teiTPglEJ1vx6lqub7PWJeZBiqkDrmnYv0IoPEJSgLqc1zvgXNsS8CfhHw3JnIQAdkkS9IB9qKPvYNaKTttM61o474JfPzRmNVoUHgQEvLqQD+gmDVb5Gp130ooiwzSqfN//eZNi0KuHca6pDlEvo5HLgK/+DYCTSj7/4s2RlmaWR9vgMZ0p4PeO5HgI9FrMNq1IduRm67XutcB8qivAZpHd4AnBrkmWiI0eYL8AuSTqQd3I6f5DaeQv3wLc/xCUjIxOJuKST6JOIby8KedVbA8cXo5W+HYN+uIdZ6ZHQ5iOz5ciUytN0JZIJAzsavGnUCf49R80PK6UYGof2Ab3re41QkiX9i/h+L1DcvfmPquiFPWW+a6yYgQ1QGFaZN/0ZCA1QyMNJtJvDhgNP3IANlOwS7j8z9LyNN70FkXMugBqm0iwgO4MlgB7LZPJWnnE6kWYxHWoRNqOOA42sbmxZHaHZm/QavC+9J1A/7yE/W54F/Bb7tufYclIq7Oeo3SJox7ljUoW20onn09pELunO6r6zjrwPfx//Rj0TzMNBc6GT80vApNGcKLcecSyNJs8xzSRVwKv3v9kjgEM81nUhd35CvLIMN5vpOzyWHk19LSgpOwi8NN6IO296xdGFOt5F1/AWk7nptPXPwD9pePIQERmg55lw3IvsazyV1SIOA/PamKQQbZw9Exr2FKDYi7HcPmu6kA559dJyXnxiiG+k1A7+W8SJ+MgXCIsZiDIns0/Rb1hvwky+NOsOuKHNec812JEm8H30a/SrqNPxBEWvRdCZvkI11/nFzn416ZLBLOioIdis9CbwWZa5prukD/hu/BrM/MpTmvB19254YZb2FGRg8OJJomvCh9EdU2piBpiEXRfhdjIjuLa8GOCqO9T0xRDcI8hOuAHZHNTiZ67biJ0Wl9fxR+KXLbmTRjIvl+CXtGPqzuoJ8t6uBlphtajH32aggvyRLAlIEeyqWkz1PDoUh4AakCdioIdwfvw1YE9Na3mfq5x3E9ydarEUmjHegcEici0tRkfsJNpJ4UY2MGVNCrgny0xUSmdVDcDZTJnR2WEDbO4H34liwRy7opq051YZUPfvjV1ttqQu4dRcxOrhBL34jJMQL8BkqVBHscWiN+yD0nXZ7jlXS/56DVOp2wg1fPpiFJnchTc+eZw8jmoAMCtNuQQbeUizokXH5RnKzlYLoi5FhKh9qkVEqjOidAcfGFFCnFNFcft76jYwasw5Z0W7ej9pJv40gaPGGBnM8DtmrCFYFS7kO2kChh2CijY37IERor7uqgn57Szv+gXcEsE9tY9PbMRNu9sVP6k703fItyhHU3tXITRfnm+UaFHqJ4UsvBdGrIiZzDCO/KyjIijgbaGhrTu2MkTQynviRbvXIFfJszPuOwy+tthEsfTOYDoxra05tjtGmceY+G33IF1wsBtpF10PwYhRzgOraxqauKAQ05JuC32BrowVpc7YbbwyyEawhOjIJN9538zaa81fnuX8zig+wr5ts6hLHS1Jh2hIUexBZ/UzMHN10+FX4Y6yPQu4q8kXgWefPIdsFEwUVyB0yOkqkn0W+CwJOr8KvXto4BBMdFqNN8/DPyzJZXaDO5313w4FREfLex+KfNtlaSbHoI3il4A+T7TLMCUPySoKXHLexBbkkbVRjgmCiGLDMNdMJ9s+/TDRNbB2KhbAxHqu/ZKz8uX4GpyGteYnnd/5gB8yUEsvxS6g6FEI4CfImjYCsmtdS2HpnJ2LCVNuaU4FlWcczUUqzPZf0oA8RplalkG98asQ2TTXXey9cRb+Bbiv+OW8Dxh2Uqy2mHafj7wvvUKJpgemQzwXUbz8UOTamtrEpZ9KIdfxkFCwSpoHswvjKPTgLEyCVqyzr+AgUMOUVFm30h9vm04I2oFgJG5UoCGaup1256rGfqccJyPWc+R2M3MiRkbQ01Q3IjXS55/hc5Nf8MrA2RELNQD70qQWWn0Khpa3I7tCVo6w6FOX1RfwDykrgiQgq+QyU3HEdsDqkTUegUMgZnuNpFDySSYLYhGLEbSt8JTKALgFW5CjjXJRg4sUqgm0mhWIFIrs3IGoeipP4GrA5ROKehEJX82Wg9aH8/SvItu8MR4kwHSivvSdHWWOAryP3lhdPAS/m2xHGoBMFXs0jW32fhIJgrgGeD3nO/ihQ5tSAc4uJ6SFKmkTvQQERQfnT5yJf6FVonlaHBqrhKBDmC6jjf7TIOoxGIZK3o2SGkYjMVfRLyDvQR/CGc3ajYIioiyOeZup8NeoANeibZJIbrjbnTw+492WyE3V2Ix+zV5OYhlJCzyDbQNWA4s5vw68Kd6AFNUqJ3aYeXiNVlanHA8An0fy7Bn3bEchv/XUUYDIrXyFGe3jRvDcvDkDf9ftISo4y5VSbcxeadzofv/bUhggaR8v5X+CJgOPHIm/VV9FAXm/qUYNcwBea9l6Gn6PbUR+LNQgnSqIbd9UyFNd+Y0AjZyLJ/hZK7dtFf/DLBEpnVKpHKbIXICm50Tx7IiJOLov+IyiiKQ6mo453PTIWtZrnH46MN0FTkDY00GzyaA4PIdJ446vnIim21LSnBk05jiXYPfc88OwAJMs8aurxac/xCjSozkFhzG+iAWEM+rZx87C70WDdiD9QZyQSFhehWIstiNSTkEoc9D760CC1JGoFjNRvRSHSM/HHO0xCGsY1aD6/HQmtg5AgC3JHphE3non74hNFdIMeFO45DY1sXlSZFzElzkMLxGj8W0jlwq/RfLOtAIJUoQ4dJQiiAy3Gscg+aAbJTShh4i78rrgGFN9/dp7ntyKS7CzZW2RPx29HqaWHAH8UcFkKDXDFrA2QKWstGjzvJNgwOxp/VmAuPIzeeSTvgAfPIsl9K8Hu0fFED3pahKY5kSL8bCRNdc9Y37chVfwBit8GKip6KdzK/AQy4kV133QVWE4rWkr5VqAnx4DyCNojry3GczPoBL6HVM6Sw3TON5Hd4ImiHhYNj6GlyFYXeH8PijefD7wbl1xW2O5PUbZjoa7QNOLCF4CWwVhKKkiNjKMuV0Y8BlKXr0TLQW0kOnrQ4n5B7pyw9u5EJPoN0SOXtqGkjEuQES5qsM1iZFjaEeVi9KGXoTnb94COoHLMsV6U0TYfv5spDC1ogLiF3IOIF0H9IUqfehWl7t6C3wUVhg40CK0POJfVDy0y/BKlAt9LvLXf16Pp4+fJnSWWlw+mHr0om/FiU/848+uNiANXEo8HWYijuu9Cc0lvpNqLEe/vQpZs7zxnqfdCo4aCiPAt4OfmJZ2J1L59yO5Q3aijLkcj38+RtdJrvAmb22SstXej+dvHkSHIG4XVgRYvWIJG6l9j/KoxVPatwF8iVexTaDmr8WRbZ9No8FmBDEsPoWCN0HLMu+tBHWsFIvzZyFUTNChvRyva/gAZ4NIR29Fjtd/G02E3WRbrTcht+iD6tqeieWs92d+2C7n6XkAGqseR7cTO7+9DxslcZa1EnpxTkD/9JDTvt+fjadTH1yFbwkKMJpBDgrYjo5jXfrA8pB7PIBffPNPm41AMg/3de009XkcayX3Iwt4XUpe8iCyNi9kgoJj7PfdljDNTrBf0PiLAWiTBQq2ihghHIH+onQixDXWEleb/BmQom2auq0CkeAMZtDZhphV56n8zcgvauIt+F2IV6uAzTLvq0Yi/Ga3vvRYr3j9meC5o3ns0shgf67nsZ0iqvoKxhkd9fph7qYB13UHBR4fSHz02DEngjeYdbCDPlCdXuZ5yhiHD7WHI8DUKDVrb0LddS4T14wtpv+eeGtPWw1Dqaj39g9p6U5dSrGO/p9GJRqbjmY7bYn7L8t1T6MKJ1r07kbaxNN/1RZbTiz7qG6Usx3p+N5qObMRP9BewEpIGe0kqjz96q/nFDUGOVA7sIVoPEghvRrlnAOvRiQby3w1GPcplGaKSIkyij1zQvbKgh+YuK1Cij1zQfXkhzyuwDimk+ntXurlh5ILumwarHg5Dh8RZ3R0cHEoPR3QHh70AQz5HjzqXTtqSxlHqnbQ6O+y9GHKiI6twLtcPyGixndKsylFK1BO+uMUOYq5qMgTYK200eyOSQPSpaMeRfXKcfwrFJpdSPPaZ59nP7CbeYHIeWho6CGkUCfUowRF3A7mvWa729gTUI+5yVg5liiQQvQb5T3MR/Q1KL3k2oqQVO3GgC/9i+WFoIHyjxEx77sYfRBKnnFKgF22S4F3yq9DQUIcyQxKIDvklaamJ/h7a8mYw2vMq/avADBX6kM/cYS9FEojeg+bgGXU2RbZ0H27qWbJFEIo1khlD3AjPYXt10nSmvkkwyCWhDg5DiyQQfS2a72YSBI5C4ZqZTQ9Gm793x3/0gMK7Tvm9aCUYkATdEO9xDg4DhyQQ/X2UfJHBbpRimSH6WBTBFifLaaAxDP+miS8RkNDg4JAEDDnRvWplW3OqBSWpZNYGGw1MbWtOrUqQCrov2YsjdAGvJ6h+Dg5ZSGJkXCvZxqsUSitMhM/XzM+nk73X1zvEWzPcwWFQkUSi96IMJttyfQowptCMtAHAGShgJoOVFLEogIPDQCOJRAcl6L9j/T+d4ld3LRpmoPkQ2VlgfWgRio6hrp+DQy4kjuhmnruG7NVgaoBLgfoESPXzyd6qeCvB2+s6OCQGiSO6QSdaysf2nZ+KtloaEpgBZgIKx7WNmIuB15whziHJSCrRQWuD2auNZLZmmjjYUt3aumg+2evQ7URhpY7lDolGIolupGMrWozSDpQ5Bu3aUTdYZLfKOR8tHWxb/x8AnnPS3CHpSCTRLfwSLWCYQQXa5eM6YNhAk916/onAd8lOS12H1lcvdI12B4dBQyJ807lgiHYYWu/M3lpnF9qU73ZMjHyppapF8rlorzVbZX8fbaVzt5PmDuWAREt0Q6K1aCF92922D9p7bIH5u+BVX73wbJd8JkoztUmeRhsklH6ZUAeHAUKiJTrsIXAFWgf9ZrI3VOhG8+RvYuVWFyJlPQNFgynvKwQnr1wL7HDS3KFckHiiQ5bV+ypEau8STmvQXuP3I7/2HsTYHAK0c8fJaN/zM8h2o/XRv//VFkdyh3JCWRAd9pCyCu2h/W20u4WNXpQ9dh/a32od0XLYK1ECzUlom5zT8W/DlNlO6huYLDpHdIdyQtkQHbIk8EcR2XNtafw22hNuGdpscSNy13WhwaIeqeSHo91L5qKtnqoDnrUFbWz4Q4yrz5HcodxQVkSHLLJPQAEsl6Kc9VzoQVbydvN3JQqprSd4s/kMulDQzndQOG6fI7hDuaLsiA5ZZK8CTkBz93n4d3otBJ1or7Ifod1VW8FJcYfyRlkSPQOL8NVox9ALgY8h33t9jEf1oN1RlwIPo+2Dt2dOOpI7lDvKmugQaDkfi7YgnoOCbKYgSV+PFrHoRSmlOxG5VwO/RXP6DVhrrjuCO3xQUPZEtxFA+kq09twIlBRjE323+fnY7Aju8EHDB4roNuJGyjlyOzg4ODg4ODg4ODg4ODg4ODg4ODg4FI0/AC9xpz2Ecc2oAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA5LTEwVDExOjI0OjE4LTA0OjAw4hkrlwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOS0xMFQxMToyNDoxOC0wNDowMJNEkysAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/google-pay.5f0a9052.svg\";","module.exports = __webpack_public_path__ + \"static/media/apple-pay.ba87856d.svg\";","import React from 'react';\r\nimport 'Styles/Modal.scss';\r\n\r\n\r\nfunction Modal(props) {\r\n return (\r\n
props.viewModal(false)}>\r\n
e.stopPropagation()}>\r\n {props.children}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Modal;\r\n","import React from 'react';\r\nexport const GlobalContext = React.createContext();\r\n","export function getCookie(name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ') c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n}\r\n\r\nexport function setCookie(name,value,days) {\r\n var expires = \"\";\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days*24*60*60*1000));\r\n expires = \"; expires=\" + date.toUTCString();\r\n }\r\n document.cookie = name + \"=\" + (value || \"\") + expires + \"; path=/\";\r\n}\r\n\r\n\r\nexport function deleteCookie(name='token')\r\n{\r\n document.cookie = name + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;\";\r\n}\r\n\r\nexport default {getCookie, setCookie, deleteCookie}\r\n\r\n\r\n//https://stackoverflow.com/questions/33178843/es6-export-default-with-multiple-functions-referring-to-each-other","export function isItTestEnvironment() {\r\n return (window.location.href.indexOf('http://localhost') > -1 || window.location.href.indexOf('http://happy-table-admin-test') > -1 || window.location.href.indexOf('https://testadmin') > -1) ? true : false;\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport { getCookie } from '../Util/Cookie';\r\nimport { isItTestEnvironment } from '../Util/TestOrProd';\r\n\r\nexport default function useFetch(initialURL) {\r\n\r\n const [response, setData] = useState([]);\r\n const globalContext = useContext(GlobalContext);\r\n const [fetchParams, fetchData] = useState({ url: '', method: '', postData: {}, headers: [], addTokenHeader: false, multipart: false, returnRawResponse: false, hideMessageBox: true })\r\n\r\n useEffect(() => {\r\n\r\n \r\n\r\n const fetchData = async () => {\r\n let headers;\r\n\r\n if (!fetchParams.multipart) {\r\n headers = {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json',\r\n };\r\n }\r\n else {\r\n headers = {\r\n 'Accept': 'multipart/form-data',\r\n 'Content-Type': 'multipart/form-data',\r\n };\r\n }\r\n\r\n let authValue = 'Bearer ' + getCookie('token');\r\n if (fetchParams.addTokenHeader) {\r\n headers = {\r\n ...headers,\r\n 'Authorization': authValue\r\n };\r\n }\r\n\r\n if (fetchParams.headers != null) {\r\n fetchParams.headers.map(header =>\r\n headers[header.name] = header.value\r\n )\r\n }\r\n\r\n let bodyData = null;\r\n if (fetchParams.method == 'POST' || fetchParams.method == 'PUT' || fetchParams.method == 'DELETE') {\r\n if (fetchParams.multipart) {\r\n bodyData = fetchParams.postData;\r\n } else {\r\n bodyData = JSON.stringify(fetchParams.postData);\r\n }\r\n }\r\n\r\n\r\n\r\n if (fetchParams.url != '') {\r\n\r\n let apiDomain = isItTestEnvironment() ? 'https://testapi.happytable.app' : 'https://api.happytable.app';\r\n\r\n\r\n let requestToURL = apiDomain + fetchParams.url;\r\n //requestToURL = 'http://ec2-35-167-199-128.us-west-2.compute.amazonaws.com' + fetchParams.url;\r\n fetch(\r\n requestToURL,\r\n {\r\n method: fetchParams.method,\r\n mode: 'cors',\r\n headers: headers,\r\n body: bodyData,\r\n }\r\n )\r\n .then(\r\n response => {\r\n if (fetchParams.returnRawResponse) { //bazen response daki error code lari ayiklamak icin raw response lazim oluyor\r\n setData(response);\r\n }\r\n else {\r\n if (response.ok) {\r\n response.json().then(\r\n responseJson => setData(responseJson)\r\n ).catch(\r\n err =>\r\n setData('no response' + Math.random())\r\n )\r\n }\r\n else {\r\n\r\n console.log(response);\r\n let msg = 'response status: ' + response.status + ' status text: ' + response.statusText;\r\n\r\n\r\n setData(false);\r\n\r\n let fetchUrl = fetchParams.url;\r\n if (response.status == 401) {\r\n console.log(fetchUrl);\r\n if (fetchUrl.indexOf('auth/login') > -1) {\r\n console.log('loginden geliyor');\r\n setData({ fail: true });\r\n }\r\n else {\r\n console.log(fetchUrl);\r\n console.log(fetchUrl.indexOf('/login') > -1);\r\n console.log('burada');\r\n window.location = '/Login';\r\n }\r\n }\r\n\r\n }\r\n }\r\n \r\n if (fetchParams.doNotHideMessageBox == undefined) { \r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }\r\n }\r\n\r\n )\r\n .catch(\r\n error => {\r\n console.log(error);\r\n let errorMessage = \"Check your internet connection please.If it is not about the internet connection, please contact support with this message: \" + error;\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: errorMessage, showButton: true } });\r\n setData([]);\r\n }\r\n );\r\n\r\n }\r\n }\r\n fetchData();\r\n }\r\n , [fetchParams]);\r\n\r\n return [response, fetchData];\r\n\r\n}","import React,{useEffect, useState} from 'react';\r\nimport useFetch from '../CustomHooks/useFetch';\r\n\r\nimport Logo from '../Images/HappyTableLogo8.png';\r\nimport '../Styles/Login.scss';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\n\r\n\r\n\r\n\r\n\r\nexport default function PasswordChanger () {\r\n\r\n const [response, fetchData] = useFetch();\r\n const [status, setStatus] = useState('Verifying');\r\n \r\n const [oldPassword, setOldPassword] = useState('');\r\n const [newPassword, setNewPassword] = useState('');\r\n const [newPasswordAgain, setNewPasswordAgain] = useState('');\r\n const [errorMessages, setErrorMessages] = useState({email:'',yourName: '', restaurantName : '', oldPassword : '', newPassword :'', newPasswordAgain : ''});\r\n\r\n const setErrorMessage = (key, value) =>{\r\n setErrorMessages( {...errorMessages, [key] : value});\r\n }\r\n\r\n\r\n useEffect(\r\n ()=> {\r\n async function f() {\r\n if(response != null) {\r\n if(response.length != 0) {\r\n if(response){ \r\n setStatus('Verified'); \r\n } else {\r\n setStatus('Rejected'); \r\n }\r\n }\r\n }\r\n }\r\n f();\r\n },[response]\r\n )\r\n\r\n const submitForm = async (e) => {\r\n \r\n e.preventDefault();\r\n let validated = true;\r\n\r\n if (newPassword != newPasswordAgain) {\r\n setErrorMessage('newPasswordAgain', 'Re-enter your password confirmation so it matches your password.');\r\n validated = false;\r\n }\r\n else {\r\n setErrorMessage('newPasswordAgain', '');\r\n }\r\n\r\n \r\n if(validated) {\r\n fetchData(\r\n {\r\n url: '/admin/auth/change-password',\r\n method: 'PUT',\r\n postData: {\r\n oldPassword: oldPassword,\r\n newPassword: newPassword,\r\n newPasswordRetype: newPasswordAgain,\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n}\r\n \r\n return (\r\n
\r\n
\r\n {response.length == 0 ?\r\n \r\n
Change password
\r\n
Please type your new password twice.
\r\n setOldPassword(e.target.value)} helperText={errorMessages.oldPassword} error={errorMessages.oldPassword == ''? false : true}/>\r\n setNewPassword(e.target.value)} helperText={errorMessages.newPassword} error={errorMessages.newPassword == ''? false : true}/>\r\n setNewPasswordAgain(e.target.value)} helperText={errorMessages.newPasswordAgain} error={errorMessages.newPasswordAgain == ''? false : true}/>\r\n \r\n
\r\n : null}\r\n {response.length != 0 && response ?\r\n
We have sucessfully changed your password.
\r\n : null}\r\n {response.length != 0 && !response ?\r\n
Can not change your password. Please contact support.
\r\n : null}\r\n
\r\n
\r\n )\r\n}\r\n\r\nfunction LoginLink(){\r\n return (\r\n \r\n Login\r\n \r\n )\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\n\r\n\r\n\r\nexport default function useGuiTranslations(props) {\r\n const globalContext = useContext(GlobalContext);\r\n\r\n const translations = {\r\n \"0\": {\r\n en: \"\", \r\n tr: \"\",\r\n },\r\n \"1\": {\r\n en: \"orders\", \r\n tr: \"siparişler\",\r\n },\r\n \"2\": {\r\n en: \"open orders\", \r\n tr: \"açık siparişler\",\r\n },\r\n \"3\": {\r\n en: \"order History\", \r\n tr: \"geçmiş siparişler\",\r\n },\r\n \"4\": {\r\n en: \"menu\", \r\n tr: \"menü\",\r\n },\r\n \"5\": {\r\n en: \"categories\", \r\n tr: \"kategoriler\",\r\n },\r\n \"6\": {\r\n en: \"food & drinks\", \r\n tr: \"yemekler ve içecekler\",\r\n },\r\n \"7\": {\r\n en: \"option groups\", \r\n tr: \"ekstralar\",\r\n },\r\n \"8\": {\r\n en: \"settings\", \r\n tr: \"ayarlar\",\r\n },\r\n \"9\": {\r\n en: \"payment\", \r\n tr: \"ödeme\",\r\n },\r\n \"10\": {\r\n en: \"tables\", \r\n tr: \"masalar\",\r\n },\r\n \"11\": {\r\n en: \"restaurant info\", \r\n tr: \"restoran bilgileri\",\r\n },\r\n \"12\": {\r\n en: \"deliver & collect\", \r\n tr: \"teslimat biçimleri\",\r\n },\r\n \"13\": {\r\n en: \"advanced settings\", \r\n tr: \"gelişmiş ayarlar\",\r\n },\r\n \"14\": {\r\n en: \"user\", \r\n tr: \"kullanıcı\",\r\n },\r\n \"15\": {\r\n en: \"change password\", \r\n tr: \"sifre degistir\",\r\n },\r\n \"16\": {\r\n en: \"sign out\", \r\n tr: \"oturumu kapat\",\r\n },\r\n \"17\": {\r\n en: \"remaining days for your trial:\", \r\n tr: \"denemeniz için kalan gün:\",\r\n },\r\n \"18\": {\r\n en: \"click to subscribe\", \r\n tr: \"abonelik için klikleyin\",\r\n },\r\n \"19\": {\r\n en: \"open customer site\", \r\n tr: \"müşteri sitesini açın\",\r\n },\r\n \"20\": {\r\n en: \"no orders yet\", \r\n tr: \"henüz sipariş yok\",\r\n },\r\n \"21\": {\r\n en: \"order at table\", \r\n tr: \"masadan sipariş\",\r\n },\r\n \"22\": {\r\n en: \"click to collect\", \r\n tr: \"gel al\",\r\n },\r\n \"23\": {\r\n en: \"delivery\", \r\n tr: \"teslimat\",\r\n },\r\n \"24\": {\r\n en: \"table no\", \r\n tr: \"masa no\",\r\n },\r\n \"25\": {\r\n en: \"order no\", \r\n tr: \"sipariş no\",\r\n },\r\n \"26\": {\r\n en: \"product\", \r\n tr: \"ürün\",\r\n },\r\n \"27\": {\r\n en: \"price\", \r\n tr: \"fiyat\",\r\n },\r\n \"28\": {\r\n en: \"served\", \r\n tr: \"servis edildi\",\r\n },\r\n \"29\": {\r\n en: \"total\", \r\n tr: \"toplam\",\r\n },\r\n \"30\": {\r\n en: \"Order date\", \r\n tr: \"Sipariş tarihi\",\r\n },\r\n \"31\": {\r\n en: \"delivery type\", \r\n tr: \"teslimat biçimi\",\r\n },\r\n \"32\": {\r\n en: \"time\", \r\n tr: \"saat\",\r\n },\r\n \"33\": {\r\n en: \"available\", \r\n tr: \"satışa açık\",\r\n },\r\n \"34\": {\r\n en: \"category name\", \r\n tr: \"kategori adı\",\r\n },\r\n \"35\": {\r\n en: \"actions\", \r\n tr: \"işlemler\",\r\n },\r\n \"36\": {\r\n en: \"food or drink name\", \r\n tr: \"yemek veya içecek ismi\",\r\n },\r\n \"37\": {\r\n en: \"description\", \r\n tr: \"tanım\",\r\n },\r\n \"38\": {\r\n en: \"description\", \r\n tr: \"tanım\",\r\n },\r\n \"39\": {\r\n en: \"product group\", \r\n tr: \"ürün grubu\",\r\n },\r\n \"40\": {\r\n en: \"add option group\", \r\n tr: \"ekstra ekle\",\r\n },\r\n \"41\": {\r\n en: \"picture\", \r\n tr: \"resim\",\r\n },\r\n \"42\": {\r\n en: \"add picture\", \r\n tr: \"resim ekle\",\r\n },\r\n \"43\": {\r\n en: \"delete picture\", \r\n tr: \"resim sil\",\r\n },\r\n \"44\": {\r\n en: \"cancel\", \r\n tr: \"iptal\",\r\n },\r\n \"45\": {\r\n en: \"save\", \r\n tr: \"kaydet\",\r\n },\r\n \"46\": {\r\n en: \"option group name\", \r\n tr: \"ekstra grubu adı\",\r\n },\r\n \"47\": {\r\n en: \"allow multiples of an option\", \r\n tr: \"ekstrayı 1 kereden fazla ekleyebilsin mi?\",\r\n },\r\n \"48\": {\r\n en: \"How many options can the customer choose?\", \r\n tr: \"Müşteri kaç farklı ekstra seçebilir?\",\r\n },\r\n \"49\": {\r\n en: \"from\", \r\n tr: \"'dan başlayarak\",\r\n },\r\n \"50\": {\r\n en: \"to\", \r\n tr: \"'a kadar\",\r\n },\r\n \"51\": {\r\n en: \"options\", \r\n tr: \"ekstralar\",\r\n },\r\n \"52\": {\r\n en: \"add option\", \r\n tr: \"ekstra ekle\",\r\n },\r\n \"53\": {\r\n en: \"option name\", \r\n tr: \"ekstra adı\",\r\n },\r\n \"54\": {\r\n en: \"please fill option group name\", \r\n tr: \"ekstra adı\",\r\n },\r\n \"55\": {\r\n en: \"please enter name\", \r\n tr: \"isim girin\",\r\n },\r\n \"56\": {\r\n en: \"please enter name\", \r\n tr: \"fiyat girin\",\r\n },\r\n \"57\": {\r\n en: \"table name\", \r\n tr: \"masa adı\",\r\n },\r\n \"58\": {\r\n en: \"QR Code or URL for\", \r\n tr: \"Kare kod veya URL: \",\r\n },\r\n \"59\": {\r\n en: \"Print QR Code\", \r\n tr: \"Kare kodu yazdır\",\r\n },\r\n \"60\": {\r\n en: \"Restaurant name\", \r\n tr: \"Restoran adı\",\r\n },\r\n \"61\": {\r\n en: \"Phone number\", \r\n tr: \"Telefon no\",\r\n },\r\n \"62\": {\r\n en: \"Language\", \r\n tr: \"Dil\",\r\n },\r\n \"63\": {\r\n en: \"Time zone\", \r\n tr: \"Zaman dilimi\",\r\n },\r\n \"64\": {\r\n en: \"Logo will be used on customer ordering app with a maximum width of 120 pixels\", \r\n tr: \"Logo müşteri ekranında genişliği 120 piksel olacak şekilde görüntülenecek\",\r\n },\r\n \"65\": {\r\n en: \"Change logo\", \r\n tr: \"Logoyu değiştir\",\r\n },\r\n \"66\": {\r\n en: \"Restaurant info\", \r\n tr: \"Restoran bilgileri\",\r\n },\r\n \"67\": {\r\n en: \"Order at table\", \r\n tr: \"Masadan sipariş\",\r\n },\r\n \"68\": {\r\n en: \"Click to collect\", \r\n tr: \"Gel-al sipariş\",\r\n },\r\n \"69\": {\r\n en: \"Average time to collect (minutes)\", \r\n tr: \"Gel-al ortalama süresi (dakika)\",\r\n },\r\n \"70\": {\r\n en: \"Opening times\", \r\n tr: \"Açık olan saatler\",\r\n },\r\n \"71\": {\r\n en: \"open\", \r\n tr: \"açılış\",\r\n },\r\n \"72\": {\r\n en: \"close\", \r\n tr: \"kapanış\",\r\n },\r\n \"73\": {\r\n en: \"close\", \r\n tr: \"kapanış\",\r\n },\r\n\r\n \"74\": {\r\n en: \"monday\", \r\n tr: \"pazartesi\",\r\n },\r\n \"75\": {\r\n en: \"tuesday\", \r\n tr: \"salı\",\r\n },\r\n \"76\": {\r\n en: \"wednesday\", \r\n tr: \"çarşamba\",\r\n },\r\n \"77\": {\r\n en: \"thursday\", \r\n tr: \"perşembe\",\r\n },\r\n \"78\": {\r\n en: \"friday\", \r\n tr: \"cuma\",\r\n },\r\n \"79\": {\r\n en: \"saturday\", \r\n tr: \"cumartesi\",\r\n },\r\n \"80\": {\r\n en: \"sunday\", \r\n tr: \"pazar\",\r\n },\r\n \"81\": {\r\n en: \"Multi-language\", \r\n tr: \"Çoklu-dil\",\r\n },\r\n \"82\": {\r\n en: \"Enable or disable multi-lang on the customer app.\", \r\n tr: \"Çoklu-dil desteğini müşteri uygulaması üzerinde açın veya kapatın.\",\r\n },\r\n \"83\": {\r\n en: \"Subscription\", \r\n tr: \"Abonelik\",\r\n },\r\n \"84\": {\r\n en: \"Extend or end your subscription\", \r\n tr: \"Aboneliğinizi uzatın veya sonlandırın\",\r\n },\r\n \"85\": {\r\n en: \"Colors and fonts\", \r\n tr: \"Renkler ve fontlar\",\r\n },\r\n \"86\": {\r\n en: \"Change colors and fonts on the customer app.\", \r\n tr: \"Müşteri uygulaması üzerindeki renkleri ve fontları değiştirin.\",\r\n },\r\n \"87\": {\r\n en: \"To enable the Multi-language please select the base and target languages below and click enable.\", \r\n tr: \"Çoklu-dil'i etkinleştirmek için bir varsayılan dil ve çevrilecek dilleri seçin ve etkinleştir'e klikleyin.\",\r\n },\r\n \"88\": {\r\n en: \"Select base language\", \r\n tr: \"Varsayılan dili seçin\",\r\n },\r\n \"89\": {\r\n en: \"base language\", \r\n tr: \"Varsayılan dil\",\r\n },\r\n \"90\": {\r\n en: \"select target languages\", \r\n tr: \"hedef dilleri seçin\",\r\n },\r\n \"91\": {\r\n en: \"enable multi-language\", \r\n tr: \"çoklu-dil'i etkinleştirin\",\r\n },\r\n \"92\": {\r\n en: \"Multi-language is enabled. You can change the languages using the form below.\", \r\n tr: \"çoklu-dil etkin. Dilleri değiştirmek isterseniz aşağıdaki formu kullanın.\",\r\n },\r\n \"93\": {\r\n en: \"disable multi-language\", \r\n tr: \"çoklu-dil'i kapatın\",\r\n },\r\n \"94\": {\r\n en: \"Primary color\", \r\n tr: \"Birincil renk\",\r\n },\r\n \"95\": {\r\n en: \"Secondary color\", \r\n tr: \"ikincil renk\",\r\n },\r\n \"96\": {\r\n en: \"Primary font\", \r\n tr: \"Birincil font\",\r\n },\r\n \"97\": {\r\n en: \"Secondary font\", \r\n tr: \"ikincil font\",\r\n },\r\n \"98\": {\r\n en: \"Primary text color\", \r\n tr: \"Birincil metin rengi\",\r\n },\r\n \"99\": {\r\n en: \"Secondary text color\", \r\n tr: \"ikincil metin rengi\",\r\n },\r\n \"100\": {\r\n en: \"Background color\", \r\n tr: \"Arkaplan rengi\",\r\n },\r\n \"101\": {\r\n en: \"Choose subscription package\", \r\n tr: \"Abonelik paketini seçin\",\r\n },\r\n \"102\": {\r\n en: \"Subscription\", \r\n tr: \"Abonelik\",\r\n },\r\n \"103\": {\r\n en: \"You are subscribed. Your next renewal date is:\", \r\n tr: \"Aboneliğiniz devam ediyor. Bir sonraki yenileme tarihi:\",\r\n },\r\n \"104\": {\r\n en: \"Days left until your trial end:\", \r\n tr: \"Denemenizin bitmesine kalan gün:\",\r\n },\r\n \"105\": {\r\n en: \"Subscribe now!\", \r\n tr: \"Abone olun\",\r\n },\r\n \"106\": {\r\n en: \"Your trial or subscription has expired.\", \r\n tr: \"Deneme lisansınız veya aboneliğiniz sona erdi\",\r\n },\r\n \"107\": {\r\n en: \"Pay with credit card\", \r\n tr: \"Kredi kartı ile ödeme\",\r\n },\r\n \"108\": {\r\n en: \"Pay later\", \r\n tr: \"Sonradan ödeme\",\r\n },\r\n \"109\": {\r\n en: \"Pay at table\", \r\n tr: \"Masada öde\",\r\n },\r\n \"110\": {\r\n en: \"Currency\", \r\n tr: \"Para birimi\",\r\n },\r\n \"111\": {\r\n en: \"Customer calling\", \r\n tr: \"Müşteri çağırıyor\",\r\n },\r\n \"112\": {\r\n en: \"Paynet configuration\", \r\n tr: \"Paynet ayarları\",\r\n },\r\n \"113\": {\r\n en: \"Search by table no\", \r\n tr: \"Masa numarası ile arayın\",\r\n },\r\n \"114\": {\r\n en: \"Are you sure you want to delete this row?\", \r\n tr: \"Silmek istediğinize emin misiniz?\",\r\n },\r\n \"115\": {\r\n en: \"Add category\", \r\n tr: \"Kategori ekle\",\r\n },\r\n \"116\": {\r\n en: \"Delete\", \r\n tr: \"Sil\",\r\n },\r\n \"117\": {\r\n en: \"Edit\", \r\n tr: \"Değiştir\",\r\n },\r\n \"118\": {\r\n en: \"Move down\", \r\n tr: \"Aşağı\",\r\n },\r\n \"119\": {\r\n en: \"Move up\", \r\n tr: \"Yukarı\",\r\n },\r\n \"120\": {\r\n en: \"Getting categories\", \r\n tr: \"Kategoriler getiriliyor\",\r\n },\r\n \"121\": {\r\n en: \"Mark as paid\", \r\n tr: \"Ödendi\",\r\n },\r\n \"122\": {\r\n en: \"Have you got the payment?\", \r\n tr: \"Ödemeyi aldınız mı?\",\r\n },\r\n \"123\": {\r\n en: \"OK\", \r\n tr: \"Tamam\",\r\n },\r\n \"124\": {\r\n en: \"New order notification\", \r\n tr: \"Yeni sipariş uyarısı\",\r\n },\r\n \"125\": {\r\n en: \"Enable notifications to get visual warning when a new order received\", \r\n tr: \"Yeni bir sipariş geldiğinde görsel bir uyarı alabilmek için bildirimleri etkinleştirin\",\r\n },\r\n \"126\": {\r\n en: \"Enable\", \r\n tr: \"Etkinleştir\",\r\n },\r\n \"127\": {\r\n en: \"Enable\", \r\n tr: \"Etkinleştir\",\r\n },\r\n \"128\": {\r\n en: `You have not enabled new order notifications. To enable first click the \"Enable\" button then click \"Allow\" button on the second prompt.`, \r\n tr: `Yeni sipariş uyarısını henüz etkinleştirmemişsiniz. Ekinleştirmek için önce aşağıdaki \"Etkinleştir\" butonuna sonra da gelecek uyarı üzerinde \"İzin ver\" butonuna klikleyiniz`,\r\n },\r\n \"129\": {\r\n en: `You have disabled new order notifications. To enable please first click the lock icon on the address bar as seen on the picture below. Than click \"Ask (default)\" and refresh the page.`, \r\n tr: `Yeni sipariş uyarısını kapatmışsınız. Açmak için önce aşağıdaki resimde olduğu gibi adres çubuğundaki kilit ikonuna klikleyin, sonra açılan ekranda \"Sor (varsayılan)\" 'a klilkledikten sonra sayfayı güncelleyin`,\r\n },\r\n \"130\": {\r\n en: `You have enabled new order notifications. You should be receiving push notifications similar to below when a new order is received.`, \r\n tr: `Yeni sipariş bildirimleri açık durumda. Yeni bir sipariş geldiginde aşağıdaki resimde olduğu gibi bildirim alıyor olmanız gerekir.`,\r\n },\r\n\r\n }\r\n\r\n\r\n const translateGuiElement = (textNo) => {\r\n\r\n return (translations[textNo][globalContext.globalState.selectedGuiLanguage]);\r\n }\r\n\r\n return [translateGuiElement];\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useGuiTranslations from '../Components/MultiLanguage/useGuiTranslations';\r\n\r\nexport default function CustomerSite(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [customerSiteUrl, setCustomerSiteUrl] = useState('');\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n //console.log(globalContext.globalState.customerSettings);\r\n if (globalContext.globalState.customerSettings.domainAlias) {\r\n let location = 'https://app.happytable.app/';\r\n\r\n if (window.location.href.indexOf(\"https://testadmin\") == 0) {\r\n location = 'https://testapp.happytable.app/';\r\n }\r\n if (window.location.href.indexOf(\"http://localhost\") == 0) {\r\n location = 'http://localhost:3000/';\r\n }\r\n console.log(globalContext.globalState.customerSettings.domainAlias);\r\n setCustomerSiteUrl(location + globalContext.globalState.customerSettings.domainAlias);\r\n }\r\n }, [globalContext.globalState.customerSettings.domainAlias]\r\n )\r\n\r\n const openCustomerSite = () => {\r\n window.open(customerSiteUrl);\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n open_in_new\r\n \r\n \r\n {translateGui(19)}\r\n \r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n position: 'fixed',\r\n bottom: 0,\r\n padding: '10px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '& a': {\r\n textDecoration: 'none',\r\n color: '#424141',\r\n }\r\n }\r\n});\r\n","import React,{useEffect, useState, useContext} from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useFetch from 'CustomHooks/useFetch';\r\n\r\nexport default function useCustomerSettings (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n \r\n\r\n useEffect(\r\n () => {\r\n getCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n method: 'GET',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n return getCustomerSettingsHookResponse;\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Link from '@material-ui/core/Link';\r\nimport { useHistory } from 'react-router-dom';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport useGuiTranslations from '../Components/MultiLanguage/useGuiTranslations';\r\n\r\nexport default function TrialWarning(props) {\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const {accountStatus, remainingTimeInDays} = getCustomerSettingsHookResponse;\r\n const [translateGui] = useGuiTranslations();\r\n\r\n return ( \r\n \r\n {\r\n accountStatus == 'Trial' ?\r\n
\r\n \r\n hhh\r\n {history.push('/Subscription'); props.closeMenu();}} style={{ marginRight: '2px' }}>\r\n {translateGui(17)} {remainingTimeInDays}

{translateGui(18)}.\r\n \r\n
\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n position: 'fixed',\r\n bottom: '30px',\r\n padding: '10px',\r\n display: 'none',\r\n alignItems: 'flex-start',\r\n color: 'red',\r\n fontSize: '10px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n visibility: 'hidden',\r\n }\r\n});","import React, { useContext, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Modal from './Modal';\r\nimport '../Styles/MenuMobile.scss';\r\nimport { Link as RouterLink, useHistory } from 'react-router-dom';\r\nimport PasswordChanger from './PasswordChanger';\r\nimport Link from '@material-ui/core/Link';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport {deleteCookie} from '../Util/Cookie';\r\n//import {MenuContext} from '../Contexts/MenuContext';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport {withRouter} from 'react-router-dom';\r\nimport CustomerSite from './CustomerSite';\r\nimport TrialWarning from './TrialWarning';\r\nimport useGuiTranslations from '../Components/MultiLanguage/useGuiTranslations';\r\n\r\nfunction MenuMobile(props) {\r\n const classes = useStyles();\r\n const globalContext = useContext(GlobalContext);\r\n const [changePasswordOn, setChangePasswordOn] = useState(false);\r\n const history = useHistory();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const setMenu = (menuPath) => {\r\n closeMenu();\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: menuPath,\r\n }\r\n )\r\n }\r\n\r\n\r\n const closeMenu = ()=> {\r\n if (props.closeMenu) {\r\n props.closeMenu();\r\n }\r\n }\r\n\r\n const signOut = () => {\r\n //delete cookie or set the expiry time to zero\r\n deleteCookie();\r\n closeMenu();\r\n //and send the log on\r\n //window.location = '/Login';\r\n history.push('/Login');\r\n\r\n }\r\n \r\n return (\r\n \r\n {(props.location.pathname != '/Login' && props.location.pathname != '/') ?\r\n
\r\n
\r\n\r\n close\r\n
\r\n\r\n \r\n
\r\n \r\n {translateGui(1)}\r\n \r\n
\r\n
\r\n \r\n notification_important\r\n {translateGui(2)} \r\n \r\n
\r\n
\r\n \r\n history\r\n {translateGui(3)}\r\n \r\n
\r\n
\r\n \r\n money_off\r\n {translateGui(109)}\r\n \r\n
\r\n\r\n
\r\n \r\n {translateGui(4)}\r\n \r\n
\r\n
\r\n \r\n category\r\n {translateGui(5)}\r\n \r\n
\r\n
\r\n \r\n fastfood\r\n {translateGui(6)}\r\n \r\n
\r\n
\r\n \r\n rule\r\n {translateGui(7)}\r\n \r\n
\r\n
\r\n \r\n {translateGui(8)}\r\n \r\n
\r\n
\r\n \r\n settings_applications\r\n {translateGui(9)}\r\n \r\n
\r\n
\r\n \r\n restaurant\r\n {translateGui(10)}\r\n \r\n
\r\n
\r\n \r\n mms\r\n {translateGui(11)}\r\n \r\n
\r\n
\r\n \r\n two_wheeler\r\n {translateGui(12)}\r\n \r\n
\r\n \r\n
\r\n \r\n settings\r\n {translateGui(13)}\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n {translateGui(14)}\r\n \r\n
\r\n
\r\n setChangePasswordOn(true)}>\r\n restaurant\r\n {translateGui(15)}\r\n \r\n
\r\n
\r\n \r\n mms\r\n {translateGui(16)}\r\n \r\n
\r\n
\r\n \r\n \r\n {changePasswordOn ?\r\n \r\n \r\n \r\n : null}\r\n\r\n
\r\n : null\r\n }\r\n
\r\n );\r\n}\r\nconst useStyles = makeStyles({\r\n blueMenuItem: {\r\n color: '#069cff',\r\n '& span': {\r\n //borderBottom: '1px solid',\r\n }\r\n },\r\n});\r\n\r\nexport default withRouter(MenuMobile);\r\n","import React from 'react';\r\nimport {createMuiTheme,ThemeProvider} from \"@material-ui/core/styles\";\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: '#5dbcd2',\r\n //main: '#1b6a65',\r\n //main: '#6aa84f',\r\n },\r\n secondary: {\r\n main: '#424141',\r\n //main: '#666666',\r\n },\r\n },\r\n \r\n typography: {\r\n fontFamily: [\r\n /* 'Ubuntu Condensed',\r\n '-apple-system',\r\n 'BlinkMacSystemFont',\r\n '\"Segoe UI\"',*/\r\n 'Roboto',\r\n '\"Helvetica Neue\"',\r\n 'Arial',\r\n 'sans-serif',\r\n '\"Apple Color Emoji\"',\r\n '\"Segoe UI Emoji\"',\r\n '\"Segoe UI Symbol\"',\r\n ].join(','),\r\n },\r\n});\r\n\r\n\r\nfunction MaterialThemeProvider(props) {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport default MaterialThemeProvider;\r\n","export function validateEmail(email) \r\n{\r\n var re2 = /^\\S+@\\S+$/ ;\r\n return re2.test(email);\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport '../Styles/Login.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from '../CustomHooks/useFetch';\r\nimport { validateEmail } from '../Util/ValidateEmail';\r\nimport { setCookie, getCookie } from '../Util/Cookie';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\n\r\n\r\nfunction Login() {\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [response, fetchData] = useFetch();\r\n const globalContext = useContext(GlobalContext);\r\n const history = useHistory();\r\n const [errorMessages, setErrorMessages] = useState({ email: '', yourName: '', restaurantName: '', password: '', passwordAgain: '' });\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n }\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 0,\r\n b: 0\r\n },\r\n }\r\n )\r\n \r\n }\r\n , []\r\n )\r\n \r\n\r\n const setErrorMessage = (key, value) => {\r\n setErrorMessages({ ...errorMessages, [key]: value });\r\n }\r\n\r\n const submitForm = async (e) => {\r\n //e.preventDefault();\r\n\r\n let validated = true;\r\n\r\n if (!validateEmail(email)) {\r\n setErrorMessage('email', 'Please enter a valid email.');\r\n validated = false;\r\n }\r\n else {\r\n setErrorMessage('email', '');\r\n }\r\n\r\n if (validated) {\r\n fetchData(\r\n {\r\n url: '/admin/auth/login',\r\n method: 'POST',\r\n postData: {\r\n username: email,\r\n password: password,\r\n },\r\n }\r\n )\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n /*\r\n globalContext.dispatchMethod({ type: 'SET_IS_LOGIN', value: true, });\r\n */\r\n\r\n }, []\r\n )\r\n\r\n const trimEmail = (email) => {\r\n let trimmedEmail = email.substring(0, email.indexOf('@') + 1);\r\n console.log(trimEmail);\r\n return trimmedEmail;\r\n }\r\n\r\n useEffect(\r\n () => {\r\n async function f() {\r\n console.log(response);\r\n if (response.fail == true) {\r\n console.log('password hateli');\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: guiLanguage=='tr'? 'Parola veya kullanıcı adı hatalı' : 'Wrong username or password', showButton: true } });\r\n }\r\n else {\r\n if (response != null) {\r\n if (response.length != 0) {\r\n if (response) {\r\n setCookie('token', response.tokenString, 30);\r\n\r\n\r\n /*\r\n let customerSettings = {\r\n email: trimEmail(response.user.email),\r\n alias: response.customerAlias,\r\n accountStatus: response.accountStatus,\r\n remainingTimeInDays: Math.floor(response.remainingTimeInDays),\r\n };\r\n\r\n \r\n \r\n */\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_EMAIL',\r\n value: trimEmail(response.user.email),\r\n });\r\n \r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_ALIAS',\r\n value: response.customerAlias,\r\n });\r\n\r\n\r\n \r\n\r\n globalContext.dispatchMethod({ type: 'SET_IS_LOGIN', value: false, });\r\n \r\n getCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n method: 'GET',\r\n addTokenHeader: true,\r\n }\r\n )\r\n\r\n\r\n }\r\n else {\r\n console.log('incorrect username or password!')\r\n }\r\n }\r\n }\r\n }\r\n }\r\n f();\r\n }, [response]\r\n )\r\n\r\n useEffect (\r\n () => {\r\n if(getCustomerSettingsHookResponse.address) {\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_CUSTOMER_SETTINGS',\r\n value: { ...getCustomerSettingsHookResponse },\r\n });\r\n\r\n localStorage.setItem('ht_adm_cs', JSON.stringify(getCustomerSettingsHookResponse));\r\n\r\n history.push('/OpenOrders');\r\n }\r\n },[getCustomerSettingsHookResponse]\r\n )\r\n\r\n const handleKeyPress = (e) => {\r\n if (e.key == 'Enter') {\r\n submitForm();\r\n }\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n setEmail(e.target.value)} helperText={errorMessages.email} error={errorMessages.email == '' ? false : true} />\r\n setPassword(e.target.value)} helperText={errorMessages.password} error={errorMessages.password == '' ? false : true} />\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n {guiLanguage == 'tr' ? 'Üye değil misiniz?' : 'Not a customer?'} \r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default Login;\r\n\r\n\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\nimport Link from '@material-ui/core/Link';\r\n\r\n\r\nexport default function MessageBoxWithAction(props) {\r\n const classes = useStyles();\r\n return (\r\n
\r\n
\r\n
\r\n {props.children}\r\n
\r\n
\r\n {!props.doNotShowCancelButton ?\r\n \r\n Cancel\r\n \r\n : null\r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n\r\n },\r\n outerWrapper: {\r\n zIndex: '1000',\r\n position: 'fixed',\r\n top: 0,\r\n width: '100vw',\r\n height: '100vh',\r\n backgroundColor: 'rgba(142, 137, 137, 0.7)',\r\n left: 0,\r\n },\r\n innerWrapper: {\r\n margin: 'auto',\r\n padding: '20px',\r\n borderRadius: '5px',\r\n marginTop: '100px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'white',\r\n width: '300px',\r\n },\r\n buttons: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n marginTop: '20px',\r\n }\r\n});","export function capitalizeFirstLetter(str) {\r\n return str.charAt(0).toUpperCase() + str.slice(1);\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport useGuiTranslations from './useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function DefaultLanguageSelector(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [translateGui] = useGuiTranslations();\r\n const classes = useStyles();\r\n const languages = [\r\n { code: 'en', name: 'English' },\r\n { code: 'de', name: 'Deutsch' },\r\n { code: 'fr', name: 'Français' },\r\n { code: 'es', name: 'Español' },\r\n { code: 'zh', name: '中文' },\r\n { code: 'ru', name: 'Русский' },\r\n { code: 'ja', name: '日本語' },\r\n { code: 'it', name: 'İtaliano' },\r\n { code: 'sv', name: 'Svenska' },\r\n { code: 'tr', name: 'Türkçe' },\r\n ];\r\n\r\n\r\n return (\r\n \r\n {capitalizeFirstLetter(translateGui(62))}\r\n {\r\n\r\n props.setLanguage(e.target.value)}\r\n >\r\n {\r\n languages.map(\r\n (lang, index) =>\r\n {lang.name}\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 useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useGuiTranslations from './useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function TimeZoneSelector (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [getTimeZonesHookResponse, getTimeZonesHook] = useFetch();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n getTimeZonesHook(\r\n {\r\n url: '/api/timezone',\r\n addTokenHeader: false,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n\r\n return (\r\n \r\n {capitalizeFirstLetter(translateGui(63))}\r\n {\r\n getTimeZonesHookResponse.length > 0 ?\r\n props.setTimeZone(e.target.value)}\r\n >\r\n {\r\n getTimeZonesHookResponse.map(\r\n (tz, index) =>\r\n index > 149 && index <299 ?\r\n {tz.displayName + ' ' + tz.id}\r\n : null\r\n )\r\n }\r\n\r\n \r\n : null\r\n }\r\n\r\n \r\n\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport useGuiTranslations from './useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function CountrySelector(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [translateGui] = useGuiTranslations();\r\n const classes = useStyles();\r\n const countries = [\r\n { code: 'GB', name: 'United Kingdom' },\r\n { code: 'SE', name: 'Sweden' },\r\n { code: 'CH', name: 'Switzerland' },\r\n { code: 'DE', name: 'Germany' },\r\n { code: 'FR', name: 'France' },\r\n { code: 'TR', name: 'Turkey' },\r\n ];\r\n\r\n\r\n return (\r\n \r\n Country\r\n {\r\n props.setCountry(e.target.value)}\r\n >\r\n {\r\n countries.map(\r\n (country, index) =>\r\n {country.name}\r\n )\r\n }\r\n\r\n \r\n }\r\n \r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React,{useEffect, useState} from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport default function useGoogleAnalytics () {\r\n const [pagePath, setPagePath] = useState('');\r\n const history = useHistory();\r\n\r\n useEffect (\r\n () => {\r\n if(pagePath != '') {\r\n //window.gtag('config', 'UA-179155393-1', { 'page_path': ''+ pagePath }); \r\n }\r\n },[pagePath]\r\n )\r\n\r\n useEffect (\r\n \r\n () => {\r\n console.log('ga eff');\r\n history.listen((location, action) => {\r\n console.log(`The current URL is ${location.pathname}${location.search}${location.hash}`);\r\n console.log(`The last navigation action was ${action}`);\r\n //window.gtag('config', 'UA-179155393-1', { 'page_path': '/admin'+ location.pathname }); \r\n }) \r\n //ilk yuklendiginde event tetiklenmiyor diye burada bir kere daha cagiriyorum\r\n //window.gtag('config', 'UA-179155393-1', { 'page_path': '/admin'+ window.location.pathname }); \r\n },[]\r\n )\r\n \r\n return setPagePath;\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport '../Styles/SignUp.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport { validateEmail } from '../Util/ValidateEmail';\r\nimport useFetch from '../CustomHooks/useFetch';\r\nimport getSlug from 'speakingurl';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport desktopImage from '../Images/signup_desktop_image.jpg';\r\nimport MessageBoxWithAction from './MessageBoxWithAction';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport DefaultLanguageSelector from './MultiLanguage/DefaultLanguageSelector';\r\nimport TimeZoneSelector from './MultiLanguage/TimeZoneSelector';\r\nimport CountrySelector from './MultiLanguage/CountrySelector';\r\nimport useGoogleAnalytics from '../CustomHooks/useGoogleAnalytics';\r\n\r\n\r\nexport default function SignUp() {\r\n const [email, setEmail] = useState('');\r\n const [emailError, setEmailError] = useState('');\r\n const [yourName, setYourName] = useState('');\r\n const [yourNameError, setYourNameError] = useState('');\r\n const [restaurantName, setRestaurantName] = useState('');\r\n const [restaurantNameError, setRestaurantNameError] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [passwordError, setPasswordError] = useState('');\r\n const [passwordAgain, setPasswordAgain] = useState('');\r\n const [passwordAgainError, setPasswordAgainError] = useState('');\r\n const [alias, setAlias] = useState('');\r\n const classes = useStyles();\r\n const [response, fetchData] = useFetch();\r\n const [errorFromServerMessage, setErrorFromServerMessage] = useState('');\r\n const [errorMessages, setErrorMessages] = useState({ email: '', yourName: '', restaurantName: '', password: '', passwordAgain: '', alias: '', });\r\n const [aggreementChecked, setAggreementChecked] = useState(false);\r\n const [agreementError, setAgreementError] = useState('');\r\n const [submittedBefore, setSubmittedBefore] = useState(false);\r\n const globalContext = useContext(GlobalContext);\r\n const [language, setLanguage] = useState('en');\r\n const [country, setCountry] = useState('GB');\r\n const [timeZone, setTimeZone] = useState('Europe/London');\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n const [phone, setPhone] = useState('');\r\n const [phoneError, setPhoneError] = useState('');\r\n const [currency, setCurrency] = useState('gbp');\r\n const setGAPath = useGoogleAnalytics();\r\n\r\n useEffect(\r\n () => {\r\n //setGAPath('/SignUp');\r\n }, []\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n setCountry('TR');\r\n setCurrency('tl');\r\n }\r\n }, []\r\n )\r\n\r\n\r\n const validate = () => {\r\n\r\n let validated = true;\r\n if (!aggreementChecked) {\r\n validated = false;\r\n \r\n\r\n if(guiLanguage == 'tr') {\r\n setAgreementError('Lütfen Abonelik Sözleşmesini onaylayın');\r\n }\r\n else {\r\n setAgreementError('Please check Subscription Agreement');\r\n }\r\n \r\n }\r\n else {\r\n setAgreementError('');\r\n }\r\n\r\n \r\n\r\n if (!validateEmail(email)) {\r\n \r\n if(guiLanguage == 'tr') {\r\n setEmailError('Lütfen geçerli bir e-posta adresi girin.');\r\n }\r\n else {\r\n setEmailError('Please enter a valid email.');\r\n }\r\n\r\n validated = false;\r\n }\r\n else {\r\n setEmailError('');\r\n }\r\n\r\n\r\n\r\n if (yourName == '') {\r\n if(guiLanguage == 'tr') {\r\n setYourNameError('Lütfen adınızı girin.');\r\n }\r\n else {\r\n setYourNameError('Please enter your name.');\r\n }\r\n \r\n validated = false;\r\n }\r\n else {\r\n setYourNameError('');\r\n }\r\n\r\n if (phone == '') {\r\n if(guiLanguage == 'tr') {\r\n setPhoneError('Lütfen telefon numaranızı girin.');\r\n }\r\n else {\r\n setPhoneError('Please enter your phone number.');\r\n }\r\n \r\n validated = false;\r\n }\r\n else {\r\n setPhoneError('');\r\n }\r\n\r\n\r\n if (restaurantName == '') {\r\n if (guiLanguage == 'tr') {\r\n setRestaurantNameError('Restoran adını girin');\r\n }\r\n else {\r\n setRestaurantNameError('Please enter restaurant name');\r\n }\r\n\r\n validated = false;\r\n }\r\n else {\r\n setRestaurantNameError('');\r\n }\r\n\r\n if (password == '') {\r\n if (guiLanguage == 'tr') {\r\n setPasswordError('Lütfen parola girin');\r\n }\r\n else {\r\n setPasswordError('Please enter password');\r\n }\r\n \r\n validated = false;\r\n }\r\n else {\r\n setPasswordError('');\r\n }\r\n\r\n if (passwordAgain == '') {\r\n if (guiLanguage == 'tr') {\r\n setPasswordAgainError('Lütfen seçtiğiniz parolayı tekrar girin');\r\n }\r\n else {\r\n setPasswordAgainError('Please enter password again');\r\n }\r\n validated = false;\r\n }\r\n else {\r\n setPasswordAgainError('');\r\n\r\n if (password != passwordAgain) {\r\n if (guiLanguage == 'tr') {\r\n setPasswordAgainError('Lütfen seçtiğiniz parolayı tekrar girin');\r\n }\r\n else {\r\n setPasswordAgainError('Re-enter your password confirmation so it matches your password.');\r\n }\r\n\r\n validated = false;\r\n }\r\n else {\r\n setPasswordAgainError('');\r\n }\r\n }\r\n\r\n return validated;\r\n\r\n }\r\n\r\n const submitForm = async (e) => {\r\n e.preventDefault();\r\n\r\n if (submittedBefore) {\r\n return;\r\n }\r\n else {\r\n setSubmittedBefore(true);\r\n }\r\n\r\n\r\n if (!validate()) {\r\n setSubmittedBefore(false);\r\n return;\r\n }\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', \r\n value: { \r\n message: guiLanguage == 'tr' ? 'Hesabınız açılıyor...' : 'Signing you up...',\r\n showButton: false } });\r\n fetchData(\r\n {\r\n url: '/api/Registration/register',\r\n method: 'POST',\r\n postData: {\r\n email: email,\r\n companyName: restaurantName,\r\n country: country,\r\n city: \"No city\",\r\n address: \"No address\",\r\n name: yourName,\r\n surname: \"No surname\",\r\n password: password,\r\n companyAlias: getSlug(restaurantName),\r\n langCode: guiLanguage == 'tr' ? 'tr' : language,\r\n timeZoneId: guiLanguage == 'tr' ? 'Europe/Istanbul' : timeZone,\r\n phoneNumber: phone,\r\n currency: currency,\r\n },\r\n returnRawResponse: true,\r\n }\r\n )\r\n\r\n }\r\n\r\n useEffect(\r\n () => {\r\n\r\n async function f() {\r\n if (!Array.isArray(response)) { //response un default hali []\r\n\r\n let responseJson = await response.json();\r\n\r\n //if (responseJson.success) {\r\n if (response.ok) {\r\n window.location = '/SignUp__Success?lang=' + guiLanguage;\r\n }\r\n else {\r\n \r\n\r\n if (responseJson.errCode == \"100\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Bu restoran ismi kullanımda, başka bir restoran ismi girin.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"This restaurant name is in use, please try another one.\");\r\n }\r\n \r\n return;\r\n }\r\n if (responseJson.errCode == \"101\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Bu e-posta adresi kullanımda.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"This email address is in use. Please use Forgot Password on login screen to recover your password or contact support.\");\r\n }\r\n\r\n \r\n return;\r\n }\r\n if (responseJson.errCode == \"103\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Bu restoran ismi kullanımda, başka bir restoran ismi girin.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"This restaurant name is in use, please try another one.\");\r\n }\r\n return;\r\n }\r\n if (responseJson.errCode == \"102\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Beklenmeyen bir hata oluştu.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Unexpexted error\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"200\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Firma adı boş bırakılamaz.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Please enter the company name\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"201\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Firma adı çok kısa(5 karakterden az) veya uzun.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Company name too short(less than 5 letters) or long\");\r\n }\r\n return;\r\n }\r\n \r\n if (responseJson.errCode == \"204\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"İsim alanı boş bırakılamaz.\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Please enter your name\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"205\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"İsim fazla uzun. En fazla 150 harf olabilir\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Name is too long, should be less than 150 letters\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"207\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Lütfen e-posta girin\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Please enter e-mail\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"208\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Lütfen geçerli bir e-posta adresi girin\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Please enter a valid e-mail address\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"209\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"e-posta adresi 80 harften çok olamaz\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"e-mail address must be less than 80 letters\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"210\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Lütfen parola girin\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Please enter a password\");\r\n }\r\n return;\r\n }\r\n\r\n if (responseJson.errCode == \"211\") {\r\n if (guiLanguage == 'tr') {\r\n setErrorFromServerMessage(\"Telefon numarası 15 rakamdan daha fazla olamaz\");\r\n }\r\n else{\r\n setErrorFromServerMessage(\"Phone number must be less than 15 characters\");\r\n }\r\n return;\r\n }\r\n \r\n setErrorFromServerMessage(responseJson.failMessage);\r\n \r\n\r\n }\r\n }\r\n }\r\n f();\r\n setSubmittedBefore(false);\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [response]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n setAlias('https://happytable.app/restaurant-name');\r\n }, []\r\n )\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n 30 GÜN ÜCRETSİZ DENEYİN!\r\n \r\n :\r\n \r\n 30 DAY FREE TRIAL\r\n \r\n }\r\n
\r\n
\r\n\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n
\r\n Üstelik \"Mobil QR Kod Menü\" oluşturmak her zaman Ücretsiz.\r\n
\r\n
\r\n Masadan \"QR Kod Menü ile sipariş alma\", \"Garson Çağırma\", \"9 Yabancı Dilde Menü\" ve \"Gel-al\" özelliklerini 30 gün boyunca ücretsiz kullanın!\r\n
\r\n
\r\n :\r\n \r\n Try out Happy Table free for 30 days to get Self Ordering, Click to Collect and Click to Deliver for your restaurant.\r\n \r\n }\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
bubble_chart Self Ordering
\r\n
bubble_chart Click to Collect
\r\n
bubble_chart Click to Deliver
\r\n
\r\n
\r\n
\r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n HappyTable'ın tüm özelliklerini ücretsiz kullanmaya başlayın!\r\n \r\n :\r\n \r\n Start your free trial now!\r\n \r\n }\r\n\r\n\r\n
\r\n
\r\n\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n Aşağıdaki formu eksiksiz doldurduktan sonra üyelik için gerekli adımlar e-posta adresinize gönderilecektir.\r\n \r\n :\r\n \r\n Complete the form below and you will receive your account info to your mail in minutes.\r\n \r\n }\r\n\r\n
\r\n setEmail(e.target.value)} helperText={emailError} error={emailError == '' ? false : true} />\r\n setYourName(e.target.value)} error={yourNameError == '' ? false : true} />\r\n { setRestaurantName(e.target.value); setAlias('https://happytable.app/' + getSlug(e.target.value)) }} error={restaurantNameError == '' ? false : true} />\r\n setPhone(e.target.value)} error={phoneError == '' ? false : true} />\r\n \r\n setPassword(e.target.value)} helperText={passwordError} error={passwordError == '' ? false : true} />\r\n setPasswordAgain(e.target.value)} helperText={passwordAgainError} error={passwordAgainError == '' ? false : true} />\r\n \r\n {\r\n guiLanguage != 'tr' ?\r\n \r\n \r\n \r\n \r\n \r\n : null\r\n }\r\n\r\n\r\n
\r\n setAggreementChecked(e.target.checked)}\r\n name=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n Sözleşmeyi onaylıyorum\r\n \r\n :\r\n \r\n I agree to the\r\n \r\n }\r\n\r\n \r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n Hizmet Sözleşmesi\r\n \r\n :\r\n \r\n Terms of Service\r\n \r\n }\r\n\r\n \r\n\r\n
\r\n
{agreementError}
\r\n\r\n \r\n
\r\n {\r\n errorFromServerMessage != '' ?\r\n setErrorFromServerMessage('')}>\r\n {errorFromServerMessage}\r\n \r\n : null\r\n }\r\n
\r\n );\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n marginTop: {\r\n marginTop: '10px',\r\n },\r\n desktopImageDiv: {\r\n backgroundImage: `url(${desktopImage})`,\r\n backgroundPosition: 'center',\r\n backgroundSize: 'cover',\r\n width: '50%',\r\n display: 'none',\r\n },\r\n phoneNumber:{\r\n //number alanindaki oklardan kurtulmak icin\r\n '& input::-webkit-outer-spin-button':{\r\n '-webkit-appearance': 'none',\r\n margin: 0,\r\n },\r\n '& input::-webkit-inner-spin-button':{\r\n '-webkit-appearance': 'none',\r\n margin: 0,\r\n },\r\n }\r\n})","import React, { useEffect, useState } from 'react';\r\nimport '../Styles/SignUp.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport useGoogleAnalytics from '../CustomHooks/useGoogleAnalytics';\r\n\r\nexport default function SignUp__Success(props) {\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n const setGAPath = useGoogleAnalytics();\r\n\r\n useEffect(\r\n () => {\r\n //setGAPath('/SignUp');\r\n }, []\r\n )\r\n \r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\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 done\r\n \r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n
\r\n Hesabınıza bir e-posta gönderdik. E-posta içindeki bağlantıya tıklayarak hesabınızı etkinleştirin.\r\n
\r\n
\r\n HappyTable'dan bir e-posta almadıysanız lütfen öncelikle \"Spam\" klasörünüzü kontrol edin. Eğer \"Spam\" klasörünüzde de tarafımızdan gelen bir e-posta bulunmuyorsa lütfen destek@happytable.app adresinden bizimle iletişime geçin.\r\n
\r\n
\r\n :\r\n \r\n We have sent a mail to your email address with a link. Please click the link in the email to activate your account.\r\n \r\n\r\n }\r\n\r\n
\r\n\r\n )\r\n}","import React, { useEffect, useState } from 'react';\r\nimport useFetch from '../CustomHooks/useFetch';\r\nimport '../Styles/MailVerification.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\n\r\n\r\n\r\nexport default function MailVerification() {\r\n const [response, fetchData] = useFetch();\r\n const [status, setStatus] = useState('Verifying')\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n }\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n let code = window.location.pathname.replace('/mailVerification/', '');\r\n console.log(code);\r\n\r\n fetchData(\r\n {\r\n url: '/api/registration/confirmemail/' + code,\r\n method: 'PUT',\r\n }\r\n )\r\n\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n async function f() {\r\n if (response != null) {\r\n if (response.length != 0) {\r\n if (response) {\r\n setStatus('Verified');\r\n } else {\r\n setStatus('Rejected');\r\n }\r\n }\r\n }\r\n }\r\n f();\r\n }, [response]\r\n )\r\n\r\n return (\r\n
\r\n
\r\n {\r\n status == \"Verifying\" ?\r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n Onaylama sürüyor. Lütfen bekleyiniz.\r\n \r\n :\r\n \r\n Verification in progress. Please stand by.\r\n \r\n\r\n }\r\n
\r\n : null\r\n }\r\n\r\n\r\n {\r\n status == \"Rejected\" && guiLanguage == 'tr' ?\r\n
\r\n E-postanız onaylanamadı! E-posta adresinizi daha önceden onaylamış olabilirsiniz. Giriş yapmayı deneyin: .\r\n

\r\n Eğer işe yaramaz ise destek departmanı ile iletişime geçin \r\n
\r\n :\r\n null\r\n }\r\n {\r\n status == \"Rejected\" && guiLanguage != 'tr' ?\r\n
\r\n Verification rejected! You may have verified your email before so please try to .\r\n

\r\n If it does not work please contact support\r\n
\r\n :\r\n null\r\n }\r\n \r\n {\r\n status == \"Verified\" && guiLanguage == 'tr' ?\r\n
\r\n \r\n E-postanız onaylandı. Giriş yapabilirsiniz ! \r\n \r\n
\r\n : null\r\n }\r\n \r\n {\r\n status == \"Verified\" && guiLanguage != 'tr' ?\r\n
\r\n \r\n Your e-mail is verified. You can happily now! \r\n \r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nfunction LoginLink(props) {\r\n return (\r\n \r\n { props.lang == 'tr' ? 'Giriş' : 'Login'}\r\n \r\n )\r\n}\r\n","import React, { useContext } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport '../Styles/MessageBox.scss';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../Util/StringFunctions';\r\n\r\n\r\nexport default function MessageBox() {\r\n const [translateGui] = useGuiTranslations();\r\n const globalContext = useContext(GlobalContext);\r\n\r\n const clicked = () => {\r\n console.log('clickEd!');\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n if (globalContext.globalState.messageOptions.doSmthIfOk != null) {\r\n globalContext.globalState.messageOptions.doSmthIfOk();\r\n }\r\n }\r\n\r\n const divClicked = () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }\r\n const cancelClick = () => {\r\n console.log('cancel clicked');\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {!globalContext.globalState.messageOptions.showButton ?\r\n \r\n : null\r\n }\r\n {globalContext.globalState.messageOptions.message != '...' ? globalContext.globalState.messageOptions.message : ''}\r\n
\r\n {globalContext.globalState.messageOptions.doSmthIfOk != undefined ?\r\n \r\n : null\r\n }\r\n\r\n {globalContext.globalState.messageOptions.showButton ?\r\n \r\n : null\r\n }\r\n
\r\n
\r\n
\r\n )\r\n}","import React, { useState, useEffect, useContext } from 'react';\r\nimport '../Styles/Login.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from '../CustomHooks/useFetch';\r\nimport { validateEmail } from '../Util/ValidateEmail';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nexport default function ForgotPassword() {\r\n const [email, setEmail] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [response, fetchData] = useFetch();\r\n const classes = useStyles();\r\n const [errorMessages, setErrorMessages] = useState({ email: '', yourName: '', restaurantName: '', password: '', passwordAgain: '' });\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n }\r\n }, []\r\n )\r\n\r\n\r\n const setErrorMessage = (key, value) => {\r\n setErrorMessages({ ...errorMessages, [key]: value });\r\n }\r\n\r\n const submitForm = async (e) => {\r\n e.preventDefault();\r\n\r\n let validated = true;\r\n\r\n if (!validateEmail(email)) {\r\n setErrorMessage('email', 'Please enter a valid email.');\r\n validated = false;\r\n }\r\n else {\r\n setErrorMessage('email', '');\r\n }\r\n\r\n if (validated) {\r\n fetchData(\r\n {\r\n url: '/admin/auth/send-reset-password-email',\r\n method: 'POST',\r\n postData: {\r\n email: email,\r\n },\r\n }\r\n )\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n async function f() {\r\n console.log(response.length);\r\n\r\n if (response.length != 0) {\r\n if (response) {\r\n\r\n console.log(response);\r\n\r\n }\r\n else {\r\n console.log(response)\r\n }\r\n }\r\n\r\n }\r\n f();\r\n }, [response]\r\n )\r\n\r\n return (\r\n
\r\n
\r\n {response.length == 0 ?\r\n \r\n \r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n 'Parolanızı yenilemeniz için size bir e-posta göndereceğiz.'\r\n :\r\n 'We will send you a passsword reset e-mail.'\r\n }\r\n
\r\n setEmail(e.target.value)} \r\n helperText={guiLanguage == 'tr' ? 'Geçerli bir e-posta adresi girin' :'Enter a valid e-mail'} error={errorMessages.email == '' ? false : true} />\r\n \r\n
\r\n : null}\r\n {response.length != 0 && response ?\r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n 'Parolanızı yenilemeniz için size bir e-posta gönderdik.'\r\n :\r\n 'We have just sent you an e-mail with a password reset link. Please check your e-mail. Please do not forget to check your spam folder if the password e-mail is not in your inbox.'\r\n }\r\n \r\n
\r\n : null}\r\n {response.length != 0 && !response ?\r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n 'Veritabanımızda böyle bir e-posta adresi yok. Lütfen e-posta adresinizi kontrol edin.'\r\n :\r\n 'There is no such e-mail address on our database. Please check your e-mail and try again.'\r\n }\r\n
\r\n : null}\r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\nconst useStyles = makeStyles({\r\n logoImage: {\r\n width: '300px',\r\n alignSelf: 'center',\r\n },\r\n innerWrapper: {\r\n width: '300px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginTop: '150px',\r\n }\r\n});","import React,{useEffect, useState} from 'react';\r\nimport useFetch from '../CustomHooks/useFetch';\r\n\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport '../Styles/Login.scss';\r\n\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\n\r\n\r\n\r\n\r\n\r\nexport default function PasswordReset () {\r\n\r\n const [response, fetchData] = useFetch();\r\n const [status, setStatus] = useState('Verifying');\r\n const [code, setCode] = useState('');\r\n const [password, setPassword] = useState('');\r\n const [passwordAgain, setPasswordAgain] = useState('');\r\n const [errorMessages, setErrorMessages] = useState({email:'',yourName: '', restaurantName : '', password : '', passwordAgain : ''});\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n\r\n const setErrorMessage = (key, value) =>{\r\n setErrorMessages( {...errorMessages, [key] : value});\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n }\r\n }, []\r\n )\r\n\r\n\r\n useEffect(\r\n ()=> {\r\n let code = window.location.pathname.replace('/passwordReset/','');\r\n console.log(code);\r\n setCode(code);\r\n\r\n },[]\r\n )\r\n\r\n\r\n\r\n useEffect(\r\n ()=> {\r\n async function f() {\r\n if(response != null) {\r\n if(response.length != 0) {\r\n if(response){ \r\n setStatus('Verified'); \r\n } else {\r\n setStatus('Rejected'); \r\n }\r\n }\r\n }\r\n }\r\n f();\r\n },[response]\r\n )\r\n\r\n const submitForm = async (e) => {\r\n e.preventDefault();\r\n\r\n let validated = true;\r\n\r\n \r\n if (password != passwordAgain) {\r\n setErrorMessage('passwordAgain', guiLanguage == 'tr' ? 'Girdiğiniz ikinci parolanın ilki ile aynı olması gerekiyor' : 'Re-enter your password confirmation so it matches your password.');\r\n validated = false;\r\n }\r\n else {\r\n setErrorMessage('passwordAgain', '');\r\n }\r\n\r\n \r\n if(validated) {\r\n fetchData(\r\n {\r\n url: '/admin/auth/reset-password/' + code,\r\n method: 'PUT',\r\n postData: {\r\n password: password,\r\n },\r\n }\r\n )\r\n }\r\n}\r\n \r\n return (\r\n
\r\n
\r\n {response.length == 0 ?\r\n \r\n \r\n
{ guiLanguage== 'tr'?'Lütfen yeni parolanızı 2 kere girin.': 'Please type your new password twice.'}
\r\n setPassword(e.target.value)} helperText={errorMessages.password} error={errorMessages.password == ''? false : true}/>\r\n setPasswordAgain(e.target.value)} helperText={errorMessages.passwordAgain} error={errorMessages.passwordAgain == ''? false : true}/>\r\n \r\n
\r\n : null}\r\n {response.length != 0 && response ?\r\n
\r\n {guiLanguage == 'tr'? \r\n 'Parolayı başarılı bir şekilde değiştirdiniz' : \r\n 'We have successfully reset your password. You can login< now with your new password.'}\r\n \r\n
\r\n : null}\r\n {response.length != 0 && !response ?\r\n
\r\n {guiLanguage == 'tr'? \r\n 'Parolanız değiştirilemedi. Lütfen destek ekibi ile iletişime geçin.' : \r\n 'Can not reset your password. Please contact support.'}\r\n
\r\n : null}\r\n
\r\n
\r\n )\r\n}\r\n\r\nfunction LoginLink(){\r\n return (\r\n \r\n Login\r\n \r\n )\r\n}\r\n","import React from 'react';\r\n\r\nexport const MenuContext = React.createContext();\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport LanguageIcon from '@material-ui/icons/Language';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\n\r\nexport default function GuiLanguageSelector(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const languageMenuRef = useRef(null);\r\n const [displayLanguageMenu, setDisplayLanguageMenu] = useState(false);//menuyu acip kapamak icin\r\n const [clickEvent, setClickEvent] = useState(null);\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const [selectedLanguageCode, setSelectedLanguageCode] = useState('en');\r\n\r\n const languages = [\r\n { code: 'en', name: 'English' },\r\n /*{ code: 'de', name: 'Deutsch' },\r\n { code: 'fr', name: 'Français' },\r\n { code: 'es', name: 'Español' },\r\n { code: 'zh', name: '中文' },\r\n { code: 'ru', name: 'Русский' },\r\n { code: 'ja', name: '日本語' },\r\n { code: 'it', name: 'İtaliano' },\r\n { code: 'sv', name: 'Svenska' },*/\r\n { code: 'tr', name: 'Türkçe' },\r\n ];\r\n\r\n useEffect(\r\n () => {\r\n \r\n //console.log(getCustomerSettingsHookResponse);\r\n if(getCustomerSettingsHookResponse.defaultLanguage){\r\n //ilk once localStorage'a bakiyorum, eger kullanici daha once secmis ise onu\r\n //kullaniyorum, yoksa serverdan gelen degeri kullaniyorum\r\n let languageCode='';\r\n if (localStorage.getItem('ht_adm_cs') != null) {\r\n let customerSettings = JSON.parse(localStorage.getItem('ht_adm_cs')); \r\n if(customerSettings.selectedGuiLanguage) {\r\n languageCode = customerSettings.selectedGuiLanguage;\r\n }\r\n \r\n \r\n }\r\n if (languageCode=='') {\r\n //serverdan geleni set et\r\n languageCode = getCustomerSettingsHookResponse.defaultLanguage;\r\n if(languageCode != 'tr') {\r\n //turkce disindaki butun diller icin ingilizceyi sectiriyorum\r\n languageCode = 'en'; \r\n }\r\n }\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_SELECTED_GUI_LANGUAGE',\r\n value: languageCode,\r\n }\r\n )\r\n }\r\n \r\n },[getCustomerSettingsHookResponse] \r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (displayLanguageMenu) {\r\n document.addEventListener('click', clickListener);\r\n }\r\n\r\n return () => document.removeEventListener('click', clickListener)\r\n }, [displayLanguageMenu]\r\n )\r\n\r\n \r\n\r\n\r\n\r\n const clickListener = (e) => {\r\n if (languageMenuRef.current == null) {\r\n setDisplayLanguageMenu(false);\r\n }\r\n else {\r\n if (!languageMenuRef.current.contains(e.target)) {\r\n setDisplayLanguageMenu(false);\r\n }\r\n }\r\n }\r\n\r\n \r\n\r\n const changeLanguage = (languageCode) => {\r\n console.log(languageCode);\r\n \r\n setSelectedLanguageCode(languageCode.toUpperCase());\r\n\r\n setDisplayLanguageMenu(false);\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_SELECTED_GUI_LANGUAGE',\r\n value: languageCode,\r\n }\r\n )\r\n\r\n let customerSettings = JSON.parse(localStorage.getItem('ht_adm_cs')); \r\n customerSettings = {\r\n ...customerSettings,\r\n selectedGuiLanguage : languageCode,\r\n }\r\n localStorage.setItem('ht_adm_cs', JSON.stringify(customerSettings));\r\n }\r\n\r\n\r\n \r\n\r\n \r\n\r\n return (\r\n \r\n {\r\n //globalContext.globalState.availableLanguages && globalContext.globalState.availableLanguages.length > 0 &&\r\n
{\r\n if (displayLanguageMenu == false)\r\n setDisplayLanguageMenu(true)\r\n }\r\n }\r\n >\r\n \r\n {globalContext.globalState.selectedGuiLanguage.toUpperCase()}\r\n \r\n \r\n\r\n {\r\n displayLanguageMenu ?\r\n
\r\n {\r\n languages.map(\r\n lang =>\r\n
{ changeLanguage(lang.code); setDisplayLanguageMenu(false); }}>{lang.name}
\r\n )\r\n }\r\n
\r\n : null\r\n }\r\n
\r\n\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n },\r\n languagesDiv: {\r\n zIndex: 1000,\r\n position: 'absolute',\r\n fontSize: '1.2rem',\r\n top: '40px',\r\n left: '-60px',\r\n boxShadow: '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)',\r\n padding: '10px',\r\n backgroundColor: 'white',\r\n '& > div:nth-child(n+1)': {\r\n marginTop: '10px',\r\n }\r\n },\r\n});","import React, { useState, useContext, useEffect, useRef } from 'react';\r\nimport '../Styles/Header.scss';\r\nimport Logo from '../Images/ht_logo_final.png';\r\nimport MenuMobile from './MenuMobile';\r\nimport { MenuContext } from '../Contexts/MenuContext';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport Modal from './Modal';\r\nimport PasswordChanger from './PasswordChanger';\r\nimport { deleteCookie } from '../Util/Cookie';\r\nimport { useHistory } from 'react-router-dom';\r\nimport GuiLanguageSelector from './MultiLanguage/GuiLanguageSelector';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\n//import useFreshWorks from '../CustomHooks/useFreshWorks';\r\nimport useTawk from '../CustomHooks/useTawk';\r\n\r\nfunction Header() {\r\n const [menuOpenState, setMenuOpenState] = useState(false);\r\n //const [menuContext, setMenuCon] = useContext(MenuContext);\r\n const globalContext = useContext(GlobalContext);\r\n const [changePasswordOn, setChangePasswordOn] = useState(false);\r\n const [headerMenuOn, setHeaderMenuOn] = useState(false);\r\n const wrapperRef = useRef(null);\r\n const history = useHistory();\r\n const [translateGui] = useGuiTranslations();\r\n //const nullValue = useFreshWorks();\r\n const nullValue = useTawk();\r\n\r\n useEffect(() => {\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n });\r\n\r\n \r\n\r\n function handleClickOutside(event) {\r\n if (wrapperRef.current && !wrapperRef.current.contains(event.target)) {\r\n console.log(\"You clicked outside of me!\");\r\n setHeaderMenuOn(false);\r\n }\r\n }\r\n\r\n const signOut = () => {\r\n //delete cookie or set the expiry time to zero\r\n deleteCookie();\r\n //and send the log on\r\n //window.location = '/Login';\r\n //console.log(globalContext.globalState.selectedGuiLanguage);\r\n let loginUrl = '/Login' + (globalContext.globalState.selectedGuiLanguage=='tr'? '?lang=tr' : '') ; \r\n //console.log(loginUrl);\r\n history.push(loginUrl);\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 {globalContext.globalState.email}\r\n { setHeaderMenuOn(true) }}>account_circle\r\n {headerMenuOn ?\r\n
\r\n\r\n
\r\n
{ setChangePasswordOn(true); setHeaderMenuOn(false) }}>\r\n Change password\r\n
\r\n
\r\n Sign out\r\n
\r\n
\r\n
\r\n : null}\r\n
\r\n
\r\n \r\n
\r\n { menuOpenState ? setMenuOpenState(false) : setMenuOpenState(true) }}>\r\n menu\r\n \r\n {\r\n menuOpenState ?\r\n setMenuOpenState(false)}>\r\n : null\r\n }\r\n\r\n
\r\n {changePasswordOn ?\r\n \r\n \r\n \r\n : null}\r\n
\r\n );\r\n}\r\n\r\nexport default Header;\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\n\r\n\r\nexport default function useTawk(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [loadScript, setLoadScript] = useState(false);\r\n \r\n\r\n useEffect (\r\n () => {\r\n if(loadScript){\r\n console.log(globalContext.globalState.selectedGuiLanguage);\r\n var Tawk_API = Tawk_API || {}, Tawk_LoadStart = new Date();\r\n (function () {\r\n var s1 = document.createElement(\"script\"), s0 = document.getElementsByTagName(\"script\")[0];\r\n s1.async = true;\r\n if (globalContext.globalState.selectedGuiLanguage == 'tr') {\r\n s1.src = 'https://embed.tawk.to/5f71c5a54704467e89f2e0a1/default'; //tr\r\n }\r\n else {\r\n s1.src = 'https://embed.tawk.to/5f9aa7677f0a8e57c2d829f4/default'; //eng\r\n }\r\n s1.charset = 'UTF-8';\r\n s1.setAttribute('crossorigin', '*');\r\n s0.parentNode.insertBefore(s1, s0);\r\n })();\r\n }\r\n },[loadScript]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n const f = async () => {\r\n \r\n \r\n await waitForSeconds(3);\r\n setLoadScript(true);\r\n \r\n \r\n \r\n }//f()\r\n f();\r\n }, []\r\n )\r\n\r\n const waitForSeconds = async (seconds) => {\r\n return await new Promise(\r\n (resolve, reject)=>{\r\n let ctr = 0;\r\n let intervalId = setInterval(() => {\r\n ctr = ctr +1;\r\n console.log(ctr);\r\n if(ctr==seconds){\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n }, 1000);\r\n }\r\n )\r\n }\r\n\r\n return null;\r\n}\r\n","import React,{useContext} from 'react';\r\nimport '../Styles/MobileBreadCrumb.scss';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\n\r\nexport default function MobileBreadCrumb(props) {\r\n const [translateGui] = useGuiTranslations();\r\n const globalContext = useContext(GlobalContext);\r\n\r\n return (\r\n
\r\n {translateGui(globalContext.globalState.menuLocation.b)}\r\n
\r\n )\r\n}","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport Header from './Header';\r\nimport MobileBreadCrumb from './MobileBreadCrumb';\r\nimport {withRouter} from 'react-router-dom';\r\n\r\nfunction Header__Wrapper(props) {\r\n const globalContext = useContext(GlobalContext);\r\n \r\n return (\r\n \r\n {(props.location.pathname != '/Login' && props.location.pathname != '/') ?\r\n
\r\n
\r\n \r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nexport default withRouter(Header__Wrapper);","import React, { useEffect, useState } from 'react';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\n\r\nexport default function OpenOrderLine(props) {\r\n\r\n const { orderItem } = props;\r\n const { order } = props;\r\n const [checkState, setCheckState] = useState(true);\r\n const [setStateOfItemHookResponse, setStateOfItemHook] = useFetch();\r\n const classes = useStyles();\r\n\r\n useEffect(\r\n () => {\r\n setCheckState((orderItem.status == 'Served') ? true : false);\r\n //console.log(orderItem.status);\r\n }, []\r\n )\r\n\r\n const checkboxStateChanged = (e) => {\r\n setCheckState(e.target.checked);\r\n console.log(e.target.checked);\r\n setStateOfItemHook(\r\n {\r\n url: `/admin/orders/${order.id}/${orderItem.orderItemId}`,\r\n addTokenHeader: true,\r\n method: 'PUT',\r\n postData: {\r\n orderStatus: e.target.checked ? 'Served' : 'Preparing',\r\n },\r\n }\r\n );\r\n }\r\n\r\n const getOptionPriceTotal = (optionGroups) => {\r\n let total = 0;\r\n optionGroups.map(\r\n optionGroup => optionGroup.options.map(\r\n option =>\r\n total += option.price * option.itemCount\r\n )\r\n )\r\n return total;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {orderItem.foodOrDrink}\r\n \r\n \r\n {(orderItem.itemAmount + getOptionPriceTotal(orderItem.itemOptionGroups)).toFixed(2)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n orderItem.itemOptionGroups.map(\r\n optionGroup =>\r\n optionGroup.options.length > 0 ?\r\n
\r\n {props.optionGroups.filter(optGrp => optGrp.id == optionGroup.optionGroupId)[0].optionGroupName}\r\n
\r\n {optionGroup.options.map(\r\n (option, index) =>\r\n
+ {option.itemCount > 1 ? option.itemCount + 'x ' : ' '} {option.optionName}
\r\n )}\r\n
\r\n
\r\n : null\r\n )\r\n }\r\n \r\n \r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n \r\n checkbox: {\r\n padding: '2px 9px',\r\n },\r\n \r\n\r\n \r\n });","export function formatDate(date) {\r\n var d = new Date(date),\r\n month = '' + (d.getMonth() + 1),\r\n day = '' + d.getDate(),\r\n year = d.getFullYear();\r\n\r\n if (month.length < 2)\r\n month = '0' + month;\r\n if (day.length < 2)\r\n day = '0' + day;\r\n\r\n return [year, month, day].join('-');\r\n}\r\n\r\nexport function formatTime(date) {\r\n var d = new Date(date);\r\n let hour = d.getHours();\r\n let minute = d.getMinutes();\r\n\r\n if (hour.length < 2)\r\n hour = '0' + hour;\r\n if (minute.length < 2)\r\n minute = '0' + minute;\r\n\r\n let result = `${hour}:${minute}`\r\n return result;\r\n}\r\n\r\nexport const getFormattedDateTime = (dateTimeString) => {\r\n const options = { hour: 'numeric', minute: 'numeric' };\r\n let newDate = new Date(dateTimeString);\r\n newDate.setHours(newDate.getHours() + 1);\r\n return newDate.toLocaleString('en-GB', options);\r\n }","import React, { useContext, useEffect } from 'react';\r\nimport '../../../Styles/OpenOrders.scss'\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport OpenOrderLine from './OpenOrderLine';\r\nimport RestaurantIcon from '@material-ui/icons/Restaurant';\r\nimport DirectionsWalkIcon from '@material-ui/icons/DirectionsWalk';\r\nimport MotorcycleIcon from '@material-ui/icons/Motorcycle';\r\nimport { getFormattedDateTime } from '../../../Util/DateFunctions';\r\nimport useGuiTranslations from '../../MultiLanguage/useGuiTranslations';\r\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\r\n\r\nexport default function OpenOrders__Details__Small_2(props) {\r\n const theme = useTheme();\r\n const [updateOrderItemHookResponse, updateOrderItemHook] = useFetch();\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const updateOrderItem = (itemId) => {\r\n console.log('getting orders');\r\n updateOrderItemHook(\r\n {\r\n url: `/admin/orders/${props.order.orderNumber}/${itemId}`,\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n );\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 props.order.orderType == \"SelfOrder\" ?\r\n \r\n : null\r\n }\r\n {\r\n props.order.orderType == \"Collect\" ?\r\n \r\n : null\r\n }\r\n {\r\n props.order.orderType == \"Deliver\" ?\r\n \r\n : null\r\n }\r\n \r\n \r\n {\r\n props.order.orderType == \"SelfOrder\" ?\r\n translateGui(21)\r\n : null\r\n }\r\n {\r\n props.order.orderType == \"Collect\" ?\r\n translateGui(22)\r\n : null\r\n }\r\n {\r\n props.order.orderType == \"Deliver\" ?\r\n translateGui(23)\r\n : null\r\n }\r\n \r\n
\r\n\r\n \r\n {props.order.orderType == \"SelfOrder\" ? translateGui(24) + ': ' + props.order.tableNumber : null}\r\n \r\n
\r\n\r\n\r\n\r\n\r\n \r\n saat: {getFormattedDateTime(props.order.orderDate)}\r\n \r\n\r\n\r\n\r\n\r\n \r\n {translateGui(25)}: {(props.order.orderNumber).substring(0, 6)}\r\n \r\n\r\n {props.order.note}\r\n
\r\n\r\n
\r\n\r\n {\r\n props.order.orderType == \"Collect\" ?\r\n
\r\n {props.order.email}\r\n {props.order.phone}\r\n
\r\n : null\r\n }\r\n {\r\n props.order.orderType == \"Deliver\" ?\r\n
\r\n {props.order.paymentType == \"PayOnDelivery\" ? translateGui(108):translateGui(107)}\r\n {props.order.name}\r\n {props.order.phone}\r\n {props.order.email}\r\n {props.order.address}\r\n {props.order.postCode}\r\n\r\n
\r\n : null\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 props.order.orderDetail.map(\r\n (orderItem, index) =>\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
{translateGui(26)}{translateGui(27)}{translateGui(28)}
\r\n\r\n\r\n\r\n \r\n\r\n {parseFloat(props.order.orderAmount).toFixed(2) + ' '} {props.currency}\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\n//export default OpenOrders__Details__Small;\r\n\r\nconst useStyles = makeStyles({\r\n\r\n root: {\r\n width: '95%',\r\n borderRadius: 0,\r\n backgroundColor: 'white',\r\n boxShadow: '5px 5px 5px 0px rgba(0, 0, 0, 0.25)',\r\n display: 'flex',\r\n justifyContent: 'flex-start',\r\n \r\n '@media (max-width : 767px)':{\r\n flexDirection: 'column',\r\n }\r\n },\r\n\r\n table: {\r\n\r\n '@media (max-width : 767px)':{\r\n width: '85%',\r\n },\r\n\r\n '& th': {\r\n textAlign: 'left',\r\n fontFamily: 'Open Sans',\r\n color: '#615f5f',\r\n textTransform: 'capitalize',\r\n padding: '10px 5px',\r\n width: '200px',\r\n fontSize: '0.9rem',\r\n\r\n },\r\n\r\n '& td': {\r\n textAlign: 'left',\r\n padding: '1px 5px',\r\n opacity: '0.7',\r\n fontSize: '0.8rem',\r\n },\r\n\r\n '& tr:nth-child(1)>td': {\r\n paddingTop: '10px',\r\n },\r\n\r\n\r\n '&>thead>tr': {\r\n backgroundColor: '#f7f7f7',\r\n },\r\n\r\n\r\n\r\n },\r\n\r\n card: {\r\n width: '350px',\r\n //marginTop: '10px',\r\n //marginLeft: '10px',\r\n\r\n '@media (min-width : 600px)': {\r\n // width: 'calc(100% - 20px)',\r\n },\r\n '& td': {\r\n //borderBottom : 'none',\r\n padding: '0px 24px 0px 16px',\r\n fontSize: '12px',\r\n },\r\n '& th': {\r\n padding: '16px 16px 0px 16px',\r\n },\r\n '& tbody>tr:not(:last-child):nth-child(2n-1)': {\r\n //backgroundColor : '#604a0814', \r\n backgroundColor: 'rgb(247, 247, 247)',\r\n\r\n }\r\n },\r\n orderDetails: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n fontSize: '0.8rem',\r\n padding: '0 10px',\r\n },\r\n orderTypeWrapper: {\r\n display: 'flex',\r\n paddingTop: '0.5rem',\r\n '& > span:nth-child(2)': {\r\n //marginLeft: '10px',\r\n }\r\n },\r\n orderTypeText: {\r\n fontSize: '0.9rem',\r\n fontFamily: 'Open Sans',\r\n textTransform: 'capitalize',\r\n marginLeft: '5px',\r\n fontWeight: 600,\r\n color: '#615f5f',\r\n },\r\n \r\n motorcycleIcon: {\r\n color: '#5dbcd2',\r\n fonttSize: '1.2rem',\r\n },\r\n directionsWalkIcon: {\r\n color: 'rgb(255, 139, 81)',\r\n fonttSize: '1.2rem',\r\n },\r\n restaurantIcon: {\r\n color: 'rgb(130, 204, 96)',\r\n fontSize: '1.2rem',\r\n },\r\n col1: {\r\n padding: '10px',\r\n minWidth: '200px',\r\n\r\n },\r\n col2: {\r\n borderLeft: '1px solid #ece9e9',\r\n height: '120px',\r\n alignSelf: 'center',\r\n\r\n \r\n '@media (max-width : 767px)':{\r\n display: 'none',\r\n }\r\n },\r\n\r\n col3: {\r\n width: '100%',\r\n marginLeft: '20px',\r\n padding: '10px',\r\n },\r\n\r\n orderDetails: {\r\n \"textTransform\": \"capitalize\",\r\n \"fontSize\": \"0.8rem\",\r\n \"fontFamily\": \"'Open Sans'\",\r\n \"fontWeight\": \"700\",\r\n \"opacity\": \"0.5\",\r\n display: 'flex',\r\n flexDirection: 'column',\r\n //\"maxWidth\": '150px',\r\n },\r\n orderDetailsWrapper:{\r\n maxWidth: '150px',\r\n marginLeft: '1.5rem',\r\n },\r\n tableNo: {\r\n \"marginLeft\":\"1.55rem\",\r\n \"fontSize\":\"0.8rem\",\r\n \"opacity\":\"0.6\",\r\n \"display\":\"inline-block\",\r\n \"position\":\"relative\",\r\n \"top\":\"-5px\"\r\n },\r\n\r\n\r\n\r\n});","import React, { useContext, useEffect } from 'react';\r\nimport '../../../Styles/OpenOrders.scss'\r\nimport OpenOrders__Details__Small from './OpenOrders__Details__Small_2';\r\nimport '../../../Styles/OpenOrders__GridView.scss';\r\n\r\nfunction OpenOrders__GridView(props) {\r\n\r\n return (\r\n \r\n
\r\n {\r\n props.orderList.map(order =>\r\n \r\n )\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default OpenOrders__GridView;\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\n\r\nexport default function useOptionGroups(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [getOptionGroupsHookResponse, getOptionGroupsHook] = useFetch();\r\n const [deleteOptionGroupHookResponse, deleteOptionGroupHook] = useFetch();\r\n\r\n\r\n useEffect(\r\n () => {\r\n getOptionGroups();\r\n }, []\r\n )\r\n\r\n const getOptionGroups = () => {\r\n getOptionGroupsHook(\r\n {\r\n url: '/admin/food-options?PageNumber=1&PageSize=100',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n const deleteOptionGroup = (optionGroupId) => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Deleting option group...', showButton: false } });\r\n deleteOptionGroupHook(\r\n {\r\n url: '/admin/food-options/' + optionGroupId + '?softDelete=true',\r\n method: 'DELETE',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n \r\n\r\n\r\n return [getOptionGroupsHookResponse, getOptionGroups, deleteOptionGroup, deleteOptionGroupHookResponse];\r\n}\r\n","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport EmojiPeopleIcon from '@material-ui/icons/EmojiPeople';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\nexport default function CallTheWaiter(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [getCallsHookResponse, getCallsHook] = useFetch();\r\n const [setCallCompletedHookResponse, setCallCompletedHook] = useFetch();\r\n const timerId = useRef(null);\r\n const [doneCalls, setDoneCalls] = useState({});\r\n const [pendingCalls, setPendingCalls] = useState([]);\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const removeCall = (callId) => {\r\n let temp = { ...doneCalls };\r\n temp[callId] = 1;\r\n setDoneCalls(temp);\r\n\r\n setCallCompletedHook(\r\n {\r\n url: '/admin/messages/' + callId,\r\n method: 'PUT',\r\n postData: true,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n const getMessages = () => {\r\n getCallsHook(\r\n {\r\n url: '/admin/messages?MarkAsRead=false',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n useEffect(\r\n () => {\r\n console.log('burada');\r\n getMessages();\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //console.log(getCallsHookResponse);\r\n if (getCallsHookResponse.messages) {\r\n setPendingCalls(getCallsHookResponse.messages);\r\n }\r\n }, [getCallsHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //console.log(timerId);\r\n if (getCallsHookResponse.messages == null) {\r\n\r\n if (!timerId.current) {\r\n console.log('timer baslar');\r\n timerId.current = setInterval(getMessages, 5000);\r\n }\r\n }\r\n }, [getCallsHookResponse]\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n return () => { clearInterval(timerId.current) }\r\n }, []\r\n )\r\n\r\n return (\r\n
\r\n {\r\n pendingCalls.length > 0 ?\r\n
\r\n
\r\n \r\n \r\n {capitalizeFirstLetter(translateGui(111))}\r\n \r\n
\r\n {\r\n pendingCalls.map(\r\n pendingCall =>\r\n doneCalls[pendingCall.messageId] == undefined ?\r\n
\r\n
\r\n {capitalizeFirstLetter(translateGui(24))}:{pendingCall.tableNumber}\r\n {pendingCall.message}\r\n
\r\n removeCall(pendingCall.messageId)} color=\"primary\" inputProps={{ 'aria-label': 'secondary checkbox' }} />\r\n \r\n
\r\n : null\r\n\r\n )\r\n }\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: '100%',\r\n },\r\n flexColumn: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n innerWrapper: {\r\n width: '95%',\r\n margin: 'auto',\r\n padding: '20px 0',\r\n border: '1px solid #c5c5c5',\r\n marginBottom: '20px',\r\n boxShadow: '5px 5px 5px 0px rgba(0, 0, 0, 0.25)',\r\n backgroundColor: 'white',\r\n borderRadius: '10px',\r\n },\r\n tableName: {\r\n fontSize: '0.9rem',\r\n color: '#4c4c4c',\r\n fontWeight: 700,\r\n },\r\n line: {\r\n borderBottom: '1px solid #d0cbcb',\r\n //marginBottom: '10px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingBottom: '10px',\r\n //backgroundColor: '#f7f7f7',\r\n padding: '10px 10px',\r\n\r\n '@media (min-width : 600px)': {\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n }\r\n\r\n\r\n },\r\n button: {\r\n width: '100px',\r\n alignSelf: 'center',\r\n },\r\n request: {\r\n //margin: '10px 0',\r\n paddingTop: '5px',\r\n fontSize: '0.8rem',\r\n },\r\n customerIcon: {\r\n color: '#f84709',\r\n fontSize: '1.7rem',\r\n },\r\n title: {\r\n marginBottom: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '0 10px',\r\n },\r\n titleText: {\r\n fontSize: '14px',\r\n fontWeight: '700',\r\n color: '#4c4c4c',\r\n marginLeft: '9px',\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../../Contexts/GlobalContext';\r\n\r\n\r\nexport default function NoOrdersYet (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n\r\n const svgImage = () => {\r\n return \r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {svgImage()}\r\n
\r\n \r\n {\r\n globalContext.globalState.selectedGuiLanguage == 'tr'?\r\n
\r\n
\r\n Siparişleriniz burada gözükecek\r\n\r\n
\r\n
\r\n \r\n HappyTable işletme paneline hoşgeldiniz!\r\n \r\n \r\n Öncelikle soldaki menüden işletmenizin ürün kategorilerini ve ürünlerini giriniz.\r\n \r\n \r\n Ayarlar menüsünden ödeme ve masa ayarlarınızı, restoran bilgilerinizi ve diğer detayları güncelleyebilirsiniz.\r\n \r\n \r\n Masadan ve online aldığınız siparişleri Siparişler menüsünden takip edebilirsiniz.\r\n \r\n \r\n Herhangi bir desteğe ihtiyaç duyarsanız destek@happytable.app adresinden bize ulaşabilirsiniz. \r\n \r\n \r\n HappyTable Destek Takımı\r\n \r\n
\r\n
\r\n :\r\n
\r\n
\r\n \r\n You will see your open orders here\r\n\r\n
\r\n
\r\n \r\n Welcome to Happy Table admin panel!\r\n \r\n \r\n Use the menu on the left to organize your foods and categories, if you have not done yet.\r\n \r\n \r\n \r\n You can see paid and unpaid open orders below the Orders menu.\r\n \r\n \r\n Feel free to get in touch with whenever you need support through support@happytable.app\r\n \r\n \r\n HappyTable Support Team\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n fontFamily: 'Open Sans',\r\n backgroundColor: 'white',\r\n paddingBottom: '30px',\r\n padding: '0 10px',\r\n border: '1px #e8e7e7 solid',\r\n marginTop: '30px',\r\n '@media (min-width:768px)' : {\r\n width: '80%',\r\n }\r\n },\r\n title:{\r\n textAlign: 'center',\r\n fontSize: '1.3rem',\r\n },\r\n svgImageWrapper: {\r\n \r\n display: 'flex',\r\n justifyContent: 'center',\r\n \r\n '& > svg': {\r\n width: '30%',\r\n maxHeight: '200px',\r\n },\r\n\r\n '@media (min-width:600px)': {\r\n marginTop: '30px',\r\n }\r\n },\r\n textWrapper: {\r\n display:'flex',\r\n flexDirection: 'column',\r\n\r\n '& > span': {\r\n marginTop: '20px',\r\n }\r\n }\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport NotificationsIcon from '@material-ui/icons/Notifications';\r\nimport Button from '@material-ui/core/Button';\r\nimport { CenterFocusStrong } from '../../../node_modules/@material-ui/icons/index';\r\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport default function WarningOnOpenOrdersPage(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const history = useHistory();\r\n const [displayWarning, setDisplayWarning] = useState(false);\r\n\r\n useEffect(\r\n () => {\r\n\r\n if (Notification.permission != 'granted' && !localStorage.getItem('NotificationWarningDismissed')) {\r\n setDisplayWarning(true);\r\n }\r\n\r\n }, []\r\n )\r\n\r\n const dismissClicked = () => {\r\n setDisplayWarning(false);\r\n localStorage.setItem('NotificationWarningDismissed', 'true');\r\n }\r\n\r\n return (\r\n \r\n {\r\n displayWarning ?\r\n
\r\n
\r\n\r\n
\r\n
dismissClicked()}>\r\n \r\n
\r\n
\r\n \r\n\r\n {\r\n globalContext.globalState.selectedGuiLanguage == 'tr' ?\r\n \r\n Sipariş geldiğinde görüntülü uyarı da almak ister misiniz?\r\n \r\n :\r\n \r\n Would you like to have visual notifications when your order arrives?\r\n \r\n }\r\n\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n\r\n },\r\n message: {\r\n marginLeft: '10px',\r\n },\r\n wrapperDiv: {\r\n width: 'calc(95% - 20px)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: '#fff',\r\n fontWeight: 500,\r\n fontSize: '1.1rem',\r\n backgroundColor: '#2196f3',\r\n margin: '20px 0',\r\n borderRadius: '4px',\r\n boxShadow: '0px 3px 5px -1px rgba(0,0,0,0.2), 0px 6px 10px 0px rgba(0,0,0,0.14), 0px 1px 18px 0px rgba(0,0,0,0.12)',\r\n padding: '10px 10px',\r\n },\r\n rightSideWrapper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n },\r\n dismissDiv: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n cursor: 'pointer',\r\n },\r\n yesButton: {\r\n alignSelf: 'flex-end',\r\n },\r\n iconAndMessageWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n margin: '10px 0',\r\n justifyContent: 'center',\r\n },\r\n});","export function loadScript(scriptUrl) {\r\n\r\n if (!isScriptLoaded(scriptUrl)) {\r\n //console.log('script load');\r\n\r\n console.log('Loading script: ' + scriptUrl);\r\n const script = document.createElement('script');\r\n script.src = scriptUrl;\r\n //script.setAttribute('data-key','publish key');\r\n /*\r\n args.attributes.map(\r\n attr =>\r\n script.setAttribute(attr.name, attr.value)\r\n )\r\n */\r\n //console.log(script);\r\n document.body.appendChild(script);\r\n\r\n //console.log('running script');\r\n\r\n // }, 2000\r\n // )\r\n }\r\n}\r\n\r\nexport function isScriptLoaded(src) {\r\n return document.querySelector('script[src=\"' + src + '\"]') ? true : false;\r\n}","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useFetch from './useFetch';\r\nimport { loadScript } from '../Util/LoadScript';\r\n\r\nexport default function useOneSignal(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [sendOneSignalIdResponse, sendOneSignalId] = useFetch();\r\n\r\n useEffect(\r\n () => {\r\n\r\n const f = async () => {\r\n\r\n if (window.location.href.indexOf('http://localhost') != 0 || true) {\r\n loadScript('https://cdn.onesignal.com/sdks/OneSignalSDK.js');\r\n\r\n\r\n\r\n if (!globalContext.globalState.oneSignalInitialized) {\r\n\r\n\r\n\r\n\r\n let waitForScriptToLod = await new Promise((resolve, reject) => {\r\n const intervalId = setInterval(() => {\r\n\r\n if (window.OneSignal) {\r\n clearInterval(intervalId);\r\n resolve();\r\n }\r\n }, 100);\r\n })\r\n\r\n\r\n\r\n let oneSignal = window.OneSignal || [];\r\n\r\n\r\n\r\n\r\n globalContext.dispatchMethod({ type: 'INITIALIZE_ONESIGNAL', value: null, })\r\n let appId = window.location.href.indexOf('https://testadmin') == 0 ? \r\n \"f14245fa-25e4-4d30-8852-472b9217e2f1\" : \"728eaf3b-2b7f-4659-ab0a-b93111125279\";\r\n\r\n oneSignal.push(function () {\r\n oneSignal.init({\r\n appId: appId,\r\n welcomeNotification: {\r\n disable: true\r\n },\r\n promptOptions: {\r\n slidedown: {\r\n enabled: false,\r\n autoPrompt: false,\r\n //timeDelay: 2000000000,\r\n //pageViews: 3333,\r\n /* These prompt options values configure both the HTTP prompt and the HTTP popup. */\r\n /* actionMessage limited to 90 characters */\r\n actionMessage: \"Bu da yeni mesaj kendisi.\",\r\n /* acceptButtonText limited to 15 characters */\r\n acceptButtonText: \"ALLOW\",\r\n /* cancelButtonText limited to 15 characters */\r\n cancelButtonText: \"NO THANKS\",\r\n }\r\n }\r\n });\r\n });\r\n oneSignal.showHttpPermissionRequest();\r\n\r\n //\r\n oneSignal.push(function () {\r\n // Occurs when the user's subscription changes to a new value.\r\n oneSignal.on('subscriptionChange', async function (isSubscribed) {\r\n console.log('cagirildi');\r\n console.log(isSubscribed);\r\n\r\n if (isSubscribed) {\r\n console.log('in subs');\r\n let id = await oneSignal.getUserId();\r\n console.log('await: ' + id);\r\n sendOneSignalIdFunc(id);\r\n /*\r\n oneSignal.getUserId().then(\r\n oneSignalUserId => {\r\n console.log('burada geldi:' + oneSignalUserId);\r\n sendOneSignalIdFunc(oneSignalUserId);\r\n }\r\n ).catch(\r\n (err) =>\r\n console.log(err)\r\n )*/\r\n }\r\n else {\r\n console.log('user not subs');\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 f();\r\n\r\n }, []\r\n )\r\n\r\n const sendOneSignalIdFunc = (oneSignalUserId) => {\r\n console.log(\"one signal user id:\" + oneSignalUserId);\r\n sendOneSignalId(\r\n {\r\n url: '/admin/users/upsert-token',\r\n addTokenHeader: true,\r\n method: 'POST',\r\n postData: {\r\n \"oneSignalUserId\": oneSignalUserId,\r\n \"token\": \"string\",\r\n \"isActive\": true,\r\n },\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n console.log(sendOneSignalIdResponse);\r\n }, [sendOneSignalIdResponse]\r\n )\r\n return sendOneSignalIdFunc;\r\n}\r\n\r\n","import React, { useContext, useState, useEffect, useRef } from 'react';\r\nimport '../../../Styles/OpenOrders.scss'\r\nimport OpenOrders__GridView from './OpenOrders__GridView';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport { GlobalContext } from '../../../Contexts/GlobalContext';\r\nimport useOptionGroups from '../../OptionGroups/useOptionGroups';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport CallTheWaiter from '../../CallTheWaiter/CallTheWaiter';\r\nimport useGuiTranslations from '../../../Components/MultiLanguage/useGuiTranslations';\r\nimport NoOrdersYet from './NoOrdersYet';\r\nimport WarningOnOpenOrdersPage from '../../PushNotifications/WarningOnOpenOrdersPage';\r\nimport useOneSignal from '../../../CustomHooks/useOneSignal';\r\n\r\nexport default function OpenOrders(props) {\r\n\r\n const [getOpenOrdersResponse, getOpenOrders] = useFetch();\r\n const [orders, setOrders] = useState([]);\r\n const globalContext = useContext(GlobalContext);\r\n const [optionGroupsHookResponse, optionGroupsHook] = useOptionGroups();\r\n const [currency, setCurrency] = useState('');\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const timerId = useRef(null);\r\n const audio = new Audio('/telephone-ring.mp3');\r\n const [translateGui] = useGuiTranslations();\r\n const sendOneSignalIdFunc = useOneSignal();\r\n\r\n\r\n\r\n useEffect(\r\n () => {\r\n\r\n const f = async () => {\r\n\r\n //window.indexedDB.databases()\r\n let arr = await window.indexedDB.databases();\r\n if(arr.filter(db => db.name.indexOf('ONE_')>-1).length>0){\r\n console.log('mo'); \r\n var request = window.indexedDB.open(\"ONE_SIGNAL_SDK_DB\")\r\n //arr.filter(db => db.name.indexOf('ONE_')>-1))\r\n\r\n request.onerror = function (event) {\r\n console.log(\"Why didn't you allow my web app to use IndexedDB?!\");\r\n };\r\n request.onsuccess = function (event) {\r\n let db = event.target.result;\r\n console.log(db);\r\n\r\n db.transaction(\"Ids\").objectStore(\"Ids\").get(\"userId\").onsuccess = function (event) {\r\n console.log(\"Name for SSN 444-44-4444 is \" + event.target.result.id);\r\n sendOneSignalIdFunc(event.target.result.id);\r\n };\r\n\r\n\r\n db.onerror = function (event) {\r\n // Generic error handler for all errors targeted at this database's\r\n // requests!\r\n console.error(\"Database error: \" + event.target.errorCode);\r\n };\r\n\r\n };\r\n }\r\n else {\r\n console.log('no index db for onesignal');\r\n }\r\n \r\n\r\n }\r\n f();\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (getCustomerSettingsHookResponse.currency != null) {\r\n setCurrency(getCustomerSettingsHookResponse.currency.toUpperCase());\r\n }\r\n //console.log(getCustomerSettingsHookResponse);\r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n\r\n\r\n const getOrders = () => {\r\n //console.log('getting orders');\r\n\r\n getOpenOrders(\r\n {\r\n url: '/admin/orders?OrderStatus=Preparing&PaymentStatus=Completed&PageNumber=1&PageSize=50',\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n );\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (optionGroupsHookResponse.foodOptionGroups) {\r\n console.log(optionGroupsHookResponse);\r\n //getOrders();\r\n }\r\n }, [optionGroupsHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/OpenOrders' });\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 1,\r\n b: 2,\r\n },\r\n }\r\n )\r\n\r\n\r\n }, []\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n //console.log(timerId);\r\n if (getOpenOrdersResponse.orderList == null) {\r\n if (!timerId.current) {\r\n timerId.current = setInterval(getOrders, 5000);\r\n }\r\n }\r\n }, [getOpenOrdersResponse]\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n return () => { clearInterval(timerId.current) }\r\n }, []\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n //console.log(getOpenOrdersResponse);\r\n if (getOpenOrdersResponse.orderList != null) {\r\n let newOrders = [];\r\n let existingOrders = [...orders];\r\n let filteredExistingOrders = [];\r\n let ringTheBell = false;\r\n getOpenOrdersResponse.orderList.map(\r\n order => {\r\n if (orders.filter(orderFiltered => orderFiltered.orderNumber == order.orderNumber).length < 1) {\r\n //console.log(order);\r\n //NEW ORDER bu yeni ordermis cunku mevcut listede yok\r\n newOrders.push(order);//TODO: bu array'i printer'a da gondermek lazim\r\n ringTheBell = true;\r\n }\r\n }\r\n )\r\n\r\n //new order gelmis\r\n if (ringTheBell) {\r\n audio.play();\r\n if (globalContext.globalState.userInteractedWithTheDocument) {\r\n console.log('ring the bell');\r\n\r\n }\r\n else {\r\n console.log('can not ring the bell');\r\n }\r\n }\r\n\r\n //eger order artik gelmiyor ise butun itemlar serve edilmistir, listeden cikariyorum\r\n filteredExistingOrders = existingOrders.filter(\r\n existingOrder => getOpenOrdersResponse.orderList.filter(orderFromServer => orderFromServer.id == existingOrder.id).length > 0\r\n )\r\n\r\n setOrders([...filteredExistingOrders, ...newOrders]);\r\n }\r\n }, [getOpenOrdersResponse]\r\n )\r\n\r\n return (\r\n \r\n {\r\n (orders.length > 0) ?\r\n \r\n : null\r\n }\r\n \r\n {\r\n (orders.length > 0) ?\r\n \r\n :
\r\n \r\n
\r\n }\r\n
\r\n );\r\n}\r\n","import React, { useEffect, useState } from 'react';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport { formatDate, getFormattedDateTime } from '../../../Util/DateFunctions';\r\nimport useGuiTranslations from '../../../Components/MultiLanguage/useGuiTranslations';\r\n\r\nexport default function OrderHistoryLine(props) {\r\n const [translateGui] = useGuiTranslations();\r\n const { order } = props;\r\n const [displayDetails, setDisplayDetails] = useState(false);\r\n\r\n useEffect(\r\n () => {\r\n\r\n }, []\r\n )\r\n\r\n return (\r\n \r\n\r\n \r\n \r\n {order.orderNumber.substring(0, 6)}\r\n \r\n \r\n\r\n \r\n {\r\n order.orderType == \"SelfOrder\" ?\r\n translateGui(21)\r\n : null\r\n }\r\n {\r\n order.orderType == \"Collect\" ?\r\n translateGui(22)\r\n : null\r\n }\r\n {\r\n order.orderType == \"Deliver\" ?\r\n translateGui(23)\r\n : null\r\n }\r\n \r\n \r\n {getFormattedDateTime(order.orderDate)}\r\n {order.orderAmount}\r\n \r\n setDisplayDetails(!displayDetails)}>\r\n {displayDetails ? 'expand_less' : 'expand_more'}\r\n \r\n \r\n\r\n \r\n\r\n {\r\n displayDetails ?\r\n \r\n \r\n {\r\n order.orderDetail.map(\r\n orderItem =>\r\n\r\n
\r\n {orderItem.itemQuantity}x {orderItem.foodOrDrink} {orderItem.itemAmount}\r\n
\r\n\r\n )\r\n }\r\n
\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\n\r\n\r\n","import React, { useEffect, useContext } from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport 'date-fns';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport { MuiPickersUtilsProvider, KeyboardTimePicker, KeyboardDatePicker, } from '@material-ui/pickers';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport OrderHistoryLine from './OrderHistoryLine';\r\nimport { formatDate, getFormattedDateTime } from '../../../Util/DateFunctions';\r\nimport { GlobalContext } from '../../../Contexts/GlobalContext';\r\nimport useGuiTranslations from '../../../Components/MultiLanguage/useGuiTranslations';\r\nimport trLocale from \"date-fns/locale/tr\";\r\n\r\n\r\nfunction OrderHistory() {\r\n const [selectedDate, setSelectedDate] = React.useState(new Date());\r\n const [getOrdersResponse, getOrdersHook] = useFetch();\r\n const globalContext = useContext(GlobalContext);\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const handleDateChange = date => {\r\n console.log(formatDate(date));\r\n setSelectedDate(date);\r\n getOrders(date);\r\n };\r\n\r\n const theme = useTheme();\r\n const useStyles = makeStyles({\r\n card: {\r\n\r\n overflowX: 'hidden',\r\n\r\n '@media (min-width : 600px)': {\r\n // width: 'calc(100% - 20px)',\r\n },\r\n '& td': {\r\n //borderBottom : 'none',\r\n //padding:'0px 24px 0px 16px',\r\n fontSize: '12px',\r\n },\r\n '& th': {\r\n //padding: '16px 16px 0px 16px',\r\n },\r\n '& tbody>tr:not(:last-child):nth-child(2n-1)': {\r\n //backgroundColor : '#604a0814', \r\n //backgroundColor : 'rgb(247, 247, 247)',\r\n\r\n }\r\n },\r\n\r\n });\r\n\r\n const getOrders = (queryDate) => {\r\n let orderDate = queryDate == null ? (formatDate(new Date())) : formatDate(queryDate);\r\n getOrdersHook(\r\n {\r\n url: `/admin/orders?PaymentStatus=Completed&DateStart=${orderDate}&DateEnd=${orderDate}`,\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n );\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', {'page_path': '/OrderHistory'});\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n getOrders();\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: { \r\n a: 1,\r\n b: 3,\r\n },\r\n }\r\n )\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 {translateGui(25)}\r\n {translateGui(31)}\r\n {translateGui(32)}\r\n {translateGui(29)}\r\n \r\n\r\n \r\n \r\n \r\n {\r\n getOrdersResponse.orderList != undefined ?\r\n getOrdersResponse.orderList.map(\r\n order =>\r\n \r\n )\r\n\r\n : null\r\n }\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default OrderHistory;\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport MaterialTable from 'material-table';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport { getCookie } from '../../Util/Cookie';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\nfunction Categories() {\r\n const globalContext = useContext(GlobalContext);\r\n const [getCategoriesResponse, getCategoriesHook] = useFetch();\r\n const [addCategoryResponse, addCategoryHook] = useFetch();\r\n const [editCategoryResponse, editCategoryHook] = useFetch();\r\n const [deleteCategoryResponse, deleteCategoryHook] = useFetch();\r\n const [setCategoryOrderHookResponse, setCategoryOrderHook] = useFetch();\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const [state, setState] = React.useState({\r\n columns: [\r\n {\r\n title: 'Category Name',\r\n field: 'categoryName'\r\n },\r\n {\r\n type: 'boolean',\r\n title: 'Available',\r\n field: 'openToSales',\r\n initialEditValue: true,\r\n },\r\n ],\r\n data: [\r\n /*{ categoryName: 'Cold Starters',\r\n openToSales: true,\r\n },\r\n { categoryName: 'Charcoal Grills', \r\n openToSales: false,\r\n },\r\n { categoryName: 'Soft Drinks', \r\n openToSales: true,\r\n },*/\r\n ],\r\n });\r\n\r\n\r\n function getCategories() {\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...' , showButton: false } });\r\n getCategoriesHook(\r\n {\r\n url: '/admin/categories?PageNumber=1&PageSize=10',\r\n addTokenHeader: true,\r\n //headers: [{ name: 'Authorization', value: 'Bearer ' + getCookie('token') }],\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n let categoryArr = [];\r\n console.log(getCategoriesResponse);\r\n if (getCategoriesResponse.length != 0 && getCategoriesResponse) {\r\n getCategoriesResponse.categories.map(\r\n e => categoryArr.push({ categoryName: e.title, openToSales: e.isAvailable, categoryID: e.id })\r\n )\r\n\r\n setState(\r\n {\r\n ...state, data: categoryArr,\r\n }\r\n )\r\n }\r\n //globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getCategoriesResponse]\r\n )\r\n\r\n\r\n\r\n useEffect(\r\n () => {\r\n getCategories();\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 4,\r\n b: 5\r\n },\r\n }\r\n )\r\n\r\n }\r\n , []\r\n )\r\n\r\n\r\n const addCategory = async (newData) => {\r\n addCategoryHook(\r\n {\r\n url: '/admin/categories',\r\n method: 'POST',\r\n postData: {\r\n title: newData.categoryName,\r\n type: \"Food\",\r\n description: \"string\",\r\n isAvailable: newData.openToSales,\r\n },\r\n headers: [{ name: 'Authorization', value: 'Bearer ' + getCookie('token') }]\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (addCategoryResponse.length != 0 && addCategoryResponse) {\r\n //console.log('okmis');\r\n getCategories();\r\n }\r\n }\r\n , [addCategoryResponse]\r\n )\r\n\r\n\r\n const editCategory = async (newData, oldData) => {\r\n editCategoryHook(\r\n {\r\n url: '/admin/categories/' + oldData.categoryID,\r\n method: 'PUT',\r\n postData: {\r\n title: newData.categoryName,\r\n type: \"Food\",\r\n description: \"string\",\r\n isAvailable: newData.openToSales,\r\n },\r\n headers: [{ name: 'Authorization', value: 'Bearer ' + getCookie('token') }]\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (editCategoryResponse.length != 0 && addCategoryResponse) {\r\n //console.log('okmis');\r\n getCategories();\r\n }\r\n }\r\n , [editCategoryResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/Categories' });\r\n }, []\r\n )\r\n\r\n const deleteCategory = async (oldData) => {\r\n deleteCategoryHook(\r\n {\r\n url: '/admin/categories/' + oldData.categoryID + '?softDelete=true',\r\n method: 'DELETE',\r\n postData: {\r\n softDelete: 'true',\r\n },\r\n headers: [{ name: 'Authorization', value: 'Bearer ' + getCookie('token') }]\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (deleteCategoryResponse.length != 0 && deleteCategoryResponse) {\r\n //console.log('okmis');\r\n getCategories();\r\n }\r\n }\r\n , [deleteCategoryResponse]\r\n )\r\n\r\n\r\n const changeCategoryOrder = (categoryId, direction) => {\r\n console.log(categoryId + direction);\r\n setCategoryOrderHook(\r\n {\r\n url: `/admin/categories/${categoryId}/move/${direction}`,\r\n method: 'PUT',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n console.log(setCategoryOrderHookResponse);\r\n if (setCategoryOrderHookResponse.success != null) {\r\n getCategories();\r\n }\r\n }, [setCategoryOrderHookResponse]\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n let colsArr = [...state.columns];\r\n colsArr[0].title = capitalizeFirstLetter(translateGui(34));\r\n colsArr[1].title = capitalizeFirstLetter(translateGui(33));\r\n setState(\r\n {\r\n ...state, columns: colsArr,\r\n }\r\n )\r\n }, [globalContext.globalState.selectedGuiLanguage]\r\n )\r\n\r\n return (\r\n
\r\n new Promise((resolve, reject) => { addCategory(newData); resolve() }),\r\n onRowUpdate: (newData, oldData) => editCategory(newData, oldData),\r\n onRowDelete: oldData => new Promise((resolve, reject) => { deleteCategory(oldData); resolve() }),\r\n }}\r\n actions={[\r\n {\r\n icon: ArrowUpwardIcon,\r\n tooltip: translateGui(119),\r\n onClick: (event, rowData) => changeCategoryOrder(rowData.categoryID, 'Up')\r\n },\r\n {\r\n icon: ArrowDownwardIcon,\r\n tooltip: translateGui(118),\r\n onClick: (event, rowData) => changeCategoryOrder(rowData.categoryID, 'Down')\r\n },\r\n ]}\r\n localization={{\r\n header: {\r\n actions: capitalizeFirstLetter(translateGui(35)),\r\n \r\n },\r\n body: {\r\n emptyDataSourceMessage: 'No records to display',\r\n editRow: { deleteText: translateGui(114) } ,\r\n addTooltip: translateGui(115),\r\n deleteTooltip: translateGui(116),\r\n editTooltip: translateGui(117),\r\n },\r\n \r\n\r\n }}\r\n />\r\n
\r\n );\r\n}\r\nexport default Categories;\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '& span>button': {\r\n color: \"#5dbcd2\",\r\n fontSize: \"60px\",\r\n }\r\n },\r\n addButton: {\r\n '& .MuiToolbar-root span': {\r\n fontSize: '2rem',\r\n }\r\n }\r\n\r\n});","import React, { useState, useEffect, useContext } from 'react';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport AddBoxIcon from '@material-ui/icons/AddBox';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function ProductsTable(props) {\r\n const { selectedCategoryId, addProduct, editProduct } = props;\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [getProductsResponse, getProductsHook] = useFetch();\r\n const [setProductOrderHookResponse, setProductOrderHook] = useFetch();\r\n const [deleteProductHookResponse, deleteProductHook] = useFetch();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n function getProducts() {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n getProductsHook(\r\n {\r\n url: '/admin/products?PageNumber=1&PageSize=100&CategoryId=' + selectedCategoryId,\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n getProducts();\r\n }, [selectedCategoryId]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getProductsResponse]\r\n )\r\n\r\n const changeProductOrder = (productId, direction) => {\r\n setProductOrderHook(\r\n {\r\n url: `/admin/products/${productId}/move/${direction}`,\r\n method: 'PUT',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n console.log(setProductOrderHookResponse);\r\n if (setProductOrderHookResponse.success != null) {\r\n getProducts();\r\n }\r\n }, [setProductOrderHookResponse]\r\n )\r\n\r\n const deleteProduct = (productId) => {\r\n deleteProductHook(\r\n {\r\n url: `/admin/products/${productId}?softDelete=true`,\r\n method: 'DELETE',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (deleteProductHookResponse.length != 0 && deleteProductHookResponse) {\r\n //console.log('okmis');\r\n getProducts();\r\n }\r\n }, [deleteProductHookResponse]\r\n )\r\n\r\n\r\n return (\r\n \r\n
\r\n {capitalizeFirstLetter(translateGui(6))} \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 getProductsResponse.products != null ?\r\n getProductsResponse.products.map(\r\n (product, index) =>\r\n \r\n \r\n \r\n \r\n \r\n )\r\n : null\r\n }\r\n \r\n
\r\n {capitalizeFirstLetter(translateGui(35))}\r\n \r\n {capitalizeFirstLetter(translateGui(6))}\r\n \r\n {capitalizeFirstLetter(translateGui(27))}\r\n
\r\n \r\n changeProductOrder(product.id, 'Down')}>\r\n \r\n \r\n changeProductOrder(product.id, 'Up')}>\r\n \r\n \r\n editProduct(product.id)}>\r\n \r\n \r\n deleteProduct(product.id)}>\r\n \r\n \r\n {product.title}\r\n \r\n {product.price}\r\n
\r\n
\r\n\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n table: {\r\n width: '100%',\r\n '& td': {\r\n padding: '10px 0',\r\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\r\n },\r\n '& td:nth-child(1)': {\r\n textAlign: 'center',\r\n },\r\n '& th:nth-child(n+2)': {\r\n textAlign: 'left',\r\n },\r\n '& th': {\r\n padding: '20px 0',\r\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\r\n }\r\n },\r\n cursor: {\r\n cursor: 'pointer',\r\n },\r\n flex: { \"display\": \"flex\", \"alignItems\": \"center\", \"justifyContent\": \"space-between\", margin: '30px 10px 50px 10px' },\r\n title: { fontSize: '1.4rem', fontWeight: 500, },\r\n addIcon: { color: '#5dbcd2' },\r\n iconButton: {padding: '12px 5px'},\r\n\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\nexport default function AddOrEditOptionGroup__View(props) {\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n const OkAndCancelButton = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n )\r\n }\r\n\r\n\r\n const AllowMultiplesOfAnOption = () => {\r\n return (\r\n
\r\n \r\n props.setAllowMultiplesOfAnOption(e.target.checked)}\r\n />\r\n
\r\n\r\n )\r\n }\r\n\r\n\r\n\r\n return (\r\n
\r\n
\r\n props.setOptionGroupName(e.target.value)} helperText={props.optionGroupNameError} error={props.optionGroupNameError == '' ? false : true} />\r\n \r\n
{capitalizeFirstLetter(translateGui(48))}
\r\n
\r\n props.setFrom(e.target.value)} />\r\n -\r\n props.setTo(e.target.value)} />\r\n
\r\n
\r\n
{capitalizeFirstLetter(translateGui(51))}
\r\n {\r\n props.options.map(\r\n (option, index) =>\r\n
\r\n props.updateOption(index, 'optionName', e.target.value)} helperText={option.optionNameError} error={option.optionNameError == '' ? false : true} />\r\n props.updateOption(index, 'optionPrice', e.target.value)}\r\n InputProps={{\r\n startAdornment: {props.currency},\r\n }}\r\n helperText={option.optionPriceError} error={option.optionPriceError == '' ? false : true}\r\n />\r\n props.deleteOption(index)}>\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 useStyles = makeStyles({\r\n outerWrapper: {\r\n backgroundColor: 'rgba(142, 137, 137, 0.7)',\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: 101,\r\n overflowY: 'scroll',\r\n \"display\": \"flex\",\r\n \"justifyContent\": \"center\",\r\n },\r\n innerWrapper: {\r\n backgroundColor: 'white',\r\n minHeight: '100%',\r\n height: 'fit-content',\r\n width: '100%',\r\n padding: '0 10px',\r\n\r\n '& > *': {\r\n marginTop: '10px',\r\n }\r\n },\r\n dash: {\r\n margin: '0 5px',\r\n fontSize: '30px',\r\n color: 'gainsboro',\r\n },\r\n maxWidth150: {\r\n maxWidth: '150px',\r\n },\r\n optionRow: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n },\r\n deleteIcon: {\r\n color: 'gray',\r\n },\r\n okAndCancelButtonWrapper: { \"position\": \"fixed\", \"bottom\": \"0\", \"backgroundColor\": \"#f7f7f7\", \"display\": \"flex\", \"justifyContent\": \"flex-end\", \"width\": \"100%\", \"left\": \"0\" },\r\n okButton: { \"margin\": \"10px 10px\" },\r\n\r\n '@media (min-width:600px)': {\r\n innerWrapper: {\r\n backgroundColor: 'white',\r\n minHeight: '300px',\r\n height: 'fit-content',\r\n width: '500px',\r\n marginTop: '150px',\r\n\r\n },\r\n dash: {\r\n margin: '0 25px',\r\n display: 'inline',\r\n },\r\n okAndCancelButtonWrapper: { \"position\": \"static\", },\r\n }\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\nimport AddNewOptionGroup__View from './AddOrEditOptionGroup__View';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function AddOrEditOptionGroup(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [optionGroupName, setOptionGroupName] = useState('');\r\n const [optionGroupNameError, setOptionGroupNameError] = useState('');\r\n const [from, setFrom] = useState(0);\r\n const [to, setTo] = useState(20);\r\n const [allowMultiplesOfAnOption, setAllowMultiplesOfAnOption] = useState(true);\r\n const [options, setOptions] = useState([{ optionName: '', optionPrice: 0, optionNameError: '', optionPriceError: '' },]);\r\n const setGAPath = useGoogleAnalytics();\r\n const [addOptionGroupHookResponse, addOptionGroupHook] = useFetch();\r\n const [getOptionGroupHookResponse, getOptionGroupHook] = useFetch();\r\n const [updateOptionGroupHookResponse, updateOptionGroupHook] = useFetch();\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const [currency, setCurrency] = useState('');\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect (\r\n () => {\r\n if(getCustomerSettingsHookResponse.currency != null) {\r\n setCurrency(getCustomerSettingsHookResponse.currency.toUpperCase());\r\n }\r\n //console.log(getCustomerSettingsHookResponse);\r\n },[getCustomerSettingsHookResponse]\r\n )\r\n\r\n const validate = () => {\r\n if (optionGroupName == '') {\r\n setOptionGroupNameError(capitalizeFirstLetter(translateGui(54)))\r\n return false;\r\n }\r\n else {\r\n setOptionGroupNameError('')\r\n }\r\n\r\n let newOptions = [...options];\r\n let optionResult = true;\r\n options.map(\r\n (option, index) => {\r\n if (option.optionName == '') {\r\n newOptions[index].optionNameError = capitalizeFirstLetter(translateGui(55));\r\n optionResult = false;\r\n }\r\n else {\r\n newOptions[index].optionNameError = '';\r\n }\r\n \r\n console.log(option.optionPrice);\r\n if ( option.optionPrice.length != undefined && option.optionPrice.length == 0 ) {\r\n newOptions[index].optionPriceError = capitalizeFirstLetter(translateGui(56));\r\n optionResult = false;\r\n }\r\n else {\r\n newOptions[index].optionPriceError = '';\r\n }\r\n }\r\n )\r\n setOptions(newOptions);\r\n if(!optionResult) {\r\n console.log('falsemus');\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n const submit = () => {\r\n if (!validate())\r\n return;\r\n\r\n if (props.optionGroupId == 0) {\r\n addOptionGroup();\r\n }\r\n else {\r\n updateOptionGroup();\r\n }\r\n }\r\n\r\n const updateOptionGroup = () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n updateOptionGroupHook(\r\n {\r\n url: '/admin/food-options/' + props.optionGroupId,\r\n method: 'PUT',\r\n postData: {\r\n \"optionGroupName\": optionGroupName,\r\n \"from\": from,\r\n \"to\": to,\r\n \"addMultiplesOfItem\": allowMultiplesOfAnOption,\r\n \"options\": options.map(\r\n (option, index) => { return { optionId: index + 1, optionName: option.optionName, optionPrice: option.optionPrice } }),\r\n \"isAvailable\": true\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (updateOptionGroupHookResponse.id != null) {\r\n props.closeForm();\r\n }\r\n }, [updateOptionGroupHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (addOptionGroupHookResponse.id != null ) {\r\n //props.closeForm();\r\n if(props.setSelectedOptionGroupIdAndCloseOptionGroupForm){\r\n props.setSelectedOptionGroupIdAndCloseOptionGroupForm(addOptionGroupHookResponse.id);\r\n }\r\n else {\r\n props.closeForm();\r\n }\r\n }\r\n }, [addOptionGroupHookResponse]\r\n )\r\n\r\n const updateOption = (index, optionAttr, value) => {\r\n let newOptions = [...options];\r\n newOptions[index][optionAttr] = value;\r\n setOptions(newOptions);\r\n }\r\n\r\n const deleteOption = (index) => {\r\n let newOptions = [...options];\r\n newOptions.splice(index, 1);\r\n setOptions(newOptions);\r\n }\r\n\r\n const addNewOptionRow = () => {\r\n let newOptions = [...options];\r\n newOptions.push({ optionName: '', optionPrice: 0, optionNameError: '', optionPriceError: '' });\r\n setOptions(newOptions);\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (props.optionGroupId > 0) {\r\n getOptionGroupHook(\r\n {\r\n url: '/admin/food-options/' + props.optionGroupId,\r\n method: 'GET',\r\n addTokenHeader: true,\r\n postData: null,\r\n }\r\n )\r\n }\r\n\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (getOptionGroupHookResponse.id != null) {\r\n setOptionGroupName(getOptionGroupHookResponse.optionGroupName);\r\n setFrom(getOptionGroupHookResponse.from);\r\n setTo(getOptionGroupHookResponse.to);\r\n setAllowMultiplesOfAnOption(getOptionGroupHookResponse.addMultiplesOfItem);\r\n setOptions(getOptionGroupHookResponse.options.map(\r\n option => { return { optionName: option.optionName, optionPrice: option.optionPrice, optionNameError: '', optionPriceError: '', } }\r\n ))\r\n }\r\n }, [getOptionGroupHookResponse]\r\n )\r\n\r\n const addOptionGroup = () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Adding option group...', showButton: false } });\r\n addOptionGroupHook(\r\n {\r\n url: '/admin/food-options',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {\r\n \"optionGroupName\": optionGroupName,\r\n \"from\": from,\r\n \"to\": to,\r\n \"addMultiplesOfItem\": allowMultiplesOfAnOption,\r\n \"options\": options.map(\r\n (option, index) => { return { optionId: index + 1, optionName: option.optionName, optionPrice: option.optionPrice } }),\r\n \"isAvailable\": true\r\n },\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n setGAPath('/AddNewOptionGroup');\r\n }, []\r\n )\r\n\r\n\r\n return (\r\n \r\n )\r\n}","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport AddOrEditOptionGroup from '../OptionGroups/AddOrEditOptionGroup';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function FoodAndDrinks2_AddOrEditProduct_View(props) {\r\n const classes = useStyles();\r\n const [currency, setCurrency] = useState('');\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect (\r\n () => {\r\n if(getCustomerSettingsHookResponse.currency != null) {\r\n setCurrency(getCustomerSettingsHookResponse.currency.toUpperCase());\r\n }\r\n //console.log(getCustomerSettingsHookResponse);\r\n },[getCustomerSettingsHookResponse]\r\n )\r\n\r\n const PictureUpload = (rowInfo) => {\r\n return (\r\n
\r\n { props.setSelectedFileToImageSrc(e.target.files[0]); props.setFileInfo(e.target.files[0]) }}\r\n />\r\n\r\n {capitalizeFirstLetter(translateGui(41))}:\r\n \r\n \r\n\r\n
\r\n\r\n )\r\n }\r\n\r\n return (\r\n
\r\n
\r\n props.setName(e.target.value)} helperText={props.nameError} error={props.nameError == '' ? false : true} />\r\n props.setDesription(e.target.value)} />\r\n props.setPrice(e.target.value)}\r\n InputProps={{\r\n startAdornment: {currency},\r\n }} />\r\n\r\n
\r\n \r\n props.setAvailable(e.target.checked)}\r\n />\r\n
\r\n props.setProductGroup(e.target.value)} />\r\n
\r\n
{capitalizeFirstLetter(translateGui(7))}:
\r\n
\r\n props.setOptionGroupSelectValue(e.target.value)}\r\n >\r\n {\r\n props.getOptionGroupsHookResponse.foodOptionGroups != null ?\r\n props.getOptionGroupsHookResponse.foodOptionGroups.map(\r\n optionGroup =>\r\n {optionGroup.optionGroupName}\r\n )\r\n : null\r\n }\r\n\r\n \r\n \r\n
\r\n
\r\n {\r\n props.optionGroups.map(\r\n (optionGroup, index) =>\r\n
\r\n
\r\n {optionGroup.name}\r\n
\r\n
\r\n props.setOptionGroupId(optionGroup.id)}>\r\n props.removeFromOptionGroups(optionGroup.id)}>\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 props.optionGroupId > -1 ?\r\n props.setOptionGroupId(-1)} />\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n maxWidth: '600px',\r\n },\r\n formElementsWrapper: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n \"& > div\": {\r\n marginTop: '15px',\r\n }\r\n },\r\n foodImage: { \"width\": \"300px\", \"margin\": \"20px 0\" },\r\n addImageButton: { \"marginLeft\": \"20px\" },\r\n okAndCancelButtonWrapper: { \"bottom\": \"0\", \"backgroundColor\": \"#f7f7f7\", \"display\": \"flex\", \"justifyContent\": \"flex-end\", \"width\": \"100%\", \"left\": \"0\" },\r\n okButton: { \"margin\": \"10px 10px\" },\r\n optionGroupsWrapper: { \"borderBottom\": \"1px solid gray\", \"borderTop\": \"1px solid gray\", \"backgroundColor\": \"white\", padding: '10px' },\r\n combobox: { width: '250px', },\r\n addOptionGroupButton: { width: '250px', margin: '10px 0' },\r\n optionGroupTitle: { fontSize: '1.2rem', fontWeight: '500', },\r\n addedOptionGroupsWrapper: { padding: '10px 0', },\r\n addedOptionGroupRow: { \"width\": \"250px\", \"display\": \"flex\", \"alignItems\": \"center\", \"justifyContent\": \"space-between\" },\r\n cursor: {cursor:'pointer'},\r\n '@media (min-width:600px)': {\r\n addOptionGroupButton: { marginLeft: '10px' },\r\n }\r\n});","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\nimport FoodAndDrinks2_AddOrEditProduct_View from './FoodAndDrinks2_AddOrEditProduct_View';\r\nimport useOptionGroups from '../OptionGroups/useOptionGroups';\r\n\r\n\r\n\r\nexport default function FoodAndDrinks2_AddOrEditProduct(props) {\r\n const { selectedCategoryId, editProductId, closeForm } = props;\r\n const globalContext = useContext(GlobalContext);\r\n const [name, setName] = useState('');\r\n const [nameError, setNameError] = useState('');\r\n const [description, setDesription] = useState('');\r\n const [price, setPrice] = useState(1.1);\r\n const [available, setAvailable] = useState(true);\r\n const [fileInfo, setFileInfo] = useState(null);\r\n const [addProductResponse, addProductHook] = useFetch();\r\n const [editPictureResponse, editPictureHook] = useFetch();\r\n const [getProductHookResponse, getProductHook] = useFetch();\r\n const [editProductHookResponse, editProductHook] = useFetch();\r\n const [pictureUrl, setPictureUrl] = useState(null);\r\n const setGAPath = useGoogleAnalytics();\r\n\r\n const [optionGroups, setOptionGroups] = useState([]);\r\n const [optionGroupSelectValue, setOptionGroupSelectValue] = useState(2);\r\n const [optionGroupId, setOptionGroupId] = useState(-1);//-1 ise kapali, 0 ise yeni urun, >0 ise edit ve urun id\r\n const [getOptionGroupsHookResponse, getOptionGroupsHook] = useOptionGroups();\r\n const [productGroup, setProductGroup] = useState('');\r\n\r\n useEffect(\r\n () => {\r\n if (optionGroupId == -1) {\r\n console.log('option group edit oldu veya yeni bir option group eklendi')\r\n getOptionGroupsHook();\r\n }\r\n }, [optionGroupId]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //option grup edit oldugunda ismi degismis olabilir.\r\n console.log('getOptionGroupsHookResponse');\r\n setOptionGroups(\r\n optionGroups.map(\r\n optionGroupAdded => {\r\n let renamedOptionGroup = getOptionGroupsHookResponse.foodOptionGroups.filter(o => o.id == optionGroupAdded.id)[0];\r\n return { id: renamedOptionGroup.id, name: renamedOptionGroup.optionGroupName }\r\n }\r\n )\r\n )\r\n }, [getOptionGroupsHookResponse]\r\n )\r\n\r\n const addToOptionGroups = () => {\r\n\r\n if (getOptionGroupsHookResponse.foodOptionGroups.length > 0) {\r\n let foodOptionGroupsOnState = [...getOptionGroupsHookResponse.foodOptionGroups];\r\n let optionGroupName = getOptionGroupsHookResponse.foodOptionGroups.filter(optionGroup => optionGroup.id == optionGroupSelectValue)[0].optionGroupName;\r\n let newOptionGroup = { id: optionGroupSelectValue, name: optionGroupName };\r\n\r\n\r\n let newOptionGroups = [...optionGroups];\r\n newOptionGroups.push(newOptionGroup);\r\n setOptionGroups(newOptionGroups);\r\n }\r\n }\r\n\r\n function removeFromOptionGroups(optionGroupId) {\r\n let newOptionGroups = optionGroups.filter(optionGroup => optionGroup.id != optionGroupId);\r\n setOptionGroups(newOptionGroups);\r\n }\r\n\r\n useEffect(\r\n () => {\r\n setGAPath('/AddOrEditProduct');\r\n }, []\r\n )\r\n\r\n\r\n\r\n const setSelectedFileToImageSrc = (file) => {\r\n if (file == null) {\r\n setPictureUrl(null);\r\n }\r\n else {\r\n var fr = new FileReader();\r\n fr.onload = function () {\r\n setPictureUrl(fr.result);\r\n }\r\n fr.readAsDataURL(file);\r\n }\r\n\r\n\r\n }\r\n\r\n const validate = () => {\r\n if (name == '') {\r\n setNameError('Enter a food or drink name');\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n const submit = () => {\r\n if (!validate()) {\r\n return;\r\n }\r\n if (editProductId == 0) {\r\n //urun ekleme imis\r\n addProduct();\r\n }\r\n else {\r\n //editmis\r\n editProduct();\r\n }\r\n }\r\n\r\n const addProduct = () => {\r\n addProductHook(\r\n {\r\n url: '/admin/products',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {\r\n title: name,\r\n type: \"Food\",\r\n description: description,\r\n isAvailable: available,\r\n price: price,\r\n categoryId: selectedCategoryId,\r\n optionGroupIdList: optionGroups.map(optionGroup => optionGroup.id),\r\n productGroup: productGroup,\r\n },\r\n }\r\n )\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (addProductResponse.length != 0 && addProductResponse) {\r\n if (fileInfo != null) {\r\n console.log(fileInfo);\r\n let formData = new FormData();\r\n formData.append('file', fileInfo);\r\n editPictureHook(\r\n {\r\n url: '/admin/products/' + addProductResponse.id + '/upload-image',\r\n method: 'PUT',\r\n postData: formData,\r\n addTokenHeader: true,\r\n multipart: true,\r\n }\r\n )\r\n }\r\n else {\r\n props.closeForm();\r\n }\r\n }\r\n }\r\n , [addProductResponse]\r\n )\r\n\r\n\r\n const editProduct = async (newData, oldData) => {\r\n editProductHook(\r\n {\r\n url: '/admin/products/' + editProductId,\r\n method: 'PUT',\r\n postData: {\r\n title: name,\r\n description: description,\r\n isAvailable: available,\r\n price: price,\r\n categoryId: selectedCategoryId,\r\n optionGroupIdList: optionGroups.map(optionGroup => optionGroup.id),\r\n productGroup: productGroup,\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n\r\n if (fileInfo != null) {\r\n console.log(fileInfo);\r\n let formData = new FormData();\r\n formData.append('file', fileInfo);\r\n editPictureHook(\r\n {\r\n url: '/admin/products/' + editProductId + '/upload-image',\r\n method: 'PUT',\r\n postData: formData,\r\n addTokenHeader: true,\r\n multipart: true,\r\n }\r\n )\r\n }\r\n else {\r\n\r\n if (pictureUrl == null) {\r\n editPictureHook(\r\n {\r\n url: '/admin/products/' + editProductId + '/remove-image',\r\n method: 'PUT',\r\n addTokenHeader: true,\r\n multipart: true,\r\n }\r\n )\r\n }\r\n }\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (editProductHookResponse.id != null) {\r\n props.closeForm();\r\n }\r\n }, [editProductHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (editPictureResponse.success != null) {\r\n props.closeForm();\r\n }\r\n }, [editPictureResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (editProductId > 0) {\r\n //edit edilecek urun\r\n getProductHook(\r\n {\r\n url: '/admin/products/' + editProductId,\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n }, []\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (getProductHookResponse.id != null) {\r\n const { title, description, price, isAvailable, picture, productGroup } = getProductHookResponse;\r\n setName(title);\r\n setDesription(description);\r\n setPrice(price);\r\n setAvailable(isAvailable);\r\n setPictureUrl(picture == '' ? null : 'https://' + picture);\r\n setOptionGroups(\r\n getProductHookResponse.optionGroups.map(\r\n optionGroup => { return { id: optionGroup.id, name: optionGroup.optionGroupName } }\r\n )\r\n )\r\n setProductGroup(productGroup);\r\n }\r\n }, [getProductHookResponse]\r\n )\r\n\r\n /*\r\n useEffect(\r\n () => {\r\n getOptionGroups();\r\n }, [getProductHookResponse]\r\n )\r\n\r\n\r\n const getOptionGroups = () => {\r\n getOptionGroupsHook(\r\n {\r\n url: '/admin/food-options/',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n */\r\n\r\n useEffect(\r\n () => {\r\n //option grup edit oldugunda ismi degismis olabilir.\r\n console.log('getOptionGroupsHookResponse');\r\n console.log(getOptionGroupsHookResponse);\r\n if (!Array.isArray(getOptionGroupsHookResponse)) { //response dolunca object oluyor\r\n console.log('not arr');\r\n\r\n setOptionGroups(\r\n optionGroups.map(\r\n optionGroupAdded => {\r\n let renamedOptionGroup = getOptionGroupsHookResponse.foodOptionGroups.filter(o => o.id == optionGroupAdded.id)[0];\r\n\r\n console.log(renamedOptionGroup.id);\r\n return { id: renamedOptionGroup.id, name: renamedOptionGroup.optionGroupName }\r\n }\r\n )\r\n )\r\n\r\n }\r\n }, [getOptionGroupsHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //option grup edit oldugunda ismi degismis olabilir.\r\n console.log('getOptionGroupsHookResponse2');\r\n console.log(getOptionGroupsHookResponse);\r\n let selectedOptionGroupId = 0;\r\n if (!Array.isArray(getOptionGroupsHookResponse)) { //response dolunca object oluyor\r\n console.log('not arr2');\r\n getOptionGroupsHookResponse.foodOptionGroups.map(\r\n optionGroup =>\r\n selectedOptionGroupId = optionGroup.id\r\n )\r\n console.log('2:' + selectedOptionGroupId);\r\n setOptionGroupSelectValue(selectedOptionGroupId);\r\n }\r\n }, [getOptionGroupsHookResponse]\r\n )\r\n\r\n const setSelectedOptionGroupIdAndCloseOptionGroupForm = (newlyAddedOptionGroupId) => {\r\n console.log('form kapandi');\r\n setOptionGroupId(-1); //bu option group formunu kapatiyor\r\n setOptionGroupSelectValue(newlyAddedOptionGroupId);\r\n }\r\n\r\n\r\n return (\r\n \r\n )\r\n}\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport MaterialTable, { MTableToolbar, MTableEditField } from 'material-table';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Select from '@material-ui/core/Select';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport ProductsTable from './FoodAndDrinks2__Products';\r\nimport AddOrEditProduct from './FoodAndDrinks2__AddOrEditProduct';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n formControl: {\r\n margin: theme.spacing(1),\r\n minWidth: 120,\r\n },\r\n selectEmpty: {\r\n marginTop: theme.spacing(2),\r\n },\r\n root: {\r\n '& span>button': {\r\n color: \"#5dbcd2\",\r\n fontSize: \"60px\",\r\n }\r\n },\r\n}));\r\n\r\nexport default function FoodAndDrinks2() {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [getCategoriesResponse, getCategoriesHook] = useFetch();\r\n const [addProductResponse, addProductHook] = useFetch();\r\n const [categories, setCategories] = React.useState([]);\r\n const [products, setProducts] = React.useState([]);\r\n const [selectedCategoryId, setSelectedCategoryId] = React.useState(0);\r\n const [deleteProductResponse, deleteProductHook] = useFetch();\r\n const [editProductResponse, editProductHook] = useFetch();\r\n const [editPictureResponse, editPictureHook] = useFetch();\r\n const [deletePictureResponse, deletePictureHook] = useFetch();\r\n const [fileInfo, setFileInfo] = useState(null);\r\n const [editProductId, setEditProductId] = useState(-1); //0 ise yeni product ekle, -1 ise kapali\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const fileColumnRender = (rowData) => {\r\n\r\n return (\r\n
\r\n \r\n {rowData.picture != '' ?\r\n deletePicture(rowData.productId)}>Delete\r\n : null\r\n }\r\n
)\r\n }\r\n\r\n const fileColumnEditRender = (rowInfo) => {\r\n return (\r\n
\r\n onFileChange(e, rowInfo.rowData.productId)}\r\n\r\n />\r\n {fileInfo == null ? 'mo' : 'degil'}\r\n \r\n
\r\n )\r\n }\r\n\r\n const [state, setState] = React.useState({\r\n columns: [\r\n { title: 'Food or Drink Name', field: 'foodOrDrinkName' },\r\n { title: 'Price', field: 'price' },\r\n {\r\n type: 'boolean',\r\n title: 'Available',\r\n field: 'openToSales',\r\n initialEditValue: true,\r\n },\r\n ],\r\n data: [\r\n ],\r\n dataAll: [\r\n {\r\n categoryName: 'Drinks',\r\n products: [\r\n {\r\n foodOrDrinkName: 'Cola',\r\n openToSales: true,\r\n },\r\n {\r\n foodOrDrinkName: 'Ayran',\r\n openToSales: true,\r\n },\r\n {\r\n foodOrDrinkName: 'Fanta',\r\n openToSales: false,\r\n },\r\n ]\r\n },\r\n {\r\n categoryName: 'Food',\r\n products: [\r\n {\r\n foodOrDrinkName: 'Kofte',\r\n openToSales: false,\r\n },\r\n {\r\n foodOrDrinkName: 'Kebap',\r\n openToSales: true,\r\n },\r\n {\r\n foodOrDrinkName: 'Ali Nazik',\r\n openToSales: true,\r\n\r\n },\r\n ]\r\n }\r\n\r\n ],\r\n categories: ['Drinks', 'Food']\r\n });\r\n\r\n const deletePicture = (productId) => {\r\n deletePictureHook(\r\n {\r\n url: '/admin/products/' + productId + '/remove-image',\r\n method: 'PUT',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/FoodAndDrinks' });\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //if (deletePictureResponse != [])\r\n //getProducts();\r\n }, [deletePictureResponse]\r\n )\r\n\r\n\r\n const onFileChange = (event, productId) => {\r\n setFileInfo(event.target.files[0]);\r\n }\r\n\r\n function getCategories() {\r\n\r\n\r\n getCategoriesHook(\r\n {\r\n url: '/admin/categories?PageNumber=1&PageSize=10',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n\r\n /*\r\n useEffect(\r\n () => {\r\n let productArr = [];\r\n console.log(getProductsResponse);\r\n \r\n \r\n if (getProductsResponse.length != 0 && getProductsResponse) {\r\n getProductsResponse.products.map(\r\n (product, index) => {\r\n productArr.push({ foodOrDrinkName: product.title, openToSales: product.isAvailable, price: product.price, description: product.description, productId: product.id, picture: product.picture })\r\n }\r\n )\r\n setProducts(productArr);\r\n }\r\n else {\r\n setProducts(productArr);\r\n }\r\n \r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getProductsResponse]\r\n )\r\n */\r\n\r\n useEffect(\r\n () => {\r\n\r\n getCategories();\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 4,\r\n b: 6,\r\n },\r\n }\r\n )\r\n }, []\r\n );\r\n\r\n useEffect(\r\n () => {\r\n let categoryArr = [];\r\n console.log(getCategoriesResponse);\r\n if (getCategoriesResponse.length != 0 && getCategoriesResponse) {\r\n getCategoriesResponse.categories.map(\r\n (e, index) => {\r\n if (index == 0) {\r\n setSelectedCategoryId(e.id);\r\n }\r\n categoryArr.push({ categoryName: e.title, openToSales: e.isActive, id: e.id })\r\n }\r\n )\r\n setCategories(categoryArr);\r\n }\r\n\r\n }, [getCategoriesResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (selectedCategoryId != 0) {\r\n //getProducts();\r\n }\r\n }, [selectedCategoryId]\r\n )\r\n\r\n\r\n\r\n\r\n const addProduct = async (newData) => {\r\n addProductHook(\r\n {\r\n url: '/admin/products',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {\r\n title: newData.foodOrDrinkName,\r\n type: \"Food\",\r\n description: newData.description,\r\n isAvailable: newData.openToSales,\r\n price: newData.price,\r\n categoryId: selectedCategoryId\r\n },\r\n }\r\n )\r\n }\r\n\r\n \r\n\r\n\r\n useEffect(\r\n () => {\r\n\r\n if (editPictureResponse.fileName != null) {\r\n //getProducts();\r\n }\r\n }, [editPictureResponse]\r\n )\r\n\r\n const deleteProduct = async (oldData) => {\r\n deleteProductHook(\r\n {\r\n url: '/admin/products/' + oldData.productId + '?softDelete=false',\r\n method: 'DELETE',\r\n postData: {\r\n softDelete: 'false',\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (deleteProductResponse.length != 0 && deleteProductResponse) {\r\n //console.log('okmis');\r\n //getProducts();\r\n }\r\n }\r\n , [deleteProductResponse]\r\n )\r\n const comboChange = (e) => {\r\n console.log(e.target.value);\r\n setSelectedCategoryId(e.target.value);\r\n //setValue(e.target.value);\r\n //setState({...state, data : state.dataAll.filter(a => a.categoryName == e.target.value)[0].products });\r\n\r\n }\r\n\r\n const editProduct = async (newData, oldData) => {\r\n editProductHook(\r\n {\r\n url: '/admin/products/' + oldData.productId,\r\n method: 'PUT',\r\n postData: {\r\n title: newData.foodOrDrinkName,\r\n description: newData.description,\r\n isAvailable: newData.openToSales,\r\n price: newData.price,\r\n categoryId: selectedCategoryId,\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n\r\n if (fileInfo != null) {\r\n let formData = new FormData();\r\n formData.append('file', fileInfo);\r\n editPictureHook(\r\n {\r\n url: '/admin/products/' + oldData.productId + '/upload-image',\r\n method: 'PUT',\r\n postData: formData,\r\n addTokenHeader: true,\r\n multipart: true,\r\n }\r\n )\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (editProductResponse.length != 0 && editProductResponse) {\r\n //console.log('okmis');\r\n //getProducts();\r\n }\r\n }\r\n , [editProductResponse]\r\n )\r\n\r\n \r\n\r\n const ProductsCategorySelector = (props) => {\r\n return (\r\n \r\n \r\n {capitalizeFirstLetter(translateGui(5))}\r\n \r\n {categories.map(category =>\r\n {category.categoryName}\r\n )}\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n\r\n\r\n return (\r\n \r\n
\r\n {\r\n editProductId == -1 ?\r\n \r\n \r\n setEditProductId(0)} editProduct={(productId) => setEditProductId(productId)} selectedCategoryId={selectedCategoryId}>\r\n \r\n :\r\n setEditProductId(-1)} editProductId={editProductId} selectedCategoryId={selectedCategoryId}>\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\n","import React, { useState, useEffect, useContext } from 'react';\r\nimport MaterialTable from 'material-table';\r\nimport '../Styles/Tables.scss';\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../Util/StringFunctions';\r\n\r\n\r\nfunction Tables() {\r\n const [getTablesHookResponse, getTablesHook] = useFetch();\r\n const [addTableHookResponse, addTableHook] = useFetch();\r\n const [deleteTableResponse, deleteTableHook] = useFetch();\r\n const [editTableResponse, editTableHook] = useFetch();\r\n const [getQRCodeResponse, getQRCodeHook] = useFetch();\r\n const [qrCodeBase64, setQRCodeBase64] = useState();\r\n const [selectedTableURL, setSelectedTableURL] = useState('');\r\n const [selectedTableName, setSelectedTableName] = useState('-1');\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n const [customerLogoURL, setCustomerLogoURL] = useState();\r\n const [translateGui] = useGuiTranslations();\r\n const globalContext = useContext(GlobalContext);\r\n const [tables, setTables] = useState([]);\r\n const [clickedTable, setClickedTable] = useState();\r\n const [columns, setColumns] = React.useState([\r\n { title: 'Table Name', field: 'tableName' },\r\n ]);\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/Tables' });\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n setColumns([\r\n {\r\n title: capitalizeFirstLetter(translateGui(57)),\r\n field: 'tableName'\r\n },\r\n ])\r\n }, [globalContext.globalState.selectedGuiLanguage]\r\n )\r\n useEffect(\r\n () => {\r\n if (tables.length > 0) {\r\n setSelectedTable(tables[0].id, tables[0].friendlyUrl, tables[0].tableName);\r\n }\r\n }, [tables]\r\n )\r\n\r\n\r\n function getTables() {\r\n //console.log('buradayiz');\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n getTablesHook(\r\n {\r\n url: '/admin/tables?PageNumber=1&PageSize=50',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n const compare = (table1, table2) => {\r\n let comparison = -1;\r\n\r\n\r\n if (parseInt(table1.tableName) > parseInt(table2.tableName)) {\r\n comparison = 1;\r\n }\r\n return comparison;\r\n }\r\n\r\n useEffect(\r\n () => {\r\n let tableArr = [];\r\n //console.log(getTablesHookResponse);\r\n\r\n\r\n if (getTablesHookResponse.length != 0 && getTablesHookResponse) {\r\n getTablesHookResponse.tables.map(\r\n (table, index) => {\r\n tableArr.push({ tableName: table.title, id: table.id, friendlyUrl: table.friendlyUrl })\r\n }\r\n )\r\n\r\n tableArr.sort(compare);\r\n\r\n\r\n setTables(tableArr);\r\n }\r\n else {\r\n setTables(tableArr);\r\n }\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getTablesHookResponse]\r\n )\r\n\r\n useEffect(() => {\r\n getTables();\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 10,\r\n },\r\n }\r\n )\r\n }, [])\r\n\r\n\r\n useEffect(\r\n () => {\r\n getCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n let categoryArr = [];\r\n //console.log(getCustomerSettingsHookResponse);\r\n if (getCustomerSettingsHookResponse.length != 0 && getCustomerSettingsHookResponse) {\r\n //setQRCodeBase64('data:image/png;base64, ' + getCustomerSettingsHookResponse.logoBase64);\r\n setCustomerLogoURL('http://' + getCustomerSettingsHookResponse.logoBase64);\r\n }\r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n\r\n const addTable = async (newData) => {\r\n addTableHook(\r\n {\r\n url: '/admin/tables',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {\r\n title: newData.tableName,\r\n },\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addTableHookResponse);\r\n if (addTableHookResponse.length != 0 && addTableHookResponse) {\r\n //console.log('okmis');\r\n getTables();\r\n }\r\n }\r\n , [addTableHookResponse]\r\n )\r\n const editTable = async (newData, oldData) => {\r\n editTableHook(\r\n {\r\n url: '/admin/tables/' + oldData.id,\r\n method: 'PUT',\r\n postData: {\r\n title: newData.tableName,\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (editTableResponse.length != 0 && editTableResponse) {\r\n //console.log('okmis');\r\n getTables();\r\n }\r\n }\r\n , [editTableResponse]\r\n )\r\n\r\n const deleteTable = async (oldData) => {\r\n deleteTableHook(\r\n {\r\n url: '/admin/tables/' + oldData.id + '?softDelete=false',\r\n method: 'DELETE',\r\n postData: {\r\n softDelete: 'false',\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n //console.log(addCategoryResponse);\r\n if (deleteTableResponse.length != 0 && deleteTableResponse) {\r\n //console.log('okmis');\r\n getTables();\r\n }\r\n }\r\n , [deleteTableResponse]\r\n )\r\n\r\n function getQRCode(tableId, friendlyUrl) {\r\n\r\n if (clickedTable != tableId) {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n getQRCodeHook(\r\n {\r\n url: '/admin/tables/qr-code/' + tableId,\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n\r\n setSelectedTableURL(friendlyUrl);\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (getQRCodeResponse.length != 0 && getQRCodeResponse) {\r\n setQRCodeBase64('data:image/png;base64, ' + getQRCodeResponse);\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }\r\n }, [getQRCodeResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //console.log(qrCodeBase64);\r\n }, [qrCodeBase64]\r\n )\r\n\r\n const setSelectedTable = (tableId, friendlyUrl, tableName) => {\r\n setClickedTable(tableId);\r\n setSelectedTableName(tableName);\r\n getQRCode(tableId, friendlyUrl);\r\n }\r\n\r\n const rowClick = (event, rowData, togglePanel) => {\r\n setSelectedTable(rowData.id, rowData.friendlyUrl, rowData.tableName);\r\n console.log(rowData);\r\n }\r\n\r\n const printQRCode = () => {\r\n //console.log('print qr code');\r\n //var content = document.getElementById(\"divcontents\");\r\n var content = \"\";\r\n content += \"
\"\r\n content += ``\r\n content += \" Please visit: \"\r\n content += \"\" + selectedTableURL + \" \"\r\n content += \"\" + selectedTableName + \" is your table\";\r\n content += \" or scan the QR Code \";\r\n content += \"\";\r\n content += \"
\"\r\n console.log(content);\r\n\r\n var pri = document.getElementById(\"ifmcontentstoprint\").contentWindow;\r\n pri.document.open();\r\n pri.document.write(content);\r\n pri.document.close();\r\n pri.focus();\r\n pri.print();\r\n }\r\n\r\n return (\r\n
\r\n new Promise((resolve, reject) => { addTable(newData); resolve() }),\r\n onRowUpdate: (newData, oldData) => editTable(newData, oldData),\r\n onRowDelete: oldData => new Promise((resolve, reject) => { deleteTable(oldData); resolve() }),\r\n }}\r\n localization={{\r\n header: {\r\n actions: capitalizeFirstLetter(translateGui(35)),\r\n },\r\n body: {\r\n emptyDataSourceMessage: 'No records to display',\r\n }\r\n }}\r\n />\r\n
\r\n {capitalizeFirstLetter(translateGui(58))} {selectedTableName}:\r\n
\r\n {selectedTableURL}\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\nexport default Tables;\r\n","import React, { useContext, useEffect, useState } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from '../CustomHooks/useFetch';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport DefaultLanguageSelector from './MultiLanguage/DefaultLanguageSelector';\r\nimport TimeZoneSelector from './MultiLanguage/TimeZoneSelector';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../Util/StringFunctions';\r\n\r\nexport default function Logo() {\r\n\r\n const globalContext = useContext(GlobalContext);\r\n const [putCustomerSettingsHookResponse, putCustomerSettingsHook] = useFetch();\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n const [qrCodeBase64, setQRCodeBase64] = useState();\r\n const [restaurantName, setRestaurantName] = useState('');\r\n const [restaurantNameError, setRestaurantNameError] = useState('');\r\n const [phone, setPhone] = useState('');\r\n const [phoneError, setPhoneError] = useState('');\r\n const classes = useStyles();\r\n const [language, setLanguage] = useState('en');\r\n const [timeZone, setTimeZone] = useState('Europe/London');\r\n const [translateGui] = useGuiTranslations();\r\n\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n getCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,//'Company Info',\r\n b: 66,//'Settings > Company Info'\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/Logo' });\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n console.log(getCustomerSettingsHookResponse);\r\n\r\n if (getCustomerSettingsHookResponse.length != 0 && getCustomerSettingsHookResponse) {\r\n setQRCodeBase64('https://' + getCustomerSettingsHookResponse.logoBase64);\r\n\r\n if (getCustomerSettingsHookResponse.info != null) {\r\n let info = JSON.parse(getCustomerSettingsHookResponse.info);\r\n console.log(info);\r\n if (info.phone != null) {\r\n setPhone(info.phone)\r\n }\r\n if (info.displayName != null) {\r\n setRestaurantName(info.displayName)\r\n }\r\n if (getCustomerSettingsHookResponse.timeZoneId) {\r\n setTimeZone(getCustomerSettingsHookResponse.timeZoneId);\r\n console.log(getCustomerSettingsHookResponse.timeZoneId);\r\n }\r\n if (getCustomerSettingsHookResponse.defaultLanguage) {\r\n //setLanguage(getCustomerSettingsHookResponse.langCode);\r\n setLanguage(getCustomerSettingsHookResponse.defaultLanguage);\r\n }\r\n }\r\n\r\n\r\n }\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n\r\n const putCustomerSettings = (logoFileBase64, _fileName) => {\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n\r\n putCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'PUT',\r\n postData: {\r\n logoBase64: logoFileBase64,\r\n logoFileName: _fileName,\r\n info: {\r\n phone: phone,\r\n displayName: restaurantName,\r\n },\r\n timeZoneId: timeZone,\r\n langCode: language,\r\n },\r\n }\r\n )\r\n }\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n if (!Array.isArray(putCustomerSettingsHookResponse)) {\r\n setQRCodeBase64('https://' + putCustomerSettingsHookResponse.logoBase64);\r\n }\r\n }, [putCustomerSettingsHookResponse]\r\n )\r\n\r\n const handleFile = (e) => {\r\n console.log(e.target.files);\r\n if (e.target.files != null && e.target.files[0] != null) {\r\n\r\n var reader = new FileReader();\r\n reader.fileName = e.target.files[0].name;\r\n reader.fileType = e.target.files[0].type;\r\n\r\n reader.onload = function (readerEvt) {\r\n console.log(readerEvt.target);\r\n var binaryString = readerEvt.target.result;\r\n let base64String = btoa(binaryString);\r\n base64String = 'data:' + readerEvt.target.fileType + ';base64, ' + base64String;\r\n putCustomerSettings(base64String, '', readerEvt.target.fileName);\r\n };\r\n\r\n reader.readAsBinaryString(e.target.files[0]);\r\n }\r\n }\r\n\r\n\r\n return (\r\n
\r\n \r\n setRestaurantName(e.target.value)} id=\"filled-number\" label={capitalizeFirstLetter(translateGui(60))} />\r\n setPhone(e.target.value)} id=\"filled-number2\" label={capitalizeFirstLetter(translateGui(61))} />\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n
\r\n Logo:\r\n \r\n\r\n
\r\n
* {capitalizeFirstLetter(translateGui(64))}
\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 useStyles = makeStyles({\r\n card: {\r\n '@media (min-width : 600px)': {\r\n // width: 'calc(100% - 20px)',\r\n },\r\n '& td': {\r\n //borderBottom : 'none',\r\n //padding:'0px 24px 0px 16px',\r\n fontSize: '12px',\r\n },\r\n '& th': {\r\n //padding: '16px 16px 0px 16px',\r\n },\r\n '& tbody>tr:not(:last-child):nth-child(2n-1)': {\r\n //backgroundColor : '#604a0814', \r\n //backgroundColor : 'rgb(247, 247, 247)',\r\n\r\n }\r\n },\r\n textbox: {\r\n '& input': {\r\n //backgroundColor: 'white',\r\n width: '250px',\r\n\r\n },\r\n },\r\n companyInfoWrapper: {\r\n padding: '10px',\r\n marginBottom: '30px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'end',\r\n '&>div, &>span': {\r\n marginTop: '15px',\r\n marginBottom: '15px',\r\n }\r\n }\r\n});","import React from 'react';\r\nimport '../../Styles/Dashboard.scss';\r\n\r\n\r\nexport default function Dashboard__Kpi(props) {\r\n return (\r\n \r\n \r\n
\r\n {props.materialIcon}\r\n
\r\n
\r\n 15852\r\n
\r\n
\r\n {props.kpiName}\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n}","import React from 'react';\r\nimport '../../Styles/Dashboard__ChartLegend.scss';\r\n\r\nexport default function Dashboard__ChartLegend(props) {\r\n return (\r\n
\r\n
\r\n
\r\n 1232\r\n
\r\n
\r\n Some Data\r\n
\r\n
\r\n\r\n
\r\n
\r\n 1232\r\n
\r\n
\r\n Some Data\r\n
\r\n
\r\n \r\n
\r\n
\r\n 1232\r\n
\r\n
\r\n Some Data\r\n
\r\n
\r\n
\r\n )\r\n}","import React from 'react';\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport '../../Styles/Dashboard.scss';\r\nimport Dashboard__ChartLegend from './Dashboard__ChartLegend';\r\nimport {\r\n AreaChart,\r\n Area,\r\n XAxis,\r\n YAxis,\r\n CartesianGrid,\r\n Tooltip,\r\n ResponsiveContainer\r\n } from \"recharts\";\r\n \r\n\r\n\r\nexport default function Dashboard__LineAreaChart(props) {\r\n const theme = useTheme();\r\n const data = [\r\n \r\n \r\n {\r\n name: \"12:00\",\r\n uv: 200,\r\n pv: 9800,\r\n amt: 2290\r\n },\r\n {\r\n name: \"15:00\",\r\n uv: 270,\r\n pv: 3908,\r\n amt: 2000\r\n },\r\n \r\n {\r\n name: \"21:00\",\r\n uv: 239,\r\n pv: 3800,\r\n amt: 2500\r\n },\r\n {\r\n name: \"24:00\",\r\n uv: 349,\r\n pv: 4300,\r\n amt: 2100\r\n }\r\n ];\r\n \r\n return (\r\n \r\n
\r\n
Orders by hour:
\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}","import React from 'react';\r\nimport '../../Styles/Dashboard.scss';\r\nimport Dashboard__ChartLegend from './Dashboard__ChartLegend';\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport {\r\n BarChart, Bar, Cell, XAxis, YAxis, CartesianGrid, Tooltip, Legend,ResponsiveContainer\r\n } from 'recharts';\r\n \r\n\r\n\r\nexport default function Dashboard__BarChart(props) {\r\n const theme = useTheme();\r\n const data = [\r\n {\r\n name: 'M', uv: 4000, pv: 2400, amt: 2400,\r\n },\r\n {\r\n name: 'T', uv: 3000, pv: 1398, amt: 2210,\r\n },\r\n {\r\n name: 'W', uv: 2000, pv: 9800, amt: 2290,\r\n },\r\n {\r\n name: 'T', uv: 2780, pv: 3908, amt: 2000,\r\n },\r\n {\r\n name: 'F', uv: 1890, pv: 4800, amt: 2181,\r\n },\r\n {\r\n name: 'S', uv: 2390, pv: 3800, amt: 2500,\r\n },\r\n {\r\n name: 'S', uv: 3490, pv: 4300, amt: 2100,\r\n },\r\n ];\r\n \r\n return (\r\n \r\n
\r\n
Orders by day:
\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}","import React, {useState} from 'react';\r\nimport '../../Styles/Dashboard.scss';\r\nimport { PieChart, Pie, Sector, ResponsiveContainer,Cell } from \"recharts\";\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport Dashboard__ChartLegend from './Dashboard__ChartLegend';\r\n\r\nexport default function Dashboard__PieChart(props) {\r\n\r\n const [activeIndex, setActiveIndex] = useState(0);\r\n const theme = useTheme();\r\n\r\n const data = [\r\n { name: \"DRINKS\", value: 400 },\r\n { name: \"COLD STARTERS\", value: 300 },\r\n { name: \"DESERTS\", value: 300 },\r\n { name: \"GRILLS\", value: 200 }\r\n ];\r\n \r\n const onPieEnter = (data, index) => {\r\n setActiveIndex(index);\r\n };\r\n //const COLORS = [theme.palette.primary.main, theme.palette.primary.light, theme.palette.primary.light, theme.palette.primary.light];\r\n const COLORS = [ '#5dbcd2','#82cc60', '#979797', '#ff8447'];\r\n\r\n return (\r\n \r\n
\r\n
Most Popular Categories:
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n data.map((entry, index) => )\r\n }\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\n\r\n \r\n const renderActiveShape = props => {\r\n const RADIAN = Math.PI / 180;\r\n const {\r\n cx,\r\n cy,\r\n midAngle,\r\n innerRadius,\r\n outerRadius,\r\n startAngle,\r\n endAngle,\r\n fill,\r\n payload,\r\n percent,\r\n value\r\n } = props;\r\n const sin = Math.sin(-RADIAN * midAngle);\r\n const cos = Math.cos(-RADIAN * midAngle);\r\n const sx = cx + (outerRadius + 10) * cos;\r\n const sy = cy + (outerRadius + 10) * sin;\r\n const mx = cx + (outerRadius + 30) * cos;\r\n const my = cy + (outerRadius + 30) * sin;\r\n const ex = mx + (cos >= 0 ? 1 : -1) * 22;\r\n const ey = my;\r\n const textAnchor = cos >= 0 ? \"start\" : \"end\";\r\n \r\n return (\r\n \r\n \r\n {payload.name}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n };\r\n ","import React from 'react';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport {makeStyles} from \"@material-ui/core/styles\";\r\nimport { useTheme } from '@material-ui/core/styles';\r\nimport { fade } from '@material-ui/core';\r\n\r\nimport 'date-fns';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport {MuiPickersUtilsProvider,KeyboardTimePicker,KeyboardDatePicker,} from '@material-ui/pickers';\r\nimport Grid from '@material-ui/core/Grid';\r\n\r\n\r\nexport default function Dashboard__Table() {\r\n const [selectedDate, setSelectedDate] = React.useState(new Date('2014-08-18T21:11:54'));\r\n\r\n const handleDateChange = date => {\r\n setSelectedDate(date);\r\n };\r\n\r\n const theme = useTheme();\r\n const useStyles = makeStyles({\r\n card:{\r\n '@media (min-width : 600px)':{\r\n // width: 'calc(100% - 20px)',\r\n },\r\n '& td' : {\r\n //borderBottom : 'none',\r\n //padding:'0px 24px 0px 16px',\r\n fontSize: '12px',\r\n },\r\n '& th' : {\r\n //padding: '16px 16px 0px 16px',\r\n },\r\n '& tbody>tr:not(:last-child):nth-child(2n-1)':{\r\n //backgroundColor : '#604a0814', \r\n //backgroundColor : 'rgb(247, 247, 247)',\r\n \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 Most popular products\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Product Name\r\n Order Quantity\r\n Category\r\n Revenue\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Lahmacun\r\n \r\n \r\n 46\r\n \r\n FOOD\r\n 3432 TL\r\n \r\n \r\n \r\n \r\n \r\n Efes Draft\r\n \r\n \r\n 43\r\n \r\n DRINK\r\n 2300 TL\r\n \r\n \r\n \r\n \r\n \r\n Lahmacun\r\n \r\n \r\n 46\r\n \r\n FOOD\r\n 3432 TL\r\n \r\n \r\n \r\n \r\n \r\n Efes Draft\r\n \r\n \r\n 43\r\n \r\n DRINK\r\n 2300 TL\r\n \r\n \r\n \r\n \r\n \r\n Lahmacun\r\n \r\n \r\n 46\r\n \r\n FOOD\r\n 3432 TL\r\n \r\n \r\n \r\n \r\n \r\n Efes Draft\r\n \r\n \r\n 43\r\n \r\n DRINK\r\n 2300 TL\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","import React from 'react';\r\nimport '../../Styles/Dashboard.scss';\r\nimport Dashboard__Kpi from './Dashboard__Kpi';\r\nimport Dashboard__LineAreaChart from './Dashboard__LineAreaChart';\r\nimport Dashboard__BarChart from './Dashboard__BarChart';\r\nimport Dashboard__PieChart from './Dashboard__PieChart';\r\nimport Dashboard__Table from './Dashboard__Table';\r\n\r\nexport default function Dashboard(props) {\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}","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Select from '@material-ui/core/Select';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\nexport default function CurrencySelector (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [putCustomerSettingsHookResponse, putCustomerSettingsHook] = useFetch();\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n const [currency, setCurrency] = useState('');\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n \r\n getCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n \r\n }, []\r\n )\r\n \r\n useEffect(\r\n () => {\r\n console.log(getCustomerSettingsHookResponse);\r\n if (getCustomerSettingsHookResponse.length != 0 && getCustomerSettingsHookResponse) {\r\n setCurrency(getCustomerSettingsHookResponse.currency)\r\n }\r\n \r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n \r\n \r\n const handleSelectChange = (e) => {\r\n setCurrency(e.target.value);\r\n putCustomerSettings('', e.target.value);\r\n }\r\n \r\n const putCustomerSettings = (logoFileBase64, _currency, _fileName) => {\r\n \r\n console.log(_fileName);\r\n if (_currency == '') {\r\n _currency = currency;\r\n }\r\n \r\n putCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'PUT',\r\n postData: {\r\n currency: _currency,\r\n },\r\n }\r\n )\r\n }\r\n \r\n \r\n\r\n return (\r\n \r\n\r\n
\r\n {capitalizeFirstLetter(translateGui(110))}: \r\n GBP\r\n USD\r\n EUR\r\n CHF\r\n TL\r\n \r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n },\r\n currencyCombo: {\r\n marginLeft: '10px',\r\n },\r\n});","import React, { useContext, useState, useEffect } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport visaLogo from '../../Images/payment_provider_images/visa.svg';\r\nimport mcLogo from '../../Images/payment_provider_images/mc.svg';\r\nimport amex from '../../Images/payment_provider_images/amex.svg';\r\nimport maestro from '../../Images/payment_provider_images/maestro.svg';\r\nimport googlePay from '../../Images/payment_provider_images/google-pay.svg';\r\nimport applePay from '../../Images/payment_provider_images/apple-pay.svg';\r\nimport poweredByStripe from '../../Images/payment_provider_images/powered_by_stripe.png';\r\nimport connectWithStripe from '../../Images/payment_provider_images/connect_with_stripe.png';\r\nimport '../../Styles/Payment.scss';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport { isItTestEnvironment } from '../../Util/TestOrProd';\r\nimport CurrencySelector from './CurrencySelector';\r\n\r\nexport default function Payment__Configuration() {\r\n\r\n const [getAccountStatusResponse, getAccountStatus] = useFetch();\r\n const [accountConnected, setAccountConnected] = useState(false);\r\n const [connectedAccountId, setConnectedAccountId] = useState('');\r\n const globalContext = useContext(GlobalContext);\r\n const [putCustomerSettingsHookResponse, putCustomerSettingsHook] = useFetch();\r\n const [getCustomerSettingsHookResponse, getCustomerSettingsHook] = useFetch();\r\n const classes = useStyles();\r\n //const [clientId, setClientId] = useState('');\r\n\r\n const [stripeUrl, setStripeUrl] = useState('');\r\n\r\n useEffect(\r\n () => {\r\n let clientId = isItTestEnvironment() ? 'ca_GdDNct6BLaiQWE95fZg4QHTxCNqo15pM' : 'ca_GdDN33gCkyttS3bgGixLqUZArqv7HbqY';\r\n setStripeUrl(\"https://connect.stripe.com/oauth/authorize?response_type=code&client_id=\" + clientId + \"&scope=read_write\");\r\n }, []\r\n )\r\n\r\n \r\n\r\n useEffect(\r\n () => {\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 9,\r\n },\r\n }\r\n )\r\n\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n getAccountStatus(\r\n {\r\n url: '/admin/stripe/get-account-status',\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n console.log(getAccountStatusResponse);\r\n if (getAccountStatusResponse.length != 0 && getAccountStatusResponse) {\r\n if (getAccountStatusResponse.accountStatus == 'Connected') {\r\n setAccountConnected(true);\r\n setConnectedAccountId(getAccountStatusResponse.stripeUserId);\r\n }\r\n }\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n }, [getAccountStatusResponse]\r\n )\r\n\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/PaymentConfiguration' });\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 accountConnected ?\r\n

You are connected and your Stripe account ID is: {connectedAccountId}

\r\n :\r\n \r\n

\r\n Click \"Connect with Stripe\" button below to enable STRIPE payment. You will be redirected to STRIPE site to complete the setup which will take a few minutes.\r\n

\r\n

\r\n

With STRIPE you will able to accept the following payment methods:

\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\nconst useStyles = makeStyles({\r\n \r\n});\r\n","import React, { useEffect, useState } from 'react';\r\nimport getValueOfAQueryParameter from '../../Util/QueryString';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport { getCookie } from '../../Util/Cookie';\r\n\r\nexport default function Payment__Configuration__Completed(props) {\r\n\r\n //const [code, setCode] = useState('');\r\n const [postAuthCodeResponse, postAuthCode] = useFetch();\r\n const [statusMessage, setStatusMessage] = useState('');\r\n\r\n\r\n useEffect(\r\n () => {\r\n console.log(props.location.search);\r\n let codeTemp = getValueOfAQueryParameter(props.location.search, 'code');\r\n //setCode (codeTemp);\r\n\r\n postAuthCode(\r\n {\r\n url: '/admin/stripe/connect',\r\n method: 'POST',\r\n headers: [{ name: 'Authorization', value: 'Bearer ' + getCookie('token') }],\r\n postData: {\r\n authorizationCode: codeTemp,\r\n },\r\n }\r\n )\r\n\r\n\r\n }\r\n , []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', {'page_path': '/PaymentConfiguration__Completed'});\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n\r\n console.log(postAuthCodeResponse);\r\n console.log(postAuthCodeResponse.failMessage);\r\n if (postAuthCodeResponse.length != 0 && postAuthCodeResponse) {\r\n setStatusMessage('Congratulations! You have successfully connected your stripe account with Happy Table. Now you are ready to accept orders :)');\r\n }\r\n\r\n if (postAuthCodeResponse.length != 0 && postAuthCodeResponse == false) {\r\n setStatusMessage('There was a problem. Please try again or contact support');\r\n }\r\n\r\n\r\n }, [postAuthCodeResponse]\r\n )\r\n\r\n\r\n\r\n return (\r\n
\r\n {statusMessage}\r\n
\r\n )\r\n}","export default function getValueOfAQueryParameter (queryString, queryParameterName) {\r\n let arr = queryString.replace('?','').split('&');\r\n if(arr.length >0) {\r\n let filteredArr = arr.filter(a => a.indexOf(queryParameterName + '=')==0);\r\n if(filteredArr.length > 0){\r\n return filteredArr[0].replace(queryParameterName + '=','')\r\n }\r\n }\r\n return '';\r\n \r\n}","import React, { useEffect, useState, useContext } from 'react';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\n\r\nexport default function Init(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n\r\n useEffect (\r\n () => {\r\n if(getCustomerSettingsHookResponse.currency) {\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_CUSTOMER_SETTINGS',\r\n value: { ...getCustomerSettingsHookResponse },\r\n }\r\n )\r\n }\r\n },[getCustomerSettingsHookResponse]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (!globalContext.globalState.customerSettings.currency) {\r\n if (localStorage.getItem('ht_adm_cs') != null) {\r\n let customerSettings = JSON.parse(localStorage.getItem('ht_adm_cs'));\r\n //console.log('setting bla')\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_CUSTOMER_SETTINGS',\r\n value: { ...customerSettings },\r\n }\r\n );\r\n\r\n }\r\n }\r\n else {\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//globalContext.globalState.email\r\n//globalContext.globalState.customerAlias","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { getCookie, setCookie } from '../Util/Cookie';\r\nimport { useSpring, animated } from 'react-spring';\r\n\r\n\r\nexport default function CookieConsent(props) {\r\n const [consent, setConsent] = useState(true);\r\n const classes = useStyles();\r\n const [guiLanguage, setGuiLanguage] = useState('en');\r\n const fade = useSpring({\r\n config: { duration: 1000 },\r\n from: {\r\n bottom: '-160px',\r\n },\r\n to: {\r\n bottom: '0px',\r\n }\r\n })\r\n\r\n useEffect(\r\n () => {\r\n if (window.location.href.indexOf('lang=tr') > 0) {\r\n setGuiLanguage('tr');\r\n }\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (getCookie('ht_cookieConsent_admin') == null) {\r\n setConsent(false);\r\n }\r\n else {\r\n setConsent(true);\r\n }\r\n }, []\r\n )\r\n\r\n const consentGiven = () => {\r\n setCookie('ht_cookieConsent_admin', 'true', 700);\r\n setConsent(true);\r\n }\r\n\r\n\r\n return (\r\n \r\n {consent == false ?\r\n \r\n
\r\n \r\n close\r\n \r\n
\r\n
\r\n {\r\n guiLanguage == 'tr' ?\r\n \r\n Web uygulamamızda size en iyi deneyimi yaşatabilmek için çerezlerden faydalanıyoruz.\r\n Uygulamayı kullanmaya devam ederek çerez kullanımına onay vermiş oluyorsunuz.\r\n Daha fazla detay için lütfen Gizlilik Politikamızı okuyun.\r\n \r\n :\r\n \r\n We use cookies to give you the best possible experience on our web app.\r\n By continuing to browse or use this web app, you give consent for cookies to be used.\r\n For more details, please read our Privacy Policy\r\n \r\n }\r\n \r\n
\r\n
\r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n position: 'fixed',\r\n padding: '0 10px 30px 10px',\r\n backgroundColor: '#3b4045',\r\n color: 'white',\r\n fontSize: '0.9rem',\r\n zIndex: 101,\r\n width: '100%',\r\n //transition: '1s',\r\n //bottom: '-160px',\r\n },\r\n noConsent: {\r\n bottom: '0px',\r\n },\r\n yesConsent: {\r\n bottom: '-160px',\r\n },\r\n closeButtonWrapper: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n padding: '0 15px',\r\n },\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport MessageBoxWithAction from '../MessageBoxWithAction';\r\nimport {isItTestEnvironment} from '../../Util/TestOrProd';\r\n\r\nexport default function SubscriptionForm(props) {\r\n const [companyName, setCompanyName] = useState('');\r\n const [companyNameError, setCompanyNameError] = useState('');\r\n const [addressLine1, setAddressLine1] = useState('');\r\n const [addressLine1Error, setAddressLine1Error] = useState('');\r\n const [addressLine2, setAddressLine2] = useState('');\r\n const [city, setCity] = useState('');\r\n const [cityError, setCityError] = useState('');\r\n const [country, setCountry] = useState('');\r\n const [countryError, setCountryError] = useState('');\r\n const [postcode, setPostcode] = useState('');\r\n const [postcodeError, setPostcodeError] = useState('');\r\n const classes = useStyles();\r\n const [getSessionIdHookResponse, getSessionIdHook] = useFetch();\r\n const [showMessage, setShowMessage] = useState(false);\r\n\r\n\r\n\r\n\r\n useEffect(\r\n () => {\r\n if (!Array.isArray(getSessionIdHookResponse)) {\r\n console.log(getSessionIdHookResponse);\r\n \r\n let clientId = isItTestEnvironment() ? 'pk_test_gpidSIs7ni3EYvuaeZCTCb2e00qiyEYjan':'pk_live_O8WpEPE6gJYh22WH2vHdtqZC00m5nYYhOO';\r\n console.log(clientId);\r\n var stripe = window.Stripe(clientId);\r\n \r\n stripe.redirectToCheckout({\r\n sessionId: getSessionIdHookResponse.sessionId\r\n }).then(function (result) {\r\n console.log(result.error.message);\r\n });\r\n\r\n }\r\n }, [getSessionIdHookResponse]\r\n )\r\n\r\n const getSessionId = () => {\r\n getSessionIdHook(\r\n {\r\n url: '/admin/stripe/create-session-id',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {\r\n companyName: companyName,\r\n invoiceAddress: {\r\n city: city,\r\n country: country,\r\n line1: addressLine1,\r\n line2: addressLine2,\r\n postalCode: postcode,\r\n state: \"\",\r\n }\r\n },\r\n }\r\n )\r\n }\r\n\r\n const submitForm = () => {\r\n let validated = true;\r\n\r\n\r\n if (companyName == '') {\r\n setCompanyNameError('Please enter your company name.');\r\n validated = false;\r\n }\r\n else {\r\n setCompanyNameError('');\r\n }\r\n\r\n\r\n if (addressLine1 == '') {\r\n setAddressLine1Error('Please enter your address line 1.')\r\n validated = false;\r\n }\r\n else {\r\n setAddressLine1Error('');\r\n }\r\n\r\n if (city == '') {\r\n setCityError('Please enter your city.')\r\n validated = false;\r\n }\r\n else {\r\n setCityError('');\r\n }\r\n\r\n if (country == '') {\r\n setCountryError('Please enter your country.')\r\n validated = false;\r\n }\r\n else {\r\n setCountryError('');\r\n }\r\n\r\n if (postcode == '') {\r\n setPostcodeError('Please enter your postcode.')\r\n validated = false;\r\n }\r\n else {\r\n setPostcodeError('');\r\n }\r\n\r\n if (validated) {\r\n setShowMessage(true);\r\n }\r\n }\r\n\r\n const okClicked = () => {\r\n getSessionId();\r\n }\r\n\r\n return (\r\n
\r\n
Please check your company name and address which will appear on the invoice
\r\n setCompanyName(e.target.value)} helperText={companyNameError} error={companyNameError == '' ? false : true} />\r\n setAddressLine1(e.target.value)} helperText={addressLine1Error} error={addressLine1Error == '' ? false : true} />\r\n setAddressLine2(e.target.value)} />\r\n setCity(e.target.value)} helperText={cityError} error={cityError == '' ? false : true} />\r\n setCountry(e.target.value)} helperText={countryError} error={countryError == '' ? false : true} />\r\n setPostcode(e.target.value)} helperText={postcodeError} error={postcodeError == '' ? false : true} />\r\n \r\n {\r\n showMessage ?\r\n okClicked()} cancel={() => setShowMessage(false)}>\r\n Now you will be redirected to Stripe to complete your payment.\r\n \r\n : null\r\n }\r\n
\r\n\r\n )\r\n\r\n\r\n\r\n}\r\n\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '300px',\r\n\r\n '&>div:nth-child(1)': {\r\n marginBottom : '30px',\r\n }\r\n },\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport SubscriptionForm from './Subscription__Form';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport { useHistory } from 'react-router-dom';\r\nimport useGuiTranslations from '../../Components/MultiLanguage/useGuiTranslations';\r\n\r\nexport default function Subscription(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const {accountStatus, remainingTimeInDays,upcomingInvoice} = getCustomerSettingsHookResponse;\r\n const history = useHistory();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: '8',\r\n b: '102'\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n\r\n const redirectToRelevantSubsPage = () => {\r\n if (globalContext.globalState.customerSettings.country == 'TR') {\r\n history.push('/PaynetSubscriptionForm');\r\n }\r\n }\r\n\r\n return (\r\n
\r\n \r\n {\r\n accountStatus == 'Trial' ?\r\n
\r\n \r\n {translateGui(104)} {remainingTimeInDays} \r\n \r\n \r\n
\r\n : null\r\n }\r\n {\r\n accountStatus == 'Regular' ?\r\n
\r\n \r\n {translateGui(103)} {new Date(upcomingInvoice.periodEnd).toLocaleDateString()}\r\n \r\n
\r\n : null\r\n }\r\n {\r\n accountStatus == 'Expired' ?\r\n
\r\n \r\n {translateGui(106)}\r\n \r\n \r\n
\r\n : null\r\n }\r\n \r\n\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n\r\n subscribeWrapper: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n },\r\n\r\n message: {\r\n marginBottom: '20px',\r\n }\r\n});\r\n","export default function reducer(initialState, action) {\r\n\r\n let newState = {};\r\n\r\n switch (action.type) {\r\n\r\n case 'SET_MENU_LOCATION':\r\n //console.log(initialState);\r\n newState = { ...initialState, menuLocation: action.value };\r\n return newState;\r\n\r\n case 'SET_MESSAGE':\r\n //console.log(initialState);\r\n newState = { ...initialState, messageOptions: action.value };\r\n return newState;\r\n\r\n case 'SET_EMAIL':\r\n newState = { ...initialState, email: action.value };\r\n return newState;\r\n\r\n case 'SET_CUSTOMER_ALIAS':\r\n newState = { ...initialState, customerAlias: action.value };\r\n return newState;\r\n\r\n case 'SET_CUSTOMER_SETTINGS':\r\n newState = { ...initialState, customerSettings: action.value };\r\n return newState;\r\n\r\n case 'SET_USER_INTERACTED':\r\n newState = { ...initialState, userInteractedWithTheDocument: true };\r\n return newState;\r\n\r\n case 'SET_SELECTED_GUI_LANGUAGE':\r\n newState = { ...initialState, selectedGuiLanguage: action.value };\r\n return newState;\r\n\r\n case 'SET_EMAIL':\r\n newState = { ...initialState, email: action.value };\r\n return newState;\r\n\r\n case 'SET_ALIAS':\r\n newState = { ...initialState, alias: action.value };\r\n return newState;\r\n \r\n case 'INITIALIZE_ONESIGNAL':\r\n newState = { ...initialState, oneSignalInitialized: true };\r\n return newState;\r\n\r\n default:\r\n return initialState;\r\n }\r\n}\r\n","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\n\r\n\r\nexport default function Subscription__Success (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n You have succesfully subscribed. Happy business :)\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Link from '@material-ui/core/Link';\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nexport default function Subscription__Cancel (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const history = useHistory();\r\n\r\n return (\r\n
\r\n Oops ! Something gone wrong, please \r\n history.push('/Subscription')}>\r\n try again \r\n \r\n or contact support.\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React, { useEffect, useRef, useState } from 'react'\r\n\r\nexport default function Map({ options, onMount, className, onMountProps }) {\r\n const ref = useRef()\r\n const [map, setMap] = useState()\r\n\r\n useEffect(() => {\r\n const onLoad = () => {\r\n var map = new window.google.maps.Map(ref.current, options);\r\n console.log(options);\r\n setMap(map);\r\n \r\n /*setMap(new window.google.maps.Map(ref.current, {\r\n center: { lat: 51.408632, lng: -0.219922 },\r\n zoom: 13,\r\n })\r\n );*/\r\n var cityCircle = new window.google.maps.Circle({\r\n strokeColor: '#FF0000',\r\n strokeOpacity: 0.8,\r\n strokeWeight: 2,\r\n fillColor: '#FF0000',\r\n fillOpacity: 0.35,\r\n map: map,\r\n //center: { lat: 51.408632, lng: -0.219922 },\r\n center: options.center,\r\n radius: parseFloat(options.range)*1609,\r\n });\r\n }\r\n if (!window.google) {\r\n const script = document.createElement(`script`)\r\n script.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyBd1oXopWDgSa-gsvIhhqKMOZQbkaAapjI';\r\n document.head.append(script)\r\n script.addEventListener(`load`, onLoad)\r\n return () => script.removeEventListener(`load`, onLoad)\r\n } else onLoad()\r\n }, [options])\r\n\r\n if (map && typeof onMount === `function`) onMount(map, onMountProps)\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nMap.defaultProps = {\r\n options: {\r\n center: { lat: 48, lng: 8 },\r\n zoom: 5,\r\n },\r\n}","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n//import { GlobalContext } from '../Contexts/GlobalContext';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\n\r\nexport default function OpeningTimes(props) {\r\n const [translateGui] = useGuiTranslations();\r\n const classes = useStyles();\r\n\r\n const updateWorkingHoursSpec = (index, openClose, newValue) => {\r\n let newWorkingHours = [...props.workingHoursSpec];\r\n if (openClose == 'open') {\r\n newWorkingHours[index].opens = newValue;\r\n }\r\n\r\n if (openClose == 'close') {\r\n newWorkingHours[index].closes = newValue;\r\n }\r\n //console.log(newWorkingHours);\r\n props.setWorkingHoursSpec(newWorkingHours);\r\n }\r\n\r\n return (\r\n
\r\n
Opening Times
\r\n \r\n \r\n {\r\n props.workingHoursSpec.map(\r\n (spec, index) =>\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 {capitalizeFirstLetter(translateGui(74+index))}\r\n \r\n \r\n }\r\n \r\n updateWorkingHoursSpec(index, 'open', e.target.value)}\r\n />\r\n\r\n \r\n updateWorkingHoursSpec(index, 'close', e.target.value)}\r\n\r\n />\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n },\r\n textField: {\r\n\r\n\r\n },\r\n});","import React, { useEffect, useState, useContext, useCallback } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport GoogleMap from './GoogleMap';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport useCustomerServicePreferences from './useCustomerServicePreferences';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\nimport usePostcodeToLat from './usePostcodeToLat';\r\nimport OpeningTimes from './OpeningTimes';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\nimport useCustomerSettings from '../../CustomHooks/useCustomerSettings';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\n\r\nexport default function DeliverAndCollect(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [selfOrdering, setSelfOrdering] = useState(true);\r\n const [collect, setCollect] = useState(false);\r\n const [deliver, setDeliver] = useState(false);\r\n const [averageTimeToCollect, setAverageTimeToCollect] = useState(20);\r\n const [averageTimeToCollectError, setAverageTimeToCollectError] = useState('');\r\n const [averageTimeToDeliver, setAverageTimeToDeliver] = useState(30);\r\n const [averageTimeToDeliverError, setAverageTimeToDeliverError] = useState('');\r\n const [postcode, setPostcode] = useState('');\r\n const [postcodeError, setPostcodeError] = useState('');\r\n const [deliveryRange, setDeliveryRange] = useState(0);\r\n const [deliveryRangeError, setDeliveryRangeError] = useState('');\r\n const setGAPath = useGoogleAnalytics();\r\n const [getCustomerServicePreferencesHookResponse,\r\n updateCustomerServicePreferences,\r\n putCustomerServicePreferencesHookResponse] = useCustomerServicePreferences();\r\n const [getLatAndLong, getLatLongResponse] = usePostcodeToLat();\r\n const [lat, setLat] = useState(0);\r\n const [long, setLong] = useState(0);\r\n const [workingHoursSpec, setWorkingHoursSpec] = useState([]);\r\n const [translateGui] = useGuiTranslations();\r\n const [payAtTable, setPayAtTable] = useState(false);\r\n const [payWithCard, setPayWithCard] = useState(false);\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const [putCustomerSettingsHookResponse, putCustomerSettingsHook] = useFetch();\r\n\r\n useEffect(\r\n () => {\r\n if (getCustomerSettingsHookResponse.orderPaymentOptions) {\r\n setPayAtTable(getCustomerSettingsHookResponse.orderPaymentOptions.payOnTheTableEnabled);\r\n setPayWithCard(getCustomerSettingsHookResponse.orderPaymentOptions.payOnlineEnabled);\r\n }\r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n\r\n const MemoMap = useCallback(, [lat, deliveryRange])\r\n\r\n\r\n useEffect(\r\n () => {\r\n console.log(workingHoursSpec);\r\n }, [workingHoursSpec]\r\n )\r\n\r\n useEffect(\r\n () => {\r\n //GA\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/DeliverAndCollectSettings' });\r\n setGAPath('/DeliverAndCollectSettings');\r\n\r\n //Breadcrumb\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n //a: 'Deliver & Collect',\r\n //b: 'Settings > Deliver & Collect'\r\n a: 1,\r\n b: 2,\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (getCustomerServicePreferencesHookResponse.selfOrdering != null) {\r\n console.log(getCustomerServicePreferencesHookResponse);\r\n setAverageTimeToCollect(getCustomerServicePreferencesHookResponse.averageTimeToCollect);\r\n setAverageTimeToDeliver(getCustomerServicePreferencesHookResponse.averageTimeToDeliver);\r\n setCollect(getCustomerServicePreferencesHookResponse.collect);\r\n setDeliver(getCustomerServicePreferencesHookResponse.deliver);\r\n setPostcode(getCustomerServicePreferencesHookResponse.postCode);\r\n setDeliveryRange(getCustomerServicePreferencesHookResponse.range / 1609);//mile ceviriyorum\r\n setSelfOrdering(getCustomerServicePreferencesHookResponse.selfOrdering);\r\n setWorkingHoursSpec(getCustomerServicePreferencesHookResponse.workingHoursSpec);\r\n\r\n if (getCustomerServicePreferencesHookResponse.postCode != '' && getCustomerServicePreferencesHookResponse.postCode != null) {\r\n postcodeOnBlur(getCustomerServicePreferencesHookResponse.postCode);//haritayi cizsin diye tetikliyorum\r\n }\r\n }\r\n }, [getCustomerServicePreferencesHookResponse]\r\n )\r\n\r\n const validate = () => {\r\n if (collect && averageTimeToCollect == \"\") {\r\n setAverageTimeToCollectError('Please enter a value');\r\n return false;\r\n }\r\n else {\r\n setAverageTimeToCollectError('');\r\n }\r\n\r\n /*\r\n if (deliver && averageTimeToDeliver == \"\") {\r\n setAverageTimeToDeliverError('Please enter a value');\r\n return false;\r\n }\r\n else {\r\n setAverageTimeToDeliverError('');\r\n }\r\n\r\n if (deliver && postcode == \"\") {\r\n console.log('postcode error setting')\r\n setPostcodeError('Please enter a value');\r\n return false;\r\n }\r\n else {\r\n setPostcodeError('');\r\n }\r\n\r\n if (deliver && deliveryRange == \"\") {\r\n setDeliveryRangeError('Please enter a value');\r\n return false;\r\n }\r\n else {\r\n setDeliveryRangeError('');\r\n }\r\n */\r\n\r\n return true;\r\n\r\n }\r\n\r\n const submit = () => {\r\n \r\n /*\r\n if (postcodeError != '') {\r\n return;\r\n }\r\n else {\r\n console.log('postcode error bos degil');\r\n }\r\n */\r\n\r\n if (!validate()) {\r\n return;\r\n }\r\n\r\n console.log('buraya kadar geldik');\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n updateCustomerServicePreferences({\r\n \"selfOrdering\": selfOrdering,\r\n \"collect\": collect,\r\n \"deliver\": deliver,\r\n \"averageTimeToCollect\": averageTimeToCollect,\r\n //\"averageTimeToDeliver\": averageTimeToDeliver,\r\n //\"postCode\": deliver ? postcode.toUpperCase() : '',\r\n //\"range\": Math.round(parseFloat(deliveryRange) * 1609),\r\n \"workingHours\": workingHoursSpec,\r\n });\r\n\r\n putCustomerSettingsHook(\r\n {\r\n url: '/admin/customersettings',\r\n addTokenHeader: true,\r\n method: 'PUT',\r\n postData: {\r\n payOnTheTableEnabled: payAtTable,\r\n payOnlineEnabled: payWithCard,\r\n },\r\n }\r\n )\r\n\r\n }\r\n\r\n const postcodeOnBlur = (_postcode) => {\r\n //sayfa yuklenirken react postcode degerini yeterince hizli update edemeyebiliyor\r\n //o nedenle parametre olarak gonderiyorum ama sayfa yuklendikten sorna\r\n //kullanici degistirir ise state'deki degeri kullaniyorum\r\n\r\n console.log('postcodeblur:' + _postcode);\r\n\r\n _postcode = _postcode.toUpperCase();\r\n\r\n if (_postcode != '') {\r\n getLatAndLong(_postcode, 'UK');\r\n }\r\n else {\r\n console.log('postcode value su bos');\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n console.log(getLatLongResponse);\r\n if (getLatLongResponse.success != null) {\r\n if (getLatLongResponse.success == true) {\r\n setLong(getLatLongResponse.longitude);\r\n setLat(getLatLongResponse.latitude);\r\n setPostcodeError('');\r\n }\r\n else {\r\n setPostcodeError('Please check postcode');\r\n }\r\n }\r\n\r\n if (getLatLongResponse == false && !Array.isArray(getLatLongResponse)) {\r\n //404 almis, postcode veritabaninda yok\r\n setPostcodeError('Please check postcode');\r\n }\r\n\r\n }, [getLatLongResponse]\r\n )\r\n\r\n\r\n\r\n return (\r\n
\r\n\r\n
\r\n setSelfOrdering(e.target.checked)} />{capitalizeFirstLetter(translateGui(67))}\r\n\r\n {\r\n selfOrdering ?\r\n
\r\n
\r\n setPayWithCard(e.target.checked)} />{capitalizeFirstLetter(translateGui(107))}\r\n\r\n
\r\n
\r\n setPayAtTable(e.target.checked)} />{capitalizeFirstLetter(translateGui(108))}\r\n
\r\n
\r\n : null\r\n }\r\n\r\n\r\n
\r\n
\r\n
\r\n setCollect(e.target.checked)} /> {capitalizeFirstLetter(translateGui(68))}\r\n
\r\n {\r\n collect ?\r\n
\r\n setAverageTimeToCollect(e.target.value)} id=\"filled-number\" label={capitalizeFirstLetter(translateGui(69))} type=\"number\" InputLabelProps={{ shrink: true, }} variant=\"filled\" />\r\n
\r\n : null\r\n }\r\n
\r\n
\r\n setDeliver(e.target.checked)} /> Deliver\r\n\r\n {\r\n deliver && 1==2?\r\n
\r\n
\r\n setAverageTimeToDeliver(e.target.value)} id=\"filled-number\" label=\"Average time to deliver(minutes)\" type=\"number\" InputLabelProps={{ shrink: true, }} variant=\"filled\" />\r\n
\r\n
\r\n postcodeOnBlur(e.target.value)} helperText={postcodeError} error={postcodeError == '' ? false : true} className={classes.textbox} value={postcode} onChange={(e) => setPostcode(e.target.value)} id=\"filled-number\" label=\"Postcode\" InputLabelProps={{ shrink: true, }} variant=\"filled\" />\r\n
\r\n
\r\n\r\n e.target.value == '' ? setDeliveryRange(0) : setDeliveryRange(e.target.value)} id=\"filled-number\" label=\"Delivery range (miles)\" type=\"number\" InputLabelProps={{ shrink: true, }} variant=\"filled\" />\r\n
\r\n\r\n {\r\n lat != 0 ?\r\n MemoMap :\r\n null\r\n }\r\n
\r\n : null\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 useStyles = makeStyles({\r\n root: {\r\n },\r\n okAndCancelButtonWrapper: { \"backgroundColor\": \"#f7f7f7\", \"display\": \"flex\", \"justifyContent\": \"flex-end\", \"width\": \"100%\", \"left\": \"0\" },\r\n okButton: { \"margin\": \"10px 10px\" },\r\n textbox: {\r\n '& input': {\r\n backgroundColor: 'white',\r\n width: '250px',\r\n },\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from 'CustomHooks/useFetch';\r\n\r\nexport default function useCustomerServicePreferences (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [getCustomerServicePreferencesHookResponse, getCustomerServicePreferencesHook] = useFetch();\r\n const [postCustomerServicePreferencesHookResponse, postCustomerServicePreferencesHook] = useFetch();\r\n \r\n\r\n useEffect(\r\n () => {\r\n getCustomerServicePreferencesHook(\r\n {\r\n url: '/admin/CustomerServicePreferences',\r\n method: 'GET',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n const updateCustomerServicePreferences = (options) => {\r\n postCustomerServicePreferencesHook(\r\n {\r\n url: '/admin/CustomerServicePreferences',\r\n method: 'POST',\r\n addTokenHeader: true,\r\n postData: {...options},\r\n }\r\n )\r\n }\r\n\r\n return [getCustomerServicePreferencesHookResponse,\r\n updateCustomerServicePreferences, \r\n postCustomerServicePreferencesHookResponse];\r\n}\r\n","import React,{useEffect, useState, useContext} from 'react';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from 'CustomHooks/useFetch';\r\n\r\nexport default function usePostcodeToLat (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const [getLatLongResponse, getLatLong] = useFetch();\r\n \r\n \r\n const getLatAndLong = (postcode, countryCode) => {\r\n getLatLong(\r\n {\r\n url: `/admin/postcode/${countryCode}/${postcode}`,\r\n method: 'GET',\r\n addTokenHeader: true,\r\n }\r\n )\r\n }\r\n\r\n return [getLatAndLong,getLatLongResponse];\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useCustomerSettings from 'CustomHooks/useCustomerSettings';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport Button from '@material-ui/core/Button';\r\nimport CircularProgressWithLabel from './CircularProgressWithLabel';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\n\r\nexport default function MultiLanguage2(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [isMultiLangEnabled, setIsMultiLangEnabled] = useState(false);\r\n const [availableLanguages, setAvailableLanguages] = useState([]);\r\n const [defaultLanguage, setDefaultLanguage] = useState('en');\r\n const getCustomerSettingsHookResponse = useCustomerSettings();\r\n const [state, setState] = useState('multiLangDisabled');\r\n const [updateMultilangSettingsHookResponse, updateMultilangSettingsHook] = useFetch();\r\n const [translateGui] = useGuiTranslations();\r\n const setGAPath = useGoogleAnalytics();\r\n\r\n\r\n const languages = [\r\n { code: 'en', name: 'English' },\r\n { code: 'de', name: 'Deutsch' },\r\n { code: 'fr', name: 'Français' },\r\n { code: 'es', name: 'Español' },\r\n { code: 'zh', name: '中文 (Chinese)' },\r\n { code: 'ru', name: 'Русский (Russian)' },\r\n { code: 'ja', name: '日本語 (Japanese)' },\r\n { code: 'it', name: 'İtaliano' },\r\n { code: 'sv', name: 'Svenska' },\r\n { code: 'tr', name: 'Türkçe' },\r\n ];\r\n\r\n useEffect(\r\n () => {\r\n //GA\r\n setGAPath('/AdvancedSettings/Multi-language');\r\n\r\n //Breadcrumb\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 81,\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (!Array.isArray(getCustomerSettingsHookResponse)) {\r\n //console.log('here');\r\n setDefaultLanguage(getCustomerSettingsHookResponse.defaultLanguage)\r\n\r\n if (getCustomerSettingsHookResponse.multiLangEnabled == true) {\r\n setIsMultiLangEnabled(true);\r\n setState('multiLangEnabled');\r\n\r\n }\r\n\r\n if (getCustomerSettingsHookResponse.availableLanguages) {\r\n setAvailableLanguages(getCustomerSettingsHookResponse.availableLanguages)\r\n }\r\n }\r\n }, [getCustomerSettingsHookResponse]\r\n )\r\n\r\n const checkBoxClicked = (langCode) => {\r\n let tempArr = availableLanguages;\r\n if (availableLanguages.filter(availableLanguage => availableLanguage == langCode).length == 0) {\r\n tempArr.push(langCode);\r\n }\r\n else {\r\n tempArr = availableLanguages.filter(availableLanguage => availableLanguage != langCode);\r\n }\r\n setAvailableLanguages([...tempArr]);\r\n }\r\n\r\n const sendToServer = () => {\r\n\r\n if (availableLanguages.length > 0) {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n updateMultilangSettingsHook(\r\n {\r\n\r\n url: '​/admin/customersettings/update-multilang-settings',\r\n method: 'PUT',\r\n postData: {\r\n \"multiLangEnabled\": true,\r\n \"defaultLanguage\": defaultLanguage,\r\n \"availableLanguages\": availableLanguages,\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n setIsMultiLangEnabled(true);\r\n }\r\n else {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Select at least one target language.', showButton: true } });\r\n }\r\n\r\n\r\n }\r\n\r\n const disableMultiLang = () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Disabling Multi-language...', showButton: false } });\r\n updateMultilangSettingsHook(\r\n {\r\n\r\n url: '​/admin/customersettings/update-multilang-settings',\r\n method: 'PUT',\r\n postData: {\r\n \"multiLangEnabled\": false,\r\n \"defaultLanguage\": defaultLanguage,\r\n \"availableLanguages\": [],\r\n },\r\n addTokenHeader: true,\r\n }\r\n )\r\n setIsMultiLangEnabled(false);\r\n }\r\n\r\n return (\r\n
\r\n\r\n {\r\n !isMultiLangEnabled ?\r\n
\r\n {capitalizeFirstLetter(translateGui(87))}\r\n
\r\n : null\r\n }\r\n {\r\n isMultiLangEnabled ?\r\n
\r\n {capitalizeFirstLetter(translateGui(92))}\r\n
\r\n : null\r\n }\r\n\r\n\r\n
\r\n {capitalizeFirstLetter(translateGui(88))}\r\n \r\n {capitalizeFirstLetter(translateGui(89))}\r\n setDefaultLanguage(e.target.value)}\r\n style={{ maxWidth: '300px' }}\r\n >\r\n\r\n {\r\n languages.map(\r\n lang =>\r\n {lang.name}\r\n )\r\n }\r\n \r\n \r\n
\r\n\r\n
\r\n {capitalizeFirstLetter(translateGui(90))}\r\n {\r\n languages.map(\r\n language => \r\n language.code != defaultLanguage ?\r\n
\r\n checkBoxClicked(language.code)}\r\n checked={availableLanguages.filter(lang => lang == language.code).length > 0}\r\n >\r\n \r\n {language.name}\r\n
\r\n : null\r\n \r\n\r\n )\r\n }\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n {\r\n isMultiLangEnabled ?\r\n \r\n : null\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 useStyles = makeStyles({\r\n root: {\r\n maxWidth: '400px',\r\n },\r\n tableStyle: {\r\n '& input': {\r\n border: 'none',\r\n borderBottom: '1px solid',\r\n fontFamily: 'Roboto',\r\n fontSize: '1rem',\r\n }\r\n },\r\n flexColumn: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n\r\n '& > *': {\r\n marginTop: '10px',\r\n }\r\n },\r\n marginBottom: {\r\n marginBottom: '20px',\r\n },\r\n\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport AddBoxIcon from '@material-ui/icons/AddBox';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport DeleteOutlineIcon from '@material-ui/icons/DeleteOutline';\r\nimport useOptionGroups from '../OptionGroups/useOptionGroups';\r\nimport AddOrEditOptionGroup from '../OptionGroups/AddOrEditOptionGroup';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport {capitalizeFirstLetter} from '../../Util/StringFunctions';\r\n\r\n\r\n\r\nexport default function OptionGroupsList(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [optionGroupId, setOptionGroupId] = useState(-1);\r\n const [getOptionGroupsHookResponse, getOptionGroupsHook, deleteOptionGroupHook, deleteOptionGroupHookResponse] = useOptionGroups();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n\r\n\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 4,\r\n b: 7,\r\n },\r\n }\r\n )\r\n }, []\r\n );\r\n\r\n\r\n \r\n\r\n useEffect(\r\n () => {\r\n if (!Array.isArray(deleteOptionGroupHookResponse)) {\r\n getOptionGroupsHook();\r\n }\r\n }, [deleteOptionGroupHookResponse]\r\n )\r\n\r\n return (\r\n \r\n
\r\n {capitalizeFirstLetter(translateGui(7))}\r\n setOptionGroupId(0)}>\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 getOptionGroupsHookResponse && getOptionGroupsHookResponse.foodOptionGroups != null ?\r\n getOptionGroupsHookResponse.foodOptionGroups.map(\r\n (optionGroup, index) =>\r\n \r\n \r\n \r\n \r\n )\r\n : null\r\n }\r\n \r\n
\r\n {capitalizeFirstLetter(translateGui(35))}\r\n \r\n {capitalizeFirstLetter(translateGui(46))}\r\n
\r\n setOptionGroupId(optionGroup.id)}>\r\n \r\n \r\n deleteOptionGroupHook(optionGroup.id)}>\r\n \r\n \r\n \r\n \r\n {optionGroup.optionGroupName}\r\n
\r\n {\r\n optionGroupId > -1 ?\r\n { setOptionGroupId(-1); getOptionGroupsHook(); }} />\r\n : null\r\n }\r\n
\r\n\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n table: {\r\n width: '100%',\r\n '& td': {\r\n padding: '10px 0',\r\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\r\n },\r\n '& td:nth-child(1)': {\r\n textAlign: 'center',\r\n },\r\n '& th:nth-child(n+2)': {\r\n textAlign: 'left',\r\n },\r\n '& th': {\r\n padding: '20px 0',\r\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\r\n }\r\n },\r\n cursor: {\r\n cursor: 'pointer',\r\n },\r\n flex: { \"display\": \"flex\", \"alignItems\": \"center\", \"justifyContent\": \"space-between\", margin: '30px 10px 50px 10px' },\r\n title: { fontSize: '1.4rem', fontWeight: 500, },\r\n addIcon: { color: '#5dbcd2' },\r\n iconButton: {color:'black'},\r\n\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nexport default function AdvancedSettingBox(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const history = useHistory();\r\n\r\n const goToUrl = (url) => {\r\n history.push(url);\r\n }\r\n\r\n return (\r\n
goToUrl(props.url)}>\r\n
\r\n {props.icon}\r\n
\r\n
\r\n
\r\n {props.name}\r\n
\r\n
\r\n {props.description}\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n setting: {\r\n display: 'flex',\r\n minWidth: '300px',\r\n maxWidth: '90%',\r\n marginBottom: '20px',\r\n '&>div': {\r\n padding: '10px',\r\n },\r\n cursor: 'pointer',\r\n },\r\n settingRightUp: {\r\n color: '#008ae4',\r\n fontWeight: 500,\r\n },\r\n settingRightDown: {\r\n paddingTop: '10px',\r\n color: 'gray',\r\n //paddingLeft: '10px',\r\n maxWidth: '280px',\r\n fontSize: '0.8rem',\r\n },\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\nimport AdvancedSettingBox from './AdvancedSettingBox';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\nexport default function AdvancedSettings (props) {\r\n const [translateGui] = useGuiTranslations();\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const setGAPath = useGoogleAnalytics();\r\n\r\n useEffect(\r\n () => {\r\n //GA\r\n //setGAPath('/AdvancedSettings');\r\n\r\n //Breadcrumb\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 13,\r\n },\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 version: 20201220.1322\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width: '90%',\r\n display: 'flex',\r\n flexWrap: 'wrap', \r\n paddingTop: '20px',\r\n \r\n },\r\n version:{\r\n position: 'fixed',\r\n bottom: 0,\r\n right:0,\r\n }\r\n \r\n});","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { SketchPicker } from 'react-color';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nexport default function ColorPicker(props) {\r\n\r\n const classes = useStyles();\r\n const [showColorPalette, setShowColorPalette] = useState(false);\r\n const colorPickerRef = useRef();\r\n\r\n useEffect(\r\n () => {\r\n if (showColorPalette) {\r\n window.addEventListener(\"click\", handleClick);\r\n }\r\n return () => window.removeEventListener(\"click\", handleClick);\r\n }, [showColorPalette]\r\n )\r\n\r\n const handleClick = (e) => {\r\n console.log(e.target);\r\n if (colorPickerRef.current && showColorPalette) {\r\n if (!colorPickerRef.current.contains(e.target)) {\r\n setShowColorPalette(false);\r\n }\r\n }\r\n }\r\n\r\n\r\n return (\r\n \r\n
\r\n props.setSelectedColor(e.target.value)} value={props.selectedColor} style={{ width: '200px' }} />\r\n setShowColorPalette(!showColorPalette)} className={classes.colorButton} style={{ backgroundColor: props.selectedColor, cursor:'pointer' }}>\r\n
\r\n
\r\n {\r\n showColorPalette ?\r\n
\r\n props.setSelectedColor(e.hex)}\r\n />\r\n
\r\n : null\r\n }\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n },\r\n colorPickerWrapper: {\r\n position: 'absolute',\r\n zIndex: 10,\r\n width: '200px',\r\n },\r\n colorButton: { \"width\": \"25px\", \"height\": \"25px\", \"display\": \"inline-block\" },\r\n});","import React, { useEffect, useState, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\n\r\nexport default function FontPicker(props) {\r\n\r\n const classes = useStyles();\r\n const [showFontList, setShowFontList] = useState(false);\r\n const wrapperRef = useRef();\r\n const fonts = [\r\n 'Alegreya',\r\n 'B612',\r\n 'Mulish',\r\n 'Varela',\r\n 'Volkorn',\r\n 'IBM Plex Serif',\r\n 'Crimson Text',\r\n 'Cairo',\r\n 'Playfair Display',\r\n 'Spectral',\r\n 'Roboto',\r\n 'Montserrat',\r\n 'Nunito',\r\n 'Open Sans',\r\n 'Source Sans Pro',\r\n ]\r\n\r\n\r\n const getFontCss = () => {\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 useEffect (\r\n () => {\r\n window.addEventListener(\"click\", handleClick);\r\n return ()=>{\r\n window.removeEventListener(\"click\",handleClick)\r\n }\r\n },[wrapperRef]\r\n )\r\n\r\n const handleClick = (e) => {\r\n if(!wrapperRef.current.contains(e.target)) {\r\n setShowFontList(false);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {getFontCss()}\r\n
\r\n \r\n {props.label}\r\n \r\n
\r\n
setShowFontList(!showFontList)}>\r\n {props.selectedFont}\r\n \r\n arrow_drop_down\r\n \r\n
\r\n\r\n {\r\n showFontList ?\r\n
\r\n {\r\n fonts.map(\r\n font =>\r\n
{ props.setSelectedFont(font); setShowFontList(false); }}>\r\n {font}\r\n
\r\n )\r\n }\r\n
\r\n : null\r\n }\r\n
\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n width:'250px',\r\n },\r\n selectedFontSpan: {\r\n width: '200px',\r\n display: 'inline-block',\r\n borderBottom: 'solid 1px gray',\r\n paddingTop: '10px',\r\n fontSize: '1.2rem',\r\n },\r\n label: {\r\n fontSize: '0.8rem',\r\n color: 'rgba(0, 0, 0, 0.54);',\r\n fontFamily: 'Roboto',\r\n fontWeight: 400,\r\n }\r\n});","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useGoogleAnalytics from '../../CustomHooks/useGoogleAnalytics';\r\nimport ColorPicker from './ColorPicker';\r\nimport FontPicker from './FontPicker';\r\nimport Button from '@material-ui/core/Button';\r\nimport useFetch from '../../CustomHooks/useFetch';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function ColorsAndFonts(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const setGAPath = useGoogleAnalytics();\r\n const [selectedPrimaryColor, setSelectedPrimaryColor] = useState('#cc4646');\r\n const [selectedSecondaryColor, setSelectedSecondaryColor] = useState('#cc4646');\r\n const [selectedPrimaryFont, setSelectedPrimaryFont] = useState('B612');\r\n const [selectedSecondaryFont, setSelectedSecondaryFont] = useState('B612');\r\n const [selectedPrimaryTextColor, setSelectedPrimaryTextColor] = useState('#cc4646');\r\n const [selectedSecondaryTextColor, setSelectedSecondaryTextColor] = useState('#cc4646');\r\n const [backgroundColor, setBackgroundColor] = useState('#cc4646');\r\n const [getSettingsHookResponse, getSettingsHook] = useFetch();\r\n const [saveSettingsHookResponse, saveSettingsHook] = useFetch();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n //GA\r\n setGAPath('/ColorsAndFonts');\r\n\r\n //Breadcrumb\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 85,\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n getSettingsHook(\r\n {\r\n url: '/admin/customersettings/get-customization-settings',\r\n method: 'GET',\r\n postData: null,\r\n addTokenHeader: true,\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n if (getSettingsHookResponse.success) {\r\n if(getSettingsHookResponse.settings) {\r\n let settings = JSON.parse (getSettingsHookResponse.settings);\r\n setSelectedPrimaryColor(settings.primaryColor);\r\n setSelectedSecondaryColor(settings.secondaryColor);\r\n setSelectedPrimaryFont(settings.primaryFont);\r\n setSelectedSecondaryFont(settings.secondaryFont);\r\n setSelectedPrimaryTextColor(settings.primaryTextColor);\r\n setSelectedSecondaryTextColor(settings.secondaryTextColor);\r\n setBackgroundColor(settings.backgroundColor);\r\n }\r\n else {\r\n setSelectedPrimaryColor('#233234');\r\n setSelectedSecondaryColor('#453A32');\r\n setSelectedPrimaryFont('Open Sans');\r\n setSelectedSecondaryFont('Roboto');\r\n setSelectedPrimaryTextColor('#675456');\r\n setSelectedSecondaryTextColor('#555565');\r\n setBackgroundColor('#FFFFFF');\r\n }\r\n }\r\n }, [getSettingsHookResponse]\r\n )\r\n\r\n\r\n const saveSetting = () => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '...', showButton: false } });\r\n saveSettingsHook(\r\n {\r\n url: '/admin/customersettings/update-customization-settings',\r\n method: 'PUT',\r\n postData: {\r\n settings: {\r\n primaryColor: selectedPrimaryColor,\r\n secondaryColor: selectedSecondaryColor,\r\n primaryFont: selectedPrimaryFont,\r\n secondaryFont: selectedSecondaryFont,\r\n primaryTextColor: selectedPrimaryTextColor,\r\n secondaryTextColor: selectedSecondaryTextColor,\r\n backgroundColor: backgroundColor,\r\n },\r\n },\r\n addTokenHeader: true,\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\nconst useStyles = makeStyles({\r\n root: {\r\n '& > div': {\r\n marginBottom: '15px',\r\n }\r\n },\r\n\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport Button from '@material-ui/core/Button';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { unstable_renderSubtreeIntoContainer } from 'react-dom';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport { validateEmail } from '../../Util/ValidateEmail';\r\n\r\nexport default function PaynetSubscriptionForm(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [radioValue, setRadioValue] = useState('');\r\n const [nameOnCard, setNameOnCard] = useState('');\r\n const [email, setEmail] = useState('');\r\n const [phoneNumber, setPhoneNumber] = useState('');\r\n const [errorClass, setErrorClass] = useState({});\r\n const [getRedirectLinkHookResponse, getRedirectLinkHook] = useFetch();\r\n\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: '8',\r\n b: '101',\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n const validate = () => {\r\n\r\n let tempErrorClass = {};\r\n let errorExist = false;\r\n\r\n if (nameOnCard == '') {\r\n tempErrorClass.nameOnCard = true;\r\n errorExist = true;\r\n }\r\n else {\r\n tempErrorClass.nameOnCard = false;\r\n }\r\n\r\n if (email == '') {\r\n tempErrorClass.email = true;\r\n errorExist = true;\r\n }\r\n else {\r\n tempErrorClass.email = false;\r\n if (!validateEmail(email)) {\r\n tempErrorClass.email = true;\r\n errorExist = true;\r\n }\r\n }\r\n\r\n if (phoneNumber == '') {\r\n tempErrorClass.phoneNumber = true;\r\n errorExist = true;\r\n }\r\n else {\r\n tempErrorClass.phoneNumber = false;\r\n }\r\n\r\n if (radioValue == '') {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Lütfen Gelişmiş 30 veya Gelişmiş 50 paketlerinden birini seçin.', showButton: true } });\r\n errorExist = true;\r\n }\r\n\r\n\r\n setErrorClass({ ...tempErrorClass });\r\n return errorExist;\r\n }\r\n\r\n const submit = () => {\r\n if (validate()) {\r\n return;\r\n }\r\n else {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Kontrol ediliyor...', showButton: false } });\r\n getRedirectLinkHook(\r\n {\r\n url: '/admin/paynet/create-paynet-subscription',\r\n addTokenHeader: true,\r\n method: 'POST',\r\n postData: {\r\n \"name\": nameOnCard,\r\n \"email\": email,\r\n \"gsm\": phoneNumber,\r\n \"subscriptionPlan\": radioValue,\r\n },\r\n }\r\n )\r\n }\r\n }\r\n\r\n useEffect(\r\n () => {\r\n if (getRedirectLinkHookResponse.redirectUrl) {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: 'Ödeme için PAYNET ödeme sistemine aktarılıyorsunuz', showButton: false } });\r\n setTimeout(() => {\r\n globalContext.dispatchMethod({ type: 'SET_MESSAGE', value: { message: '', showButton: false } });\r\n window.location = getRedirectLinkHookResponse.redirectUrl;\r\n }, 3000);\r\n\r\n }\r\n }, [getRedirectLinkHookResponse]\r\n )\r\n return (\r\n
\r\n
setRadioValue('GELISMIS_30')} className={classes.package} style={{ backgroundColor: radioValue == '30' ? 'aliceblue' : 'white' }}>\r\n
\r\n \r\n Gelişmiş\r\n \r\n \r\n 30\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n 30 Masaya kadar bütün özellikleri kullanın\r\n
\r\n
\r\n 149 TL / Aylık\r\n
\r\n
\r\n setRadioValue('GELISMIS_30')}\r\n value=\"GELISMIS_30\"\r\n name=\"radio-button-demo\"\r\n\r\n />\r\n
\r\n\r\n
setRadioValue('GELISMIS_50')} className={classes.package} style={{ backgroundColor: radioValue == '50' ? 'aliceblue' : 'white' }}>\r\n
\r\n \r\n Gelişmiş\r\n \r\n \r\n 50\r\n \r\n
\r\n
\r\n
\r\n 50 Masaya kadar bütün özellikleri kullanın\r\n
\r\n
\r\n 229 TL / Aylık\r\n
\r\n
\r\n setRadioValue('GELISMIS_50')}\r\n value=\"GELISMIS_50\"\r\n name=\"radio-button-demo\"\r\n\r\n />\r\n
\r\n\r\n setNameOnCard(e.target.value)} value={nameOnCard} />\r\n setEmail(e.target.value)} value={email} />\r\n setPhoneNumber(e.target.value)} value={phoneNumber} />\r\n\r\n \r\n\r\n\r\n\r\n\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n maxWidth: '500px',\r\n\r\n '& > div': {\r\n marginTop: '20px',\r\n //width: '300px',\r\n }\r\n },\r\n buton: {\r\n alignSelf: 'flex-end',\r\n marginTop: '30px',\r\n },\r\n badge: {\r\n \"backgroundColor\": \"#168da9\",\r\n \"color\": \"white\",\r\n \"borderRadius\": \"5px\",\r\n \"display\": \"flex\",\r\n \"flexDirection\": \"column\",\r\n padding: '10px',\r\n\r\n\r\n '& > span:nth-child(2)': {\r\n fontSize: '2rem',\r\n alignSelf: 'flex-end',\r\n }\r\n },\r\n package: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n border: '1px solid #1ba0bf',\r\n borderRadius: '5px',\r\n padding: '10px',\r\n marginTop: '20px',\r\n\r\n '& > div:nth-child(2)': {\r\n padding: '10px',\r\n }\r\n },\r\n col2: {\r\n '& > div:nth-child(2)':{\"marginTop\":\"10px\",\"opacity\":\"0.8\",\"fontWeight\":\"700\"},\r\n }\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport paynetLogo from '../../Images/paynet_logo.png';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport visaLogo from '../../Images/payment_provider_images/visa.svg';\r\nimport mcLogo from '../../Images/payment_provider_images/mc.svg';\r\nimport CurrencySelector from './CurrencySelector';\r\n\r\n\r\nexport default function PaynetConfiguration(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [accountConnected, setAccountConnected] = useState(false);\r\n const [connectedAccountId, setConnectedAccountId] = useState('');\r\n\r\n\r\n useEffect(\r\n () => {\r\n \r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/PaynetConfiguration' });\r\n \r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 112,\r\n },\r\n }\r\n )\r\n\r\n\r\n }, []\r\n )\r\n\r\n\r\n return (\r\n
\r\n {\r\n 1==2 ?\r\n \r\n :\r\n null\r\n }\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n

\r\n {\r\n accountConnected ?\r\n

You are connected and your Stripe account ID is: {connectedAccountId}

\r\n :\r\n \r\n

\r\n Paynet ile işletmeniz adına tüm banka kartlarından tahsilat yapabilirsiniz. Bunun için tek yapmanız gereken aşağıdaki linkte yer alan başvuru formunu doldurmak. Başvurunuzun onaylanmasının ardından HappyTable üzerinden ödeme kabul etmeye başlayabilirsiniz.\r\n

\r\n

\r\n

\r\n
\r\n\r\n Paynet başvuru\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 useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../Contexts/GlobalContext';\r\nimport useGuiTranslations from './MultiLanguage/useGuiTranslations';\r\nimport '../Styles/Header.scss';\r\n\r\nexport default function BreadCrumb (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n return (\r\n
\r\n {translateGui(globalContext.globalState.menuLocation.b)}\r\n \r\n \r\n {translateGui(globalContext.globalState.menuLocation.a) + ' > '}\r\n \r\n \r\n {translateGui(globalContext.globalState.menuLocation.b)}\r\n \r\n \r\n\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\"paddingLeft\":\"3px\",\"fontSize\":\"1.1rem\",\r\n \"fontWeight\":\"500\",\"borderBottom\":\"1px solid #dadada\",\r\n \"color\":\"#615f5f\",\"width\":\"100%\",\"paddingBottom\":\"5px\",\r\n textTransform: 'capitalize',\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\n\r\n\r\nexport default function PaynetSuccess (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n\r\n useEffect(\r\n () => {\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: '0',\r\n b: '0'\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n return (\r\n
\r\n Aboneliğiniz başarı ile gerçekleşti.\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\"marginTop\":\"50px\",\"textAlign\":\"center\",\"fontSize\":\"1.4rem\"},\r\n});","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\nexport default function UnpaidOrders__table(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const tableTotal = useRef(0);\r\n const [translateGui] = useGuiTranslations();\r\n //const currentTableId = useRef(0);\r\n\r\n const addToTableTotal = (toBeAdded) => {\r\n tableTotal.current = tableTotal.current + toBeAdded;\r\n return toBeAdded;\r\n }\r\n\r\n const getTableTotal = () => {\r\n let temp = tableTotal.current;\r\n tableTotal.current = 0;\r\n return temp;\r\n }\r\n\r\n const removeTable = () => {\r\n //props.addTableToCompletedPayments(props.table.customerTableId);\r\n globalContext.dispatchMethod(\r\n { \r\n type: 'SET_MESSAGE', \r\n value: { \r\n message: capitalizeFirstLetter(translateGui(122)), \r\n showButton: true,\r\n doSmthIfOk: ()=> {props.addTableToCompletedPayments(props.table.customerTableId)},\r\n },\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n {capitalizeFirstLetter(translateGui(24))}:\r\n {props.table.tableNumber}\r\n
\r\n
\r\n {\r\n props.table.purchaseOrderList.map(\r\n purchaseOrder =>\r\n purchaseOrder.orderDetail.map(\r\n orderLine =>\r\n
\r\n \r\n {orderLine.foodOrDrink}\r\n \r\n \r\n {addToTableTotal(orderLine.itemAmount)}\r\n \r\n
\r\n )\r\n )\r\n\r\n }\r\n
\r\n {getTableTotal().toFixed(2)}\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n boxShadow: '5px 5px 5px 0px rgba(0, 0, 0, 0.25)',\r\n backgroundColor: 'white',\r\n padding: '10px',\r\n },\r\n header:{\r\n fontFamily: 'Open Sans',\r\n backgroundColor: '#f7f7f7',\r\n\r\n },\r\n body: {\r\n margin: '10px 0',\r\n },\r\n orderLine:{\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n fontSize: '0.9rem',\r\n opacity: '0.9',\r\n },\r\n totalLine:{\r\n display:'flex',\r\n justifyContent: 'flex-end',\r\n paddingTop: '5px',\r\n fontWeight: '500',\r\n borderTop: '1px solid #dad7d7',\r\n marginTop: '10px',\r\n\r\n },\r\n bottom:{\r\n display:'flex',\r\n justifyContent: 'flex-end',\r\n paddingTop: '5px',\r\n }\r\n\r\n});","import React, { useEffect, useState, useContext, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useFetch from 'CustomHooks/useFetch';\r\nimport UnpaidOrders__table from './UnpaidOrders__table';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function UnpaidOrders(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [getOrdersResponse, getOrdersHook] = useFetch();\r\n const [removeTableResponse, removeTableHook] = useFetch();\r\n const intervalId = useRef(0);\r\n const [completedPayments, setCompletedPayments] = useState({});\r\n const [searchText, setSearchText] = useState('');\r\n const [translateGui] = useGuiTranslations();\r\n\r\n useEffect(\r\n () => {\r\n //window.gtag('config', 'UA-160225157-2', { 'page_path': '/UnpaidOrders' });\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 1,\r\n b: 109,\r\n },\r\n }\r\n )\r\n\r\n getOrders();\r\n\r\n return () => {\r\n //console.log('clearing interval');\r\n }\r\n }, []\r\n )\r\n\r\n const getOrders = () => {\r\n \r\n let today= new Date();\r\n \r\n let yesterday = new Date();\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n \r\n getOrdersHook(\r\n {\r\n url: \"/admin/orders/orders-by-table?PaymentType=PayOnTheTable&PaymentStatus=WaitingForPayment&DateStart=\"+yesterday.toISOString().slice(0, 10)+\"&DateEnd=\" + today.toISOString().slice(0, 10),\r\n addTokenHeader: true,\r\n method: 'GET',\r\n postData: null,\r\n doNotHideMessageBox: true,\r\n }\r\n );\r\n\r\n }\r\n useEffect(\r\n () => {\r\n if (getOrdersResponse.tableList) {\r\n setCompletedPayments({});//resetliyorum her refreshde\r\n if (intervalId.current == 0) {\r\n intervalId.current = setInterval(() => {\r\n getOrders();\r\n }, 5000);\r\n }\r\n }\r\n console.log(getOrdersResponse);\r\n\r\n }, [getOrdersResponse]\r\n )\r\n\r\n const addTableToCompletedPayments = (tableId) => {\r\n setCompletedPayments(\r\n {\r\n ...completedPayments,\r\n [tableId]: true,\r\n }\r\n )\r\n \r\n removeTable(tableId);\r\n\r\n }\r\n\r\n const removeTable = (tableId) => {\r\n\r\n let tempOrderList = [];\r\n getOrdersResponse.tableList.map(\r\n table =>\r\n table.customerTableId == tableId ?\r\n table.purchaseOrderList.map(\r\n purchaseOrder =>\r\n tempOrderList.push(purchaseOrder.id)\r\n )\r\n : null\r\n )\r\n\r\n console.log(tempOrderList);\r\n \r\n removeTableHook(\r\n {\r\n url: '/admin/orders/set-payment-status',\r\n addTokenHeader: true,\r\n method: 'PUT',\r\n postData: {\r\n \"orderList\": tempOrderList,\r\n \"paymentStatus\": \"Completed\"\r\n },\r\n }\r\n )\r\n \r\n }\r\n\r\n return (\r\n
\r\n setSearchText(e.target.value)} id=\"standard-basic\" label={capitalizeFirstLetter(translateGui(113))} />\r\n {\r\n getOrdersResponse.tableList ?\r\n getOrdersResponse.tableList.map(\r\n table =>\r\n completedPayments[table.customerTableId] == undefined && table.tableNumber.indexOf(searchText)>-1 ?\r\n \r\n : null\r\n\r\n )\r\n :\r\n null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '&>div':{\r\n marginBottom: '20px',\r\n },\r\n '&>div:nth-child(1)':{\r\n marginBottom: '30px',\r\n marginLeft: '10px',\r\n width: '300px',\r\n }\r\n }\r\n});","import React,{useEffect, useState} from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport default function GoogleAnalytics () {\r\n \r\n const history = useHistory();\r\n\r\n useEffect (\r\n \r\n () => {\r\n console.log('ga eff');\r\n history.listen((location, action) => {\r\n console.log(`The current URL is ${location.pathname}${location.search}${location.hash}`);\r\n console.log(`The last navigation action was ${action}`);\r\n window.gtag('config', 'UA-179155393-1', { 'page_path': '/admin'+ location.pathname }); \r\n }) \r\n //ilk yuklendiginde event tetiklenmiyor diye burada bir kere daha cagiriyorum\r\n window.gtag('config', 'UA-179155393-1', { 'page_path': '/admin'+ window.location.pathname }); \r\n },[]\r\n )\r\n \r\n return null;\r\n}\r\n","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\nexport default function PushSettings__Default(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n const enableButtonClick = () => {\r\n //window.OneSignal.showNativePrompt();\r\n window.OneSignal.registerForPushNotifications();\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {capitalizeFirstLetter(translateGui(128))}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display:'flex',\r\n justifyContent: 'center', \r\n },\r\n messageDiv:{\r\n margin: '30px 0',\r\n },\r\n wrapper:{\r\n width: '80%',\r\n },\r\n buttonWrapper: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n },\r\n\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\n\r\nexport default function PushSettings__Denied (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {capitalizeFirstLetter(translateGui(129))}\r\n
\r\n
\r\n {\r\n globalContext.globalState.selectedGuiLanguage == 'tr' ?\r\n \r\n :\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display:'flex',\r\n justifyContent: 'center', \r\n },\r\n messageDiv:{\r\n margin: '30px 0',\r\n },\r\n wrapper:{\r\n width: '80%',\r\n },\r\n imageWrapper: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n image:{\r\n width: '70%',\r\n\r\n '@media (max-width:600px)':{\r\n width: '100%',\r\n }\r\n }\r\n});","import React,{useEffect, useState, useContext} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport useGuiTranslations from '../MultiLanguage/useGuiTranslations';\r\nimport { capitalizeFirstLetter } from '../../Util/StringFunctions';\r\n\r\nexport default function PushSettings__Granted (props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [translateGui] = useGuiTranslations();\r\n\r\n return (\r\n
\r\n
\r\n
\r\n {capitalizeFirstLetter(translateGui(130))}\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n display:'flex',\r\n justifyContent: 'center', \r\n },\r\n messageDiv:{\r\n margin: '30px 0',\r\n },\r\n wrapper:{\r\n width: '80%',\r\n },\r\n imageWrapper: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n },\r\n image:{\r\n width: '70%',\r\n\r\n '@media (max-width:600px)':{\r\n width: '100%',\r\n }\r\n }\r\n});","import React, { useEffect, useState, useContext } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { GlobalContext } from '../../Contexts/GlobalContext';\r\nimport PushSettings__Default from './PushSettings__Default';\r\nimport PushSettings__Denied from './PushSettings__Denied';\r\nimport PushSettings__Granted from './PushSettings_Granted';\r\nimport useOneSignal from '../../CustomHooks/useOneSignal';\r\n\r\nexport default function PushSettings(props) {\r\n const globalContext = useContext(GlobalContext);\r\n const classes = useStyles();\r\n const [permission, setPermission] = useState('');\r\n const nullValue = useOneSignal();\r\n\r\n useEffect(\r\n () => {\r\n setPermission(Notification.permission);\r\n \r\n\r\n }, []\r\n )\r\n\r\n useEffect(\r\n () => {\r\n\r\n globalContext.dispatchMethod(\r\n {\r\n type: 'SET_MENU_LOCATION',\r\n value: {\r\n a: 8,\r\n b: 124,\r\n },\r\n }\r\n )\r\n }, []\r\n )\r\n\r\n\r\n return (\r\n
\r\n\r\n {\r\n permission == \"default\" ?\r\n \r\n : null\r\n }\r\n {\r\n permission == \"denied\" ?\r\n \r\n : null\r\n }\r\n {\r\n permission == \"granted\" ?\r\n \r\n : null\r\n }\r\n
\r\n )\r\n}\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n }\r\n});","import React, { useState, useEffect, useReducer } from 'react';\nimport './App.scss';\nimport { Route, Switch, BrowserRouter, useHistory } from 'react-router-dom';\nimport MenuMobile from './Components/MenuMobile';\nimport { GlobalContext } from './Contexts/GlobalContext';\nimport MaterialThemeProvider from './Components/MaterialThemeProvider';\nimport Login from './Components/Login';\nimport SignUp from './Components/SignUp';\nimport SignUp__Success from './Components/SignUp__Success';\nimport MailVerification from './Components/MailVerification';\nimport MessageBox from './Components/MessageBox';\nimport ForgotPassword from './Components/ForgotPassword';\nimport PasswordReset from './Components/PasswordReset';\nimport Header__Wrapper from './Components/Header__Wrapper';\nimport OpenOrders from './Components/Orders/OpenOrders/OpenOrders';\nimport OrderHistory from './Components/Orders/OrderHistory/OrderHistory';\nimport Categories from './Components/Categories/Categories';\nimport FoodAndDrinks2 from './Components/FoodAndDrinks/FoodAndDrinks2';\nimport Tables from './Components/Tables';\nimport Logo from './Components/Logo';\nimport Dashboard from './Components/Dashboard/Dashboard';\nimport Payment__Configuration from './Components/PaymentConfiguration/Payment__Configuration';\nimport Payment__Configuration__Completed from './Components/PaymentConfiguration/Payment__Configuration__Completed';\nimport Init from './Components/Init';\nimport CookieConsent from './Components/CookieConsent';\nimport Subscription from 'Components/Subscription/Subscription';\nimport reducer from './Components/Reducer';\nimport Subscription__Success from 'Components/Subscription/Subscription__Success';\nimport Subscription__Cancel from 'Components/Subscription/Subscription__Cancel';\nimport DeliverAndCollect from 'Components/Settings/DeliverAndCollect';\nimport MultiLanguage2 from 'Components/MultiLanguage/MultiLanguage2';\nimport OptionGroupsList from 'Components/OptionGroups/OptionGroupsList';\nimport AdvancedSettings from 'Components/Settings/AdvancedSettings';\nimport ColorsAndFonts from 'Components/Settings/ColorsAndFonts';\nimport PaynetSubscriptionForm from 'Components/Subscription/PaynetSubscriptionForm';\nimport PaynetConfiguration from 'Components/PaymentConfiguration/PaynetConfiguration';\nimport BreadCrumb from 'Components/BreadCrumb';\nimport PaynetSuccess from 'Components/Subscription/PaynetSuccess';\nimport UnpaidOrders from 'Components/Orders/UnpaidOrders';\nimport useGoogleAnalytics from 'CustomHooks/useGoogleAnalytics';\nimport GoogleAnalytics from 'Components/GoogAnalytics';\nimport PushSettings from 'Components/PushNotifications/PushSettings';\n\nfunction App(props) {\n\n\n const [isMobile, setIsMobile] = useState();\n const [globalContext, setGlobalContext] = useState({});\n const [globalState, dispatch] = useReducer(reducer,\n {\n menuLocation: { a: 1, b: 1 },\n messageOptions: { message: '', showButton: false },\n email: '',\n alias: '',\n customerSettings: {},\n userInteractedWithTheDocument: false,\n selectedGuiLanguage: 'en',\n oneSignalInitialized: false,\n ver: '2209201124',\n }\n );\n\n const updateDimensions = () => {\n setIsMobile(window.innerWidth < 851 ? true : false);\n }\n\n\n useEffect(\n () => {\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n /*window.addEventListener('locationchange', function(){\n console.log('location changed!: ' + window.location.pathname);\n })*/\n }, []\n )\n\n\n return (\n \n \n {\n window.location.pathname != '/Login' && \n window.location.pathname != '/SignUp' && \n window.location.pathname != '/ForgotPassword' &&\n window.location.pathname != '/SignUp__Success' &&\n window.location.pathname.indexOf('/mailVerification') == -1 &&\n window.location.pathname.indexOf('/passwordReset') == -1\n ?\n \n : null\n }\n\n \n\n \n \n {\n window.location.pathname == '/SignUp' ?\n \n :\n window.location.pathname == '/SignUp__Success' ?\n \n :\n window.location.pathname.indexOf('/mailVerification') == 0 ?\n \n :\n window.location.pathname == '/ForgotPassword' ?\n \n :\n window.location.pathname.indexOf('/passwordReset') == 0 ?\n \n :\n \n\n\n \n\n
\n {(!isMobile) ?\n \n : null\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\nexport default App;\n","// 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(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\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 (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\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(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n //registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\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":""}