update
This commit is contained in:
@@ -24,6 +24,7 @@ import EditDish from "./components/Dialogs/EditDish";
|
|||||||
import Dish from "./components/Dialogs/Dish";
|
import Dish from "./components/Dialogs/Dish";
|
||||||
import HomeScreen from "./components/Output/HomeScreen";
|
import HomeScreen from "./components/Output/HomeScreen";
|
||||||
import Cookies from "./components/Dialogs/Cookies";
|
import Cookies from "./components/Dialogs/Cookies";
|
||||||
|
import PrivacyPolicy from "./components/Output/PrivacyPolicy"
|
||||||
|
|
||||||
const theme = createMuiTheme({
|
const theme = createMuiTheme({
|
||||||
palette: {
|
palette: {
|
||||||
@@ -82,6 +83,9 @@ function App(props) {
|
|||||||
<Route path="/kontakt">
|
<Route path="/kontakt">
|
||||||
<Contact />
|
<Contact />
|
||||||
</Route>
|
</Route>
|
||||||
|
<Route path="/privacy">
|
||||||
|
<PrivacyPolicy />
|
||||||
|
</Route>
|
||||||
<PrivateRoute
|
<PrivateRoute
|
||||||
path="/newRestaurant"
|
path="/newRestaurant"
|
||||||
component={<NewRestaurant />}
|
component={<NewRestaurant />}
|
||||||
|
|||||||
@@ -86,3 +86,12 @@ export const getTodayHours = (workingHours) => {
|
|||||||
return workingHours.pn;
|
return workingHours.pn;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const validateNIP = (nip) => {
|
||||||
|
const separateNumbers = nip.split('');
|
||||||
|
if(separateNumbers.lenght === 10){
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -12,15 +12,12 @@ import PhotoIcon from "@material-ui/icons/Photo";
|
|||||||
import RoomIcon from "@material-ui/icons/Room";
|
import RoomIcon from "@material-ui/icons/Room";
|
||||||
import RestaurantMenuIcon from "@material-ui/icons/RestaurantMenu";
|
import RestaurantMenuIcon from "@material-ui/icons/RestaurantMenu";
|
||||||
import AddIcon from "@material-ui/icons/Add";
|
import AddIcon from "@material-ui/icons/Add";
|
||||||
import Badge from "@material-ui/core/Badge";
|
|
||||||
import SearchIcon from "@material-ui/icons/Search";
|
import SearchIcon from "@material-ui/icons/Search";
|
||||||
import { formatDateBasic } from "../../Services.js";
|
|
||||||
//--------------
|
//--------------
|
||||||
import EditRestaurantInfo from "../EditRestaurant/EditRestaurantInfo";
|
import EditRestaurantInfo from "../EditRestaurant/EditRestaurantInfo";
|
||||||
import EditRestaurantLocation from "../EditRestaurant/EditRestaurantLocation";
|
import EditRestaurantLocation from "../EditRestaurant/EditRestaurantLocation";
|
||||||
import EditRestaurantMenu from "../EditRestaurant/EditRestaurantMenu";
|
import EditRestaurantMenu from "../EditRestaurant/EditRestaurantMenu";
|
||||||
import EditRestaurantPhoto from "../EditRestaurant/EditRestaurantPhoto";
|
import EditRestaurantPhoto from "../EditRestaurant/EditRestaurantPhoto";
|
||||||
import EditRestaurantSubscription from "../EditRestaurant/EditRestaurantSubscription";
|
|
||||||
import { fetchAllDishes } from "../../actions";
|
import { fetchAllDishes } from "../../actions";
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
@@ -55,26 +52,8 @@ export default function EditRestaurant(props) {
|
|||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
let { id } = useParams();
|
let { id } = useParams();
|
||||||
const restaurants = useSelector((state) => state.data.userData.restaurants);
|
const restaurants = useSelector((state) => state.data.userData.restaurants);
|
||||||
const badgeData = {
|
|
||||||
color: "",
|
|
||||||
secondaryText: "",
|
|
||||||
};
|
|
||||||
const restaurant = restaurants.find(matchId);
|
const restaurant = restaurants.find(matchId);
|
||||||
if (restaurant === undefined) history.push("/");
|
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));
|
dispatch(fetchAllDishes(restaurant._id));
|
||||||
|
|
||||||
const handleListItemClick = (event, index) => {
|
const handleListItemClick = (event, index) => {
|
||||||
@@ -84,7 +63,6 @@ export default function EditRestaurant(props) {
|
|||||||
function matchId(element) {
|
function matchId(element) {
|
||||||
return element._id === id;
|
return element._id === id;
|
||||||
}
|
}
|
||||||
badgeInit();
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="editRestaurant-container">
|
<div className="editRestaurant-container">
|
||||||
@@ -111,31 +89,10 @@ export default function EditRestaurant(props) {
|
|||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<ListItemText primary="Informacje" />
|
<ListItemText primary="Informacje" />
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem
|
|
||||||
button
|
|
||||||
selected={tab === 1}
|
|
||||||
onClick={(event) => handleListItemClick(event, 1)}
|
|
||||||
>
|
|
||||||
<ListItemIcon>
|
|
||||||
<Badge
|
|
||||||
className={classes.root}
|
|
||||||
anchorOrigin={{ vertical: "top", horizontal: "left" }}
|
|
||||||
variant="dot"
|
|
||||||
color={badgeData.color}
|
|
||||||
>
|
|
||||||
<DescriptionIcon color="primary" />
|
|
||||||
</Badge>
|
|
||||||
</ListItemIcon>
|
|
||||||
<ListItemText
|
|
||||||
className={classes.secondary}
|
|
||||||
primary="Subskrypcja"
|
|
||||||
secondary={badgeData.secondaryText}
|
|
||||||
/>
|
|
||||||
</ListItem>
|
|
||||||
<ListItem
|
<ListItem
|
||||||
button
|
button
|
||||||
selected={tab === 2}
|
selected={tab === 2}
|
||||||
onClick={(event) => handleListItemClick(event, 2)}
|
onClick={(event) => handleListItemClick(event, 1)}
|
||||||
>
|
>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<PhotoIcon color="primary" />
|
<PhotoIcon color="primary" />
|
||||||
@@ -145,7 +102,7 @@ export default function EditRestaurant(props) {
|
|||||||
<ListItem
|
<ListItem
|
||||||
button
|
button
|
||||||
selected={tab === 3}
|
selected={tab === 3}
|
||||||
onClick={(event) => handleListItemClick(event, 3)}
|
onClick={(event) => handleListItemClick(event, 2)}
|
||||||
>
|
>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<RoomIcon color="primary" />
|
<RoomIcon color="primary" />
|
||||||
@@ -155,7 +112,7 @@ export default function EditRestaurant(props) {
|
|||||||
<ListItem
|
<ListItem
|
||||||
button
|
button
|
||||||
selected={tab === 4}
|
selected={tab === 4}
|
||||||
onClick={(event) => handleListItemClick(event, 4)}
|
onClick={(event) => handleListItemClick(event, 3)}
|
||||||
>
|
>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<RestaurantMenuIcon color="primary" />
|
<RestaurantMenuIcon color="primary" />
|
||||||
@@ -175,10 +132,9 @@ export default function EditRestaurant(props) {
|
|||||||
<Divider />
|
<Divider />
|
||||||
</div>
|
</div>
|
||||||
{tab === 0 && <EditRestaurantInfo restaurant={restaurant} />}
|
{tab === 0 && <EditRestaurantInfo restaurant={restaurant} />}
|
||||||
{tab === 1 && <EditRestaurantSubscription restaurant={restaurant} />}
|
{tab === 1 && <EditRestaurantPhoto restaurant={restaurant} />}
|
||||||
{tab === 2 && <EditRestaurantPhoto restaurant={restaurant} />}
|
{tab === 2 && <EditRestaurantLocation restaurant={restaurant} />}
|
||||||
{tab === 3 && <EditRestaurantLocation restaurant={restaurant} />}
|
{tab === 3 && <EditRestaurantMenu restaurant={restaurant} />}
|
||||||
{tab === 4 && <EditRestaurantMenu restaurant={restaurant} />}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 (
|
|
||||||
<Dialog
|
|
||||||
className={loginClass.root}
|
|
||||||
onClose={props.cancel}
|
|
||||||
open={props.open}
|
|
||||||
aria-labelledby="login-title"
|
|
||||||
>
|
|
||||||
<DialogTitle id="login-title">Aktywacja subskrypcji</DialogTitle>
|
|
||||||
<IconButton
|
|
||||||
className={loginClass.closeButton}
|
|
||||||
onClick={props.cancel}
|
|
||||||
aria-label="close"
|
|
||||||
>
|
|
||||||
<CloseIcon />
|
|
||||||
</IconButton>
|
|
||||||
<Divider />
|
|
||||||
<DialogContent>
|
|
||||||
<p>
|
|
||||||
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)
|
|
||||||
</p>
|
|
||||||
<div className="yesno-dialog-buttons">
|
|
||||||
<ButtonPrimary onClick={props.cancel} text="Zamknij" />
|
|
||||||
<ButtonSecondary onClick={props.accept} text="Zapłać" />
|
|
||||||
</div>
|
|
||||||
</DialogContent>
|
|
||||||
</Dialog>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -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 (
|
|
||||||
<div className="editSubscription-tab">
|
|
||||||
<PaymentDialog open={state.open} cancel={onCancel} accept={onAccept} />
|
|
||||||
<div className="subscription-text">
|
|
||||||
<h3>Subskrypcja</h3>
|
|
||||||
{subscriptionActive ? (
|
|
||||||
<h5>Aktywna do: {formatDateBasic(subscriptionDue)}</h5>
|
|
||||||
) : (
|
|
||||||
<h5>Nieaktywna</h5>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
{!subscriptionActive && (
|
|
||||||
<div className="subscription-content">
|
|
||||||
<p>
|
|
||||||
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.
|
|
||||||
</p>
|
|
||||||
<div className="subscription-cards">
|
|
||||||
<div className="subscription-card">
|
|
||||||
<div className="subscription-title">
|
|
||||||
<LocalOfferIcon/>
|
|
||||||
<h1>Za darmo</h1>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<h2>3 miesiące</h2>
|
|
||||||
<div className="subscription-desc">
|
|
||||||
<p>Możesz jednorazowo aktywować darmowe 3 miesiące subskrypcji, by móc spokojnie uzupełnić menu.</p>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<ButtonSecondary
|
|
||||||
text="Aktywuj"
|
|
||||||
onClick={() => handleActivateSubscription(3)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="subscription-card">
|
|
||||||
<div className="subscription-title">
|
|
||||||
<LocalOfferIcon/>
|
|
||||||
<h1>50zł</h1>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<h2>1 miesiąc</h2>
|
|
||||||
<div className="subscription-desc">
|
|
||||||
<p>Aktywuj subskrypcję na jeden miesiąc.</p>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<ButtonSecondary
|
|
||||||
text="Aktywuj"
|
|
||||||
onClick={() => handleActivateSubscription(1)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div className="subscription-card">
|
|
||||||
<div className="subscription-title">
|
|
||||||
<LocalOfferIcon/>
|
|
||||||
<h1>500zł</h1>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<h2>1 rok</h2>
|
|
||||||
<div className="subscription-desc">
|
|
||||||
<p>Zapłać z góry za cały rok, a otrzymasz dwa miesiące w prezencie.</p>
|
|
||||||
</div>
|
|
||||||
<Divider style={{ width: "100%" }} />
|
|
||||||
<ButtonSecondary
|
|
||||||
text="Aktywuj"
|
|
||||||
onClick={() => handleActivateSubscription(12)}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
{subscriptionActive && (
|
|
||||||
<p>
|
|
||||||
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"
|
|
||||||
</p>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
|
import { version } from "../../config";
|
||||||
|
|
||||||
export default class Footer extends React.Component {
|
export default class Footer extends React.Component {
|
||||||
render() {
|
render() {
|
||||||
return (
|
return (
|
||||||
<div className="footer">
|
<div className="footer">
|
||||||
<p>Bankai Software @2021 | Menui (v0.6.0)</p>
|
<p>{`Bankai Software @2021 | Menui v${version}`}</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import LogoMain from "../Output/logoMain";
|
import LogoMain from "../Output/logoMain";
|
||||||
import SearchPanel from "../Input/SearchPanel";
|
import SearchPanel from "../Input/SearchPanel";
|
||||||
import appstore from "../../public/appstore.png";
|
//import appstore from "../../public/appstore.png";
|
||||||
import googleplay from "../../public/googleplay.png";
|
import googleplay from "../../public/googleplay.png";
|
||||||
import { openInNewTab } from "../../Services.js";
|
import { openInNewTab } from "../../Services.js";
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ export default function HomeScreen() {
|
|||||||
<div className="hs-bottom">
|
<div className="hs-bottom">
|
||||||
<h4>Pobierz Menui na telefon</h4>
|
<h4>Pobierz Menui na telefon</h4>
|
||||||
<div>
|
<div>
|
||||||
<img className="hs-bottom-icon" src={appstore} alt="Get Menui from App Store" />
|
{/* <img className="hs-bottom-icon" src={appstore} alt="Get Menui from App Store" /> */}
|
||||||
<img className="hs-bottom-icon" onClick={() => openInNewTab("https://play.google.com/store/apps/details?id=pl.menui.menui")} src={googleplay} alt="Get Menui from Google Play"/>
|
<img className="hs-bottom-icon" onClick={() => openInNewTab("https://play.google.com/store/apps/details?id=pl.menui.menui")} src={googleplay} alt="Get Menui from Google Play"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import ListItemIcon from "@material-ui/core/ListItemIcon";
|
|||||||
import ListItemText from "@material-ui/core/ListItemText";
|
import ListItemText from "@material-ui/core/ListItemText";
|
||||||
import ListItem from "@material-ui/core/ListItem";
|
import ListItem from "@material-ui/core/ListItem";
|
||||||
import FastfoodIcon from "@material-ui/icons/Fastfood";
|
import FastfoodIcon from "@material-ui/icons/Fastfood";
|
||||||
import Badge from "@material-ui/core/Badge";
|
|
||||||
import { makeStyles } from "@material-ui/core/styles";
|
import { makeStyles } from "@material-ui/core/styles";
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
@@ -25,20 +24,6 @@ const useStyles = makeStyles((theme) => ({
|
|||||||
|
|
||||||
export default function ListItemRestaurant(props) {
|
export default function ListItemRestaurant(props) {
|
||||||
const styles = useStyles();
|
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 (
|
return (
|
||||||
<ListItem
|
<ListItem
|
||||||
@@ -46,19 +31,11 @@ export default function ListItemRestaurant(props) {
|
|||||||
onClick={() => props.onClick(`/editRestaurant/${props.id}`)}
|
onClick={() => props.onClick(`/editRestaurant/${props.id}`)}
|
||||||
>
|
>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<Badge
|
|
||||||
className={styles.root}
|
|
||||||
anchorOrigin={{ vertical: "top", horizontal: "left" }}
|
|
||||||
variant="dot"
|
|
||||||
color={badgeData.color}
|
|
||||||
>
|
|
||||||
<FastfoodIcon />
|
<FastfoodIcon />
|
||||||
</Badge>
|
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<ListItemText
|
<ListItemText
|
||||||
className={styles.secondary}
|
className={styles.secondary}
|
||||||
primary={props.name}
|
primary={props.name}
|
||||||
secondary={badgeData.secondaryText}
|
|
||||||
/>
|
/>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
);
|
);
|
||||||
|
|||||||
175
src/components/Output/PrivacyPolicy.js
Normal file
175
src/components/Output/PrivacyPolicy.js
Normal file
@@ -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 (
|
||||||
|
<div className={style.root}>
|
||||||
|
<h1 className={style.header}>Polityka prywatności</h1>
|
||||||
|
<h3 className={style.header}>§.1 Postanowienia Ogólne</h3>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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).
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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).
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
5. Dane osobowe podawane podczas rejestracji są traktowane jako poufne
|
||||||
|
i nie są widoczne dla osób nieuprawnionych.
|
||||||
|
</p>
|
||||||
|
<h3 className={style.header}>§2. Administrator Danych</h3>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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).
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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ą.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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).
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
7. Usunięcie danych osobowych może nastąpić na skutek cofnięcia zgody
|
||||||
|
bądź wniesienia prawnie dopuszczalnego sprzeciwu na przetwarzanie
|
||||||
|
danych osobowych.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
8. Usługodawca nie udostępniania danych osobowych innym podmiotom
|
||||||
|
aniżeli upoważnionym na podstawie właściwych przepisów prawa.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
9. Wdrożyliśmy pseudonimizację, szyfrowanie danych oraz mamy
|
||||||
|
wprowadzoną kontrolę dostępu dzięki czemu minimalizujemy skutki
|
||||||
|
ewentualnego naruszenia bezpieczeństwa danych.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
10. Dane osobowe przetwarzają osoby wyłącznie upoważnione przez nas
|
||||||
|
albo przetwarzający, z którymi ściśle współpracujemy.
|
||||||
|
</p>
|
||||||
|
<h3 className={style.header}>§3. Pliki cookies</h3>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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ń.
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.;
|
||||||
|
</p>
|
||||||
|
<p className={style.paragraph}>
|
||||||
|
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.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -14,12 +14,11 @@ import ListItemIcon from "@material-ui/core/ListItemIcon";
|
|||||||
import HomeIcon from "@material-ui/icons/Home";
|
import HomeIcon from "@material-ui/icons/Home";
|
||||||
import MailIcon from "@material-ui/icons/Mail";
|
import MailIcon from "@material-ui/icons/Mail";
|
||||||
import { logout } from "../actions";
|
import { logout } from "../actions";
|
||||||
import { showRegulamin } from "../actions/toggles.js";
|
|
||||||
import { makeStyles } from "@material-ui/core/styles";
|
import { makeStyles } from "@material-ui/core/styles";
|
||||||
import ButtonSecondary from "./Input/ButtonSecondary";
|
import ButtonSecondary from "./Input/ButtonSecondary";
|
||||||
import ListSubheader from "@material-ui/core/ListSubheader";
|
import ListSubheader from "@material-ui/core/ListSubheader";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import GavelIcon from "@material-ui/icons/Gavel";
|
import FingerprintIcon from '@material-ui/icons/Fingerprint';
|
||||||
|
|
||||||
const useStyles = makeStyles((theme) => ({
|
const useStyles = makeStyles((theme) => ({
|
||||||
paper: {
|
paper: {
|
||||||
@@ -56,8 +55,8 @@ export default function TopBar() {
|
|||||||
case "kontakt":
|
case "kontakt":
|
||||||
history.push("/kontakt");
|
history.push("/kontakt");
|
||||||
break;
|
break;
|
||||||
case "regulamin":
|
case "privacy":
|
||||||
dispatch(showRegulamin());
|
history.push("/privacy");
|
||||||
break;
|
break;
|
||||||
case "register":
|
case "register":
|
||||||
history.push("/register");
|
history.push("/register");
|
||||||
@@ -137,11 +136,11 @@ export default function TopBar() {
|
|||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<ListItemText primary="Kontakt" />
|
<ListItemText primary="Kontakt" />
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<ListItem button onClick={() => handleClick("regulamin")}>
|
<ListItem button onClick={() => handleClick("privacy")}>
|
||||||
<ListItemIcon>
|
<ListItemIcon>
|
||||||
<GavelIcon />
|
<FingerprintIcon />
|
||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<ListItemText primary="Regulamin" />
|
<ListItemText primary="Polityka prywatności" />
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<Divider />
|
<Divider />
|
||||||
<ListItem>
|
<ListItem>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
//export const backend = "https://api.menui.pl/";
|
//export const backend = "https://api.menui.pl/";
|
||||||
export const backend = "http://localhost:4000/";
|
export const backend = "http://localhost:4000/";
|
||||||
|
export const version = "1.0.1";
|
||||||
|
|
||||||
export const restaurantTypes = [
|
export const restaurantTypes = [
|
||||||
"afrykańska",
|
"afrykańska",
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const store = createStore(
|
|||||||
rootReducer(history),
|
rootReducer(history),
|
||||||
compose(
|
compose(
|
||||||
applyMiddleware(routerMiddleware(history), thunk),
|
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
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user