import StripeCheckout from "react-stripe-checkout"; import {Button, Dialog, DialogContent, DialogTitle, IconButton} from "@mui/material"; import CloseIcon from "@mui/icons-material/Close"; import {CreatePayment, PaymentType, PublishableStripeKey} from "../../services/payment-service"; import {useAuthContext} from "../../configurations/AuthContext"; import {calculateTotalPrice} from "../functions"; import {AttachMoneyOutlined, CreditCard} from "@mui/icons-material"; import React, {useState} from "react"; import {OrderStatus, UpdateOrder} from "../../services/order-service"; import {useLocation, useNavigate} from "react-router-dom"; const PaymentModal = ({naracka, ...props}) => { const {loggedUserRole, ownershipChanges} = useAuthContext(); const navigate = useNavigate(); const location = useLocation(); const generateToken = async token => { const requestPayment = { potrosuvacId: loggedUserRole?.roleId, token: token.id, totalPrice: calculateTotalPrice(naracka?.narackaMenuItems), paymentType: PaymentType.DebitCard, narackaId: naracka.id } await CreatePayment(requestPayment); ownershipChanges(null); navigate(location.pathname, {replace: true}); props.onClose(); } const handleCashPayment = async () => { let totalPrice = calculateTotalPrice(naracka?.narackaMenuItems); const approval = window.confirm(`Are you sure you want to proceed with your order ? \n Total Amount to pay: ${totalPrice} `); let paymentRequest = { potrosuvacId: naracka?.potrosuvac?.id, narackaId: naracka?.id, paymentType: PaymentType.Cash, totalPrice: totalPrice } if (approval) { let updatedOrder = { potrosuvacId: naracka?.potrosuvac?.id, status: OrderStatus.PendingAdminApproval, menuItems: naracka.narackaMenuItems.map(nmp => ({ menuItemId: nmp?.menuItem?.id, quantity: nmp.quantity })) } await UpdateOrder(naracka.id, updatedOrder) await CreatePayment(paymentRequest); ownershipChanges(null); navigate(0); props.onClose(); } } const [open, setOpen] = useState(false); return ( naracka && naracka.potrosuvac && What will be your payment method ? props.onClose()}> Card } stripeKey={PublishableStripeKey} allowRememberMe onClose={() => setOpen(false)} token={generateToken} /> ) } export default PaymentModal;