diff --git a/src/App.js b/src/App.js index 918f9ef..7c893e2 100644 --- a/src/App.js +++ b/src/App.js @@ -24,6 +24,7 @@ import EditDish from "./components/Dialogs/EditDish"; import Dish from "./components/Dialogs/Dish"; import HomeScreen from "./components/Output/HomeScreen"; import Cookies from "./components/Dialogs/Cookies"; +import PrivacyPolicy from "./components/Output/PrivacyPolicy" const theme = createMuiTheme({ palette: { @@ -82,6 +83,9 @@ function App(props) { + + + } diff --git a/src/Services.js b/src/Services.js index 5306d5e..bcf5dc0 100644 --- a/src/Services.js +++ b/src/Services.js @@ -86,3 +86,12 @@ export const getTodayHours = (workingHours) => { return workingHours.pn; } }; + +export const validateNIP = (nip) => { + const separateNumbers = nip.split(''); + if(separateNumbers.lenght === 10){ + + } else { + return false; + } +} diff --git a/src/components/Dialogs/EditRestaurant.js b/src/components/Dialogs/EditRestaurant.js index a71046e..108fa19 100644 --- a/src/components/Dialogs/EditRestaurant.js +++ b/src/components/Dialogs/EditRestaurant.js @@ -12,15 +12,12 @@ import PhotoIcon from "@material-ui/icons/Photo"; import RoomIcon from "@material-ui/icons/Room"; import RestaurantMenuIcon from "@material-ui/icons/RestaurantMenu"; import AddIcon from "@material-ui/icons/Add"; -import Badge from "@material-ui/core/Badge"; import SearchIcon from "@material-ui/icons/Search"; -import { formatDateBasic } from "../../Services.js"; //-------------- import EditRestaurantInfo from "../EditRestaurant/EditRestaurantInfo"; import EditRestaurantLocation from "../EditRestaurant/EditRestaurantLocation"; import EditRestaurantMenu from "../EditRestaurant/EditRestaurantMenu"; import EditRestaurantPhoto from "../EditRestaurant/EditRestaurantPhoto"; -import EditRestaurantSubscription from "../EditRestaurant/EditRestaurantSubscription"; import { fetchAllDishes } from "../../actions"; const useStyles = makeStyles((theme) => ({ @@ -55,26 +52,8 @@ export default function EditRestaurant(props) { const history = useHistory(); let { id } = useParams(); const restaurants = useSelector((state) => state.data.userData.restaurants); - const badgeData = { - color: "", - secondaryText: "", - }; const restaurant = restaurants.find(matchId); if (restaurant === undefined) history.push("/"); - const badgeInit = () => { - if ( - !restaurant.subscriptionActive || - restaurant.subscriptionActive === false - ) { - badgeData.color = "error"; - badgeData.secondaryText = "Nieaktywna"; - } else { - badgeData.color = "primary"; - badgeData.secondaryText = `Aktywna do: ${formatDateBasic( - restaurant.subscriptionDue - )}`; - } - }; dispatch(fetchAllDishes(restaurant._id)); const handleListItemClick = (event, index) => { @@ -84,7 +63,6 @@ export default function EditRestaurant(props) { function matchId(element) { return element._id === id; } - badgeInit(); return (
@@ -111,31 +89,10 @@ export default function EditRestaurant(props) { - handleListItemClick(event, 1)} - > - - - - - - - handleListItemClick(event, 2)} + onClick={(event) => handleListItemClick(event, 1)} > @@ -145,7 +102,7 @@ export default function EditRestaurant(props) { handleListItemClick(event, 3)} + onClick={(event) => handleListItemClick(event, 2)} > @@ -155,7 +112,7 @@ export default function EditRestaurant(props) { handleListItemClick(event, 4)} + onClick={(event) => handleListItemClick(event, 3)} > @@ -175,10 +132,9 @@ export default function EditRestaurant(props) {
{tab === 0 && } - {tab === 1 && } - {tab === 2 && } - {tab === 3 && } - {tab === 4 && } + {tab === 1 && } + {tab === 2 && } + {tab === 3 && } ); } diff --git a/src/components/Dialogs/PaymentDialog.js b/src/components/Dialogs/PaymentDialog.js deleted file mode 100644 index e7f859f..0000000 --- a/src/components/Dialogs/PaymentDialog.js +++ /dev/null @@ -1,65 +0,0 @@ -import React from "react"; -import { makeStyles } from "@material-ui/core/styles"; -import DialogTitle from "@material-ui/core/DialogTitle"; -import DialogContent from "@material-ui/core/DialogContent"; -import Dialog from "@material-ui/core/Dialog"; -import Divider from "@material-ui/core/Divider"; -import ButtonSecondary from "../Input/ButtonSecondary"; -import ButtonPrimary from "../Input/ButtonPrimary"; -import IconButton from "@material-ui/core/IconButton"; -import CloseIcon from "@material-ui/icons/Close"; - -export default function PasswordConfirmation(props) { - const loginStyles = makeStyles((theme) => ({ - root: { - zIndex: "5 !important", - textAlign: "center", - "& .MuiPaper-root": { - backgroundColor: "#262626", - color: "#bbbbbb", - }, - minWidth: "250px", - }, - closeButton: { - color: "#bbbbbb", - position: "absolute", - right: theme.spacing(1), - top: theme.spacing(1), - }, - })); - - const loginClass = loginStyles(); - - return ( - - Aktywacja subskrypcji - - - - - -

- Płatność została rozpoczęta. Jeżeli chcesz ją zrealizować teraz, - kliknij przycisk "Zapłać" (zostaniesz przekierowany do portalu - Przelewy24). Jeżeli nie masz teraz ochoty zapłacić, na swoim adresie - email znajdziesz ten sam link do płatności oraz fakturę pro-forma. - (Link do płatności jest ważny 7 dni - po upływie tego czasu transakcja - jest automatycznie anulowana) -

-
- - -
-
-
- ); -} diff --git a/src/components/EditRestaurant/EditRestaurantSubscription.js b/src/components/EditRestaurant/EditRestaurantSubscription.js deleted file mode 100644 index 9998b6a..0000000 --- a/src/components/EditRestaurant/EditRestaurantSubscription.js +++ /dev/null @@ -1,150 +0,0 @@ -import React, { useState } from "react"; -import ButtonSecondary from "../Input/ButtonSecondary"; -import Divider from "@material-ui/core/Divider"; -import axios from "axios"; -import { useDispatch, useSelector } from "react-redux"; -import { notification, refreshUserData } from "../../actions"; -import { backend } from "../../config.js"; -import { showBackdrop, hideBackdrop } from "../../actions/toggles"; -import PaymentDialog from "../Dialogs/PaymentDialog"; -import { openInNewTab, formatDateBasic } from "../../Services.js"; -import LocalOfferIcon from '@material-ui/icons/LocalOffer'; - -export default function EditRestaurantSubscription(props) { - const { subscriptionActive, subscriptionDue } = props.restaurant; - const initialState = { - transactionId: "", - open: false, - }; - const [state, setState] = useState(initialState); - const userData = useSelector((state) => state.data.userData); - const token = userData.jwt; - const dispatch = useDispatch(); - - const handleActivateSubscription = (type) => { - const data = { - restaurantId: props.restaurant._id, - userData: { - firstname: userData.firstname, - lastname: userData.lastname, - userId: userData.userId, - userEmail: userData.userEmail, - NIP: userData.billing.NIP, - adress: userData.billing.adress, - companyName: userData.billing.companyName, - }, - type: type, - }; - dispatch(showBackdrop()); - axios({ - method: "POST", - url: backend + "restaurant/subscription", - data: data, - headers: { - "x-auth-token": token, - }, - }) - .then((response) => { - dispatch(hideBackdrop()); - if (response.status === 200) { - setState({ ...state, open: true }); - } else { - dispatch(notification("Wystąpił błąd, spróbuj ponownie.", "error")); - } - }) - .catch((error) => { - dispatch(hideBackdrop()); - dispatch(notification("Wystąpił błąd, spróbuj ponownie.", "error")); - throw error; - }); - }; - - const onCancel = () => { - setState({ ...state, open: false }); - }; - - const onAccept = () => { - dispatch(refreshUserData()); - openInNewTab("https://secure.przelewy24.pl/trnRequest/0"); - }; - - return ( -
- -
-

Subskrypcja

- {subscriptionActive ? ( -
Aktywna do: {formatDateBasic(subscriptionDue)}
- ) : ( -
Nieaktywna
- )} -
- {!subscriptionActive && ( -
-

- Aktywuj subskrypcję, aby Twoja restauracja była widoczna. Na tydzień - przed końcem subskrypcji wyślemy Ci email z możliwością opłacenia - subskrypcji na kolejny okres. -

-
-
-
- -

Za darmo

-
- -

3 miesiące

-
-

Możesz jednorazowo aktywować darmowe 3 miesiące subskrypcji, by móc spokojnie uzupełnić menu.

-
- - handleActivateSubscription(3)} - /> -
-
-
- -

50zł

-
- -

1 miesiąc

-
-

Aktywuj subskrypcję na jeden miesiąc.

-
- - handleActivateSubscription(1)} - /> -
-
-
- -

500zł

-
- -

1 rok

-
-

Zapłać z góry za cały rok, a otrzymasz dwa miesiące w prezencie.

-
- - handleActivateSubscription(12)} - /> -
-
-
- )} - {subscriptionActive && ( -

- Subskrypcja jest aktywna - Twoja restauracja jest dostępna do - przeglądania dla użytkowników. Jeżeli chcesz żeby restauracja była - niewidoczna, przejdź do zakładki "Informacje" -

- )} -
- ); -} diff --git a/src/components/Output/Footer.js b/src/components/Output/Footer.js index 31424e8..2c2506d 100644 --- a/src/components/Output/Footer.js +++ b/src/components/Output/Footer.js @@ -1,10 +1,11 @@ import React from "react"; +import { version } from "../../config"; export default class Footer extends React.Component { render() { return (
-

Bankai Software @2021 | Menui (v0.6.0)

+

{`Bankai Software @2021 | Menui v${version}`}

); } diff --git a/src/components/Output/HomeScreen.js b/src/components/Output/HomeScreen.js index 8129d1c..5a87c52 100644 --- a/src/components/Output/HomeScreen.js +++ b/src/components/Output/HomeScreen.js @@ -1,7 +1,7 @@ import React from 'react'; import LogoMain from "../Output/logoMain"; import SearchPanel from "../Input/SearchPanel"; -import appstore from "../../public/appstore.png"; +//import appstore from "../../public/appstore.png"; import googleplay from "../../public/googleplay.png"; import { openInNewTab } from "../../Services.js"; @@ -19,7 +19,7 @@ export default function HomeScreen() {

Pobierz Menui na telefon

- Get Menui from App Store + {/* Get Menui from App Store */} openInNewTab("https://play.google.com/store/apps/details?id=pl.menui.menui")} src={googleplay} alt="Get Menui from Google Play"/>
diff --git a/src/components/Output/ListItemRestaurant.js b/src/components/Output/ListItemRestaurant.js index 43a52e9..d4138b2 100644 --- a/src/components/Output/ListItemRestaurant.js +++ b/src/components/Output/ListItemRestaurant.js @@ -3,7 +3,6 @@ import ListItemIcon from "@material-ui/core/ListItemIcon"; import ListItemText from "@material-ui/core/ListItemText"; import ListItem from "@material-ui/core/ListItem"; import FastfoodIcon from "@material-ui/icons/Fastfood"; -import Badge from "@material-ui/core/Badge"; import { makeStyles } from "@material-ui/core/styles"; const useStyles = makeStyles((theme) => ({ @@ -25,20 +24,6 @@ const useStyles = makeStyles((theme) => ({ export default function ListItemRestaurant(props) { const styles = useStyles(); - const badgeData = { - color: "", - secondaryText: "", - }; - const badgeInit = () => { - if (!props.subscriptionActive || props.subscriptionActive === false) { - badgeData.color = "error"; - badgeData.secondaryText = "Aktywuj sybskrypcję"; - } else { - badgeData.color = "primary"; - badgeData.secondaryText = "Subskrypcja aktywna"; - } - }; - badgeInit(); return ( props.onClick(`/editRestaurant/${props.id}`)} > - - - + ); diff --git a/src/components/Output/PrivacyPolicy.js b/src/components/Output/PrivacyPolicy.js new file mode 100644 index 0000000..e4bb00b --- /dev/null +++ b/src/components/Output/PrivacyPolicy.js @@ -0,0 +1,175 @@ +import React, { useEffect } from "react"; +import { makeStyles } from "@material-ui/core/styles"; + +const useStyles = makeStyles((theme) => ({ + root: { + width: "100%", + height: "100%", + padding: "24px", + textAlign: "justify", + backgroundColor: "#262626", + color: "#bbbbbb", + borderRadius: "24px", + overflow: "scroll" + }, + paragraph: { + padding: "8px", + paddingRight: "48px", + paddingLeft: "48px", + margin: "0" + }, + header: { + textAlign: "center" + } +})); + +export default function PrivacyPolicy() { + useEffect(() => { + document.title = "Menui - Kontakt"; + }); + const style = useStyles(); + return ( +
+

Polityka prywatności

+

§.1 Postanowienia Ogólne

+

+ 1. Administratorem danych jest Bankai Software z siedzibą w Mikołajki, + ul. Czapla 2, NIP: 7422235479 , REGON: 368383562 . Ochrona danych + odbywa się zgodnie z wymogami powszechnie obowiązujących przepisów + prawa, a ich przechowywanie ma miejsce na zabezpieczonych serwerach. +

+

+ 2. Dla interpretacji terminów stosuje się słowniczek Regulaminu lub + tak jak zostało to opisane w Polityce Prywatności (jeżeli wynika + to bezpośrednio z opisu). +

+

+ 3. Na potrzeby lepszego odbioru Polityki Prywatności termin + „Użytkownik” zastąpiony został określeniem „Ty”,  „Administrator” – + „My”. Termin „RODO” oznacza Rozporządzenie Parlamentu Europejskiego + i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób + fizycznych w związku z przetwarzaniem danych osobowych i w sprawie + swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE. +

+

+ 4. Szanujemy prawo do prywatności i dbamy o bezpieczeństwo danych. + W tym celu używany jest m.in. bezpieczny protokół szyfrowania + komunikacji (SSL). +

+

+ 5. Dane osobowe podawane podczas rejestracji są traktowane jako poufne + i nie są widoczne dla osób nieuprawnionych. +

+

§2. Administrator Danych

+

+ 1. Usługodawca jest administratorem danych swoich klientów. Oznacza + to, że jeśli posiadasz Konto na naszej stronie, to przetwarzamy + Twoje dane jak: adres e-mail (w przypadku zwykłych użytkowników), lub: + imię, nazwisko, adres e-mail, nazwa, NIP i adres firmy (w przypadku + użytkowników biznesowych – restauratorów). +

+

+ 2. Dane osobowe przetwarzane są:a. zgodnie z przepisami dotyczącymi + ochrony danych osobowych,b. zgodnie z wdrożoną Polityką Prywatności,c. + w zakresie i celu niezbędnym do nawiązania, ukształtowania treści + Umowy, zmiany bądź jej rozwiązania oraz prawidłowej realizacji Usług + świadczonych drogą elektroniczną, w zakresie i celu niezbędnym + do wypełnienia uzasadnionych interesów (prawnie usprawiedliwionych + celów), a przetwarzanie nie narusza praw i wolności osoby, której dane + dotyczą. +

+

+ 3. Każda osoba, której dane dotyczą (jeżeli jesteśmy ich + administratorem) ma prawo dostępu do danych, sprostowania, usunięcia + lub ograniczenia przetwarzania, prawo sprzeciwu, prawo wniesienia + skargi do organu nadzorczego. +

+

+ 4. Kontakt z osobą nadzorującą przetwarzanie danych osobowych + w organizacji Usługodawcy jest możliwy drogą elektroniczną pod adresem + e-mail: menui@menui.pl. +

+

+ 5. Zastrzegamy sobie prawo do przetwarzania Twoich danych + po rozwiązaniu Umowy lub cofnięciu zgody tylko w zakresie na potrzeby + dochodzenia ewentualnych roszczeń przed sądem lub jeżeli przepisy + krajowe albo unijne bądź prawa międzynarodowego obligują nas + do retencji danych. +

+

+ 6. Usługodawca ma prawo udostępniać dane osobowe Użytkownika + oraz innych jego danych podmiotom upoważnionym na podstawie właściwych + przepisów prawa (np. organom ścigania). +

+

+ 7. Usunięcie danych osobowych może nastąpić na skutek cofnięcia zgody + bądź wniesienia prawnie dopuszczalnego sprzeciwu na przetwarzanie + danych osobowych. +

+

+ 8. Usługodawca nie udostępniania danych osobowych innym podmiotom + aniżeli upoważnionym na podstawie właściwych przepisów prawa. +

+

+ 9. Wdrożyliśmy pseudonimizację, szyfrowanie danych oraz mamy + wprowadzoną kontrolę dostępu dzięki czemu minimalizujemy skutki + ewentualnego naruszenia bezpieczeństwa danych. +

+

+ 10. Dane osobowe przetwarzają osoby wyłącznie upoważnione przez nas + albo przetwarzający, z którymi ściśle współpracujemy. +

+

§3. Pliki cookies

+

+ 1. Witryna www.menui.pl używa cookies. Są to niewielkie pliki + tekstowe wysyłane przez serwer www i przechowywane + przez oprogramowanie komputera przeglądarki. Kiedy przeglądarka + ponownie połączy się ze stroną, witryna rozpoznaje rodzaj urządzenia, + z którego łączy się użytkownik. Parametry pozwalają na odczytanie + informacji w nich zawartych jedynie serwerowi, który je utworzył. + Cookies ułatwiają więc korzystanie z wcześniej odwiedzonych witryn. + Gromadzone informacje dotyczą, języka, rodzaju systemu operacyjnego, + dostawcy usług internetowych, informacji o czasie i dacie, lokalizacji + oraz informacji przesyłanych do witryny za pośrednictwem formularza + kontaktowego. +

+

+ 2. Zebrane dane służą do monitorowania i sprawdzenia, w jaki sposób + użytkownicy korzystają z naszych witryn, aby usprawniać funkcjonowanie + serwisu zapewniając bardziej efektywną i bezproblemową nawigację. + Monitorowania informacji o użytkownikach dokonujemy korzystając + z narzędzia Google Analytics, które rejestruje zachowanie użytkownika + na stronie. Cookies identyfikuje użytkownika, co pozwala + na dopasowanie treści witryny, z której korzysta, do jego potrzeb. + Zapamiętując jego preferencje, umożliwia odpowiednie dopasowanie + skierowanych do niego reklam. Stosujemy pliki cookies, aby + zagwarantować najwyższy standard wygody naszego serwisu, a zebrane + dane są wykorzystywane jedynie wewnątrz firmy Bankai Software w celu + optymalizacji działań. +

+

+ 3. Na naszej witrynie wykorzystujemy następujące pliki cookies: a) + „niezbędne” pliki cookies, umożliwiające korzystanie z usług + dostępnych w ramach serwisu, np. uwierzytelniające pliki cookies + wykorzystywane do usług wymagających uwierzytelniania w ramach + serwisu; b) pliki cookies służące do zapewnienia bezpieczeństwa, + np. wykorzystywane do wykrywania nadużyć w zakresie uwierzytelniania + w ramach serwisu; c) „funkcjonalne” pliki cookies, umożliwiające + „zapamiętanie” wybranych przez użytkownika ustawień i personalizację + interfejsu użytkownika, np. w zakresie wybranego języka lub regionu, + z którego pochodzi użytkownik, rozmiaru czcionki, wyglądu strony + internetowej itp.; +

+

+ 4. Użytkownik w każdej chwili ma możliwość wyłączenia lub + przywrócenia opcji gromadzenia cookies poprzez zmianę ustawień + w przeglądarce internetowej. Instrukcja zarządzania plikami cookies + jest dostępna na stronie http://www.allaboutcookies.org/manage-cookies + Dodatkowe dane osobowe, jak adres e-mail, zbierane są jedynie + w miejscach, w których użytkownik wypełniając formularz wyraźnie + wyraził na to zgodę. Powyższe dane zachowujemy i wykorzystujemy + tylko do potrzeb niezbędnych do wykonania danej funkcji. +

+
+ ); +} diff --git a/src/components/TopBar.js b/src/components/TopBar.js index e43b0ea..5c01fdb 100644 --- a/src/components/TopBar.js +++ b/src/components/TopBar.js @@ -14,12 +14,11 @@ import ListItemIcon from "@material-ui/core/ListItemIcon"; import HomeIcon from "@material-ui/icons/Home"; import MailIcon from "@material-ui/icons/Mail"; import { logout } from "../actions"; -import { showRegulamin } from "../actions/toggles.js"; import { makeStyles } from "@material-ui/core/styles"; import ButtonSecondary from "./Input/ButtonSecondary"; import ListSubheader from "@material-ui/core/ListSubheader"; import { useHistory } from "react-router-dom"; -import GavelIcon from "@material-ui/icons/Gavel"; +import FingerprintIcon from '@material-ui/icons/Fingerprint'; const useStyles = makeStyles((theme) => ({ paper: { @@ -56,8 +55,8 @@ export default function TopBar() { case "kontakt": history.push("/kontakt"); break; - case "regulamin": - dispatch(showRegulamin()); + case "privacy": + history.push("/privacy"); break; case "register": history.push("/register"); @@ -137,11 +136,11 @@ export default function TopBar() { - handleClick("regulamin")}> + handleClick("privacy")}> - + - + diff --git a/src/config.js b/src/config.js index a34d20d..2a21549 100644 --- a/src/config.js +++ b/src/config.js @@ -1,5 +1,6 @@ //export const backend = "https://api.menui.pl/"; export const backend = "http://localhost:4000/"; +export const version = "1.0.1"; export const restaurantTypes = [ "afrykańska", diff --git a/src/index.js b/src/index.js index 0f9efab..b322d3d 100644 --- a/src/index.js +++ b/src/index.js @@ -16,7 +16,7 @@ const store = createStore( rootReducer(history), compose( applyMiddleware(routerMiddleware(history), thunk), - window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : f => f + //window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() : f => f ) );