Files
GGMM/GrossesMitaines/grosses-mitaines-ui/src/pages/ReviewInvoice.js
2022-12-08 19:40:40 -05:00

199 lines
6.9 KiB
JavaScript

import { useState, useContext, useEffect } from "react";
import Cookies from "universal-cookie";
import ReviewProdList from "../components/ReviewProdList";
import TotalProductsPrice from "../components/TotalProductsPrice";
import { Row, Col, Button } from "react-bootstrap";
import { useNavigate } from "react-router-dom";
import { CartContext } from "../components/Cart";
import StripeContainer from "../components/StripeContainer"
const ReviewInvoice = () => {
const navigate = useNavigate();
const cart = useContext(CartContext);
const [thisInvoice, setThisInvoice] = useState({
firstName: "",
lastName: "",
phoneNumber: "",
emailAddress: "",
civicNumber: "",
appartment: "",
street: "",
city: "",
province: "",
country: "",
postalCode: "",
prodQuant: [],
});
const [total, setTotal] = useState(-1);
useEffect(() => {
const cookies = new Cookies();
const thisInvoice = cookies.get('invoice');
if (thisInvoice != null) {
var dic = {};
if (cart.items.length > 0) {
cart.items.forEach((item) => {
dic[item.id] = item.quantity;
}
)
}
const tpsRate = 5;
const tvqRate = 9.975;
var price = cart.getTotalCost();
var tps = 0;
var tvq = 0;
var totalCost;
tps = price * (tpsRate / 100);
tvq = price * (tvqRate / 100);
totalCost = price + tps + tvq;
totalCost = totalCost * 100;
totalCost = totalCost.toFixed(0);
setTotal(totalCost);
setThisInvoice((e) => {
return {
...e,
firstName: thisInvoice.firstName,
lastName: thisInvoice.lastName,
phoneNumber: thisInvoice.phoneNumber,
emailAddress: thisInvoice.emailAddress,
civicNumber: thisInvoice.civicNumber,
appartment: thisInvoice.appartment,
street: thisInvoice.street,
city: thisInvoice.city,
province: thisInvoice.province,
country: thisInvoice.country,
postalCode: thisInvoice.postalCode,
prodQuant: dic
}
})
}
else {
console.log("No invoice to review!");
}
}, [cart]);
const handleModify = () => {
navigate("/formulaire")
}
// const handleConfirmer = async () => {
// const json = JSON.stringify(thisInvoice);
// const response = await fetch(`https://localhost:7292/api/Invoice`, {
// method: 'POST',
// credentials: 'include',
// mode: 'cors',
// headers: {
// 'Accept': 'application/json',
// 'Content-Type': 'application/json'
// },
// body: json
// })
// if (response.ok) {
// mySwal.fire({
// title: 'Commande envoyée avec succès!',
// timer: 2000,
// icon: "success"
// }).then(
// () => {
// cart.emptyCart();
// navigate('/morceaux');
// }
// )
// }
// else {
// console.log("Erreur de creation la commande #" + thisInvoice.id);
// mySwal.fire({
// title: 'Erreur!',
// timer: 2000,
// icon: "error"
// })
// }
// }
return (
<>
<Row>
<h2 className="confirmer-infos">Veuillez confirmer les informations ci-dessous!</h2>
<Col xs={6} md={4}>
<div className="review-invoice-info">
<div>
<label className="bold">Prénom: </label> <label>{thisInvoice.firstName}</label>
</div>
<div>
<label className="bold">Nom: </label> <label>{thisInvoice.lastName}</label>
</div>
<div>
<label className="bold">Téléphone: </label> <label>{thisInvoice.phoneNumber}</label>
</div>
<div>
<label className="bold">Courriel: </label> <label>{thisInvoice.emailAddress}</label>
</div>
</div>
<div className="review-invoice-address-container">
<div>
<label className="bold">Numéro civique: </label> <label>{thisInvoice.civicNumber}</label>
</div>
{thisInvoice.appartment != null ?
<div>
<label className="bold">Numéro d'appartement: </label> <label>{thisInvoice.appartment}</label>
</div>
: null
}
<div>
<label className="bold">Rue: </label> <label>{thisInvoice.street}</label>
</div>
<div>
<label className="bold">Ville: </label> <label>{thisInvoice.city}</label>
</div>
<div>
<label className="bold">Province (abréviation): </label> <label>{thisInvoice.province}</label>
</div>
<div>
<label className="bold">Pays: </label> <label>{thisInvoice.country}</label>
</div>
<div>
<label className="bold">Code postal: </label> <label>{thisInvoice.postalCode}</label>
</div>
</div>
<div className="review-invoice-info">
<TotalProductsPrice
/>
</div>
<Row className="invoice-buttons">
{/* <Col xs={6}>
<Button className="invoice-button confirmer" onClick={handleConfirmer}>Confirmer</Button>
</Col> */}
<Col xs={12}>
<Button className="invoice-button modifier" onClick={handleModify}>Modifier</Button>
</Col>
</Row>
</Col>
<Col xs={6} md={8}>
<ReviewProdList
/>
</Col>
</Row>
<StripeContainer cost={total} invoice={thisInvoice} />
</>
);
}
export default ReviewInvoice;