Merge branch 'react-version' of https://github.com/MarcEricMartel/420-5DW-HY-TP into react-version
This commit is contained in:
commit
36d34968fd
@ -173,7 +173,8 @@ public class InvoiceController : Controller {
|
|||||||
Phone = sinv.Phone,
|
Phone = sinv.Phone,
|
||||||
Email = sinv.Email,
|
Email = sinv.Email,
|
||||||
Description = sinv.Description,
|
Description = sinv.Description,
|
||||||
CurrencyCode = sinv.CurrencyCode
|
CurrencyCode = sinv.CurrencyCode,
|
||||||
|
LastFourDigits = sinv.LastFourDigits,
|
||||||
};
|
};
|
||||||
|
|
||||||
inv.Payment = chr;
|
inv.Payment = chr;
|
||||||
@ -190,13 +191,6 @@ public class InvoiceController : Controller {
|
|||||||
if (charge.FailureMessage is not null && charge.FailureMessage != "")
|
if (charge.FailureMessage is not null && charge.FailureMessage != "")
|
||||||
return Json(charge.ToJson());
|
return Json(charge.ToJson());
|
||||||
|
|
||||||
try {
|
|
||||||
_context.Invoices.Update(inv);
|
|
||||||
_context.SaveChanges();
|
|
||||||
} catch (Exception ex) {
|
|
||||||
_logger.LogError(20, ex.Message);
|
|
||||||
return BadRequest(ex.Message);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (user.Result is not null) { // Gestion de l'adresse client.
|
if (user.Result is not null) { // Gestion de l'adresse client.
|
||||||
inv.LinkedAccount = user.Result;
|
inv.LinkedAccount = user.Result;
|
||||||
|
1313
GrossesMitaines/GrossesMitainesAPI/Migrations/20221209011029_newstuff.Designer.cs
generated
Normal file
1313
GrossesMitaines/GrossesMitainesAPI/Migrations/20221209011029_newstuff.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,195 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace GrossesMitainesAPI.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class newstuff : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "CardAddress",
|
||||||
|
table: "ChargesModel",
|
||||||
|
type: "nvarchar(max)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<string>(
|
||||||
|
name: "LastFourDigits",
|
||||||
|
table: "ChargesModel",
|
||||||
|
type: "nvarchar(max)",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: "");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetRoles",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "1b7b9c55-c746-493a-a24f-3d5ca937298e",
|
||||||
|
column: "ConcurrencyStamp",
|
||||||
|
value: null);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetRoles",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "c9e08b20-d8a5-473f-9f52-572eb23c12af",
|
||||||
|
column: "ConcurrencyStamp",
|
||||||
|
value: null);
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetUsers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "af9178c8-1a02-4ff8-bc0a-c8248dad6e09",
|
||||||
|
columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" },
|
||||||
|
values: new object[] { "e00d8d0f-1510-415a-a59f-386072484ab2", "AQAAAAIAAYagAAAAEGCyYq3h0iCXjZEzZyx1Jh4IwD6n76MXzopZNtCeBYcAr8rCBAQsgyb1KZINqIi2hA==", "02115bbb-af11-4354-8fd3-d4c121238584" });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetUsers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "ecf7503a-591c-454e-a824-048e10bd0474",
|
||||||
|
columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" },
|
||||||
|
values: new object[] { "10c22569-c9b6-481a-80b0-ada24d0ed3e3", "AQAAAAIAAYagAAAAEMFEklU5e/VioCDzfvR1Xf9WhF/UIsZpuI2q6ZL3m68YSyDEe9CyswhrRR3nmj5ylQ==", "12a136a8-303d-4291-9746-bbc18705a483" });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(8956));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9034));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9037));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9039));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9041));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9043));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 8, 20, 10, 28, 658, DateTimeKind.Local).AddTicks(9055));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "CardAddress",
|
||||||
|
table: "ChargesModel");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "LastFourDigits",
|
||||||
|
table: "ChargesModel");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetRoles",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "1b7b9c55-c746-493a-a24f-3d5ca937298e",
|
||||||
|
column: "ConcurrencyStamp",
|
||||||
|
value: "fb8da1f2-a9df-4faa-9786-259cbc8c6f1c");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetRoles",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "c9e08b20-d8a5-473f-9f52-572eb23c12af",
|
||||||
|
column: "ConcurrencyStamp",
|
||||||
|
value: "eac9c483-2e9f-4f9e-9b97-dc1c761f76c2");
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetUsers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "af9178c8-1a02-4ff8-bc0a-c8248dad6e09",
|
||||||
|
columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" },
|
||||||
|
values: new object[] { "b7103a3b-8f05-462d-9fc0-5d4faa4669dc", "AQAAAAEAACcQAAAAEN68b+gEQV5Vx2grBL94+BzugXFrgXko6KtdY3p/NJN17mk8QCpGlQfJ3BMe040+dg==", "99183d90-1f1c-4a8e-9891-ea8ab3b714d0" });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "AspNetUsers",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: "ecf7503a-591c-454e-a824-048e10bd0474",
|
||||||
|
columns: new[] { "ConcurrencyStamp", "PasswordHash", "SecurityStamp" },
|
||||||
|
values: new object[] { "61f3249f-495f-48c8-ac7e-7d21b3da82c7", "AQAAAAEAACcQAAAAELswgBNsSfJwmigdKX2rpHseOEi20F+ZUhxapu80HTnxZamC3lu1hyAGMXj4kQumMw==", "3098997b-a081-41ec-aa08-6cdea0028db7" });
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 1,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9261));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 2,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9300));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 3,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9327));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 4,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9333));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 5,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9338));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 6,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9344));
|
||||||
|
|
||||||
|
migrationBuilder.UpdateData(
|
||||||
|
table: "Invoices",
|
||||||
|
keyColumn: "Id",
|
||||||
|
keyValue: 7,
|
||||||
|
column: "PurchaseDate",
|
||||||
|
value: new DateTime(2022, 12, 4, 9, 8, 50, 6, DateTimeKind.Local).AddTicks(9357));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -8,4 +8,5 @@ public class ChargeReturnModel {
|
|||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
public string Phone { get; set; }
|
public string Phone { get; set; }
|
||||||
public int Invoice { get; set; }
|
public int Invoice { get; set; }
|
||||||
|
public string LastFourDigits { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -11,4 +11,5 @@ public class ChargesModel {
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
public string Phone { get; set; }
|
public string Phone { get; set; }
|
||||||
|
public string LastFourDigits { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -35,4 +35,5 @@ namespace GrossesMitainesAPI.Models;
|
|||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
public string Email { get; set; }
|
public string Email { get; set; }
|
||||||
public string Phone { get; set; }
|
public string Phone { get; set; }
|
||||||
|
public string LastFourDigits { get; set; }
|
||||||
}
|
}
|
@ -10,7 +10,7 @@
|
|||||||
"DefaultConnection": "Server=(localdb)\\mssqllocaldb; Database=GrossesMitainesDB; Trusted_Connection=True; MultipleActiveResultSets=true"
|
"DefaultConnection": "Server=(localdb)\\mssqllocaldb; Database=GrossesMitainesDB; Trusted_Connection=True; MultipleActiveResultSets=true"
|
||||||
},
|
},
|
||||||
"StripeTest": {
|
"StripeTest": {
|
||||||
"PublicKey": "pk_test_",
|
"PublicKey": "pk_test_51M8mzOEerenEZcQIUmJIrmsaZeeNlOil2G1JcMvvO68w50MJr8rDwUjVO44a8dDhSlsRH4GdzH9rDqtkg4Rtbzco00NqkHdn3H",
|
||||||
"SecretKey": "sk_test_"
|
"SecretKey": "sk_test_51M8mzOEerenEZcQIyHb9AdeluhDsSy9PaxTeqDq6XUhSRCbbqvReHA2KoFb3a8Ru5PAzMgMlCKmj8UDpLKWzUUmr00rta511y8"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,11 @@
|
|||||||
import React, { useState } from "react"
|
import React, { useState, useContext } from "react"
|
||||||
import { CardElement, useElements, useStripe } from "@stripe/react-stripe-js"
|
import { CardElement, useElements, useStripe } from "@stripe/react-stripe-js"
|
||||||
import { Button } from "react-bootstrap"
|
import { Button } from "react-bootstrap"
|
||||||
|
import Swal from "sweetalert2";
|
||||||
|
import withReactContent from "sweetalert2-react-content";
|
||||||
|
import { CartContext } from "../components/Cart";
|
||||||
|
import { useNavigate } from "react-router-dom";
|
||||||
|
|
||||||
|
|
||||||
const CARD_OPTIONS = {
|
const CARD_OPTIONS = {
|
||||||
iconStyle: "solid",
|
iconStyle: "solid",
|
||||||
@ -24,16 +29,23 @@ const CARD_OPTIONS = {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
const PaymentForm = ({ cost }) => {
|
const PaymentForm = ({ cost, invoice }) => {
|
||||||
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const [success, setSuccess] = useState(false);
|
const mySwal = withReactContent(Swal);
|
||||||
const [cardName, setCardName] = useState("");
|
const [cardName, setCardName] = useState("");
|
||||||
|
const [cardPhone,setCardPhone] = useState("");
|
||||||
|
const [cardEmail,setCardEmail] = useState("");
|
||||||
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
|
|
||||||
const stripe = useStripe();
|
const stripe = useStripe();
|
||||||
const elements = useElements();
|
const elements = useElements();
|
||||||
|
const cart = useContext(CartContext);
|
||||||
|
|
||||||
const handleSubmit = async (e) => {
|
const handleSubmit = async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const { error, paymentMethod } = await stripe.createPaymentMethod({
|
setIsLoading(true);
|
||||||
|
const { error } = await stripe.createPaymentMethod({
|
||||||
type: "card",
|
type: "card",
|
||||||
card: elements.getElement(CardElement)
|
card: elements.getElement(CardElement)
|
||||||
})
|
})
|
||||||
@ -44,12 +56,21 @@ const PaymentForm = ({ cost }) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!error) {
|
if (!error) {
|
||||||
const { id } = paymentMethod;
|
stripe.createToken(elements.getElement(CardElement), { name: cardName })
|
||||||
|
.then((result) => {
|
||||||
|
if (!result.error) {
|
||||||
|
invoice.token = result.token.id;
|
||||||
|
invoice.description = `Payement de ${cost} à GM`;
|
||||||
|
invoice.amountInCents = cost;
|
||||||
|
invoice.currencyCode = "CAD";
|
||||||
|
invoice.name = cardName;
|
||||||
|
invoice.email = cardEmail;
|
||||||
|
invoice.phone = cardPhone;
|
||||||
|
invoice.lastFourDigits = result.token.card.last4;
|
||||||
|
|
||||||
const json = JSON.stringify({ amount: cost, stripeId: id });
|
const json = JSON.stringify(invoice);
|
||||||
|
|
||||||
|
fetch(`https://localhost:7292/api/Invoice`, {
|
||||||
fetch(`https://localhost:7292/api/Payment`, {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
credentials: 'include',
|
credentials: 'include',
|
||||||
mode: 'cors',
|
mode: 'cors',
|
||||||
@ -60,16 +81,29 @@ const PaymentForm = ({ cost }) => {
|
|||||||
body: json
|
body: json
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
if (response.ok) {
|
if (response.ok) {
|
||||||
console.log("Successful payment");
|
mySwal.fire({
|
||||||
setSuccess(true);
|
title: 'Commande envoyée avec succès!',
|
||||||
|
timer: 2000,
|
||||||
|
icon: "success"
|
||||||
|
}).then(
|
||||||
|
() => {
|
||||||
|
cart.emptyCart();
|
||||||
|
navigate('/myInvoices');
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log(response);
|
mySwal.fire({
|
||||||
|
title: 'Erreur!',
|
||||||
|
timer: 2000,
|
||||||
|
icon: "error"
|
||||||
|
}).then(()=>{
|
||||||
|
setIsLoading(false);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}).catch((error) => {
|
});
|
||||||
console.log("Error: ", error);
|
}
|
||||||
})
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log(error.message);
|
console.log(error.message);
|
||||||
@ -80,24 +114,23 @@ const PaymentForm = ({ cost }) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{!success ?
|
{
|
||||||
<form onSubmit={handleSubmit}>
|
<form onSubmit={handleSubmit}>
|
||||||
<fieldset className="FormGroup">
|
<fieldset className="FormGroup">
|
||||||
<input className="FormRow" placeholder="Cardholder Name" id="cardholder-name" type="text" value={cardName} onChange={e => setCardName(e.target.value)} />
|
<input className="FormRow cardholder-info" placeholder="Nom sur la carte" id="cardholder-name" type="text" value={cardName} onChange={e => setCardName(e.target.value)} />
|
||||||
|
<input className="FormRow cardholder-info" placeholder="Téléphone de facturation" id="cardholder-phone" type="text" value={cardPhone} onChange={e => setCardPhone(e.target.value)} />
|
||||||
|
<input className="FormRow cardholder-info" placeholder="Addresse courriel de facturation" id="cardholder-email" type="text" value={cardEmail} onChange={e => setCardEmail(e.target.value)} />
|
||||||
<div className="FormRow">
|
<div className="FormRow">
|
||||||
<CardElement options={CARD_OPTIONS} />
|
<CardElement options={CARD_OPTIONS} />
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<div className="Payment-btn-container">
|
<div className="Payment-btn-container">
|
||||||
<Button className="Payment-btn" type="submit">Payer</Button>
|
<Button className="Payment-btn" disabled={isLoading} type="submit">Payer</Button>
|
||||||
|
{
|
||||||
|
isLoading && <div>Paiement en cours...</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
:
|
|
||||||
<div>
|
|
||||||
<h2>
|
|
||||||
L'achat s'est déroulé avec succès
|
|
||||||
</h2>
|
|
||||||
</div>
|
|
||||||
}
|
}
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
@ -7,10 +7,10 @@ const PUBLIC_KEY = "pk_test_51M8mzOEerenEZcQIUmJIrmsaZeeNlOil2G1JcMvvO68w50MJr8r
|
|||||||
|
|
||||||
const stripeTestPromise = loadStripe(PUBLIC_KEY);
|
const stripeTestPromise = loadStripe(PUBLIC_KEY);
|
||||||
|
|
||||||
const StripeContainer = ({cost}) => {
|
const StripeContainer = ({cost, invoice}) => {
|
||||||
return (
|
return (
|
||||||
<Elements stripe={stripeTestPromise}>
|
<Elements stripe={stripeTestPromise}>
|
||||||
<PaymentForm cost={cost}/>
|
<PaymentForm cost={cost} invoice={invoice} />
|
||||||
</Elements>
|
</Elements>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@ import ReviewProdList from "../components/ReviewProdList";
|
|||||||
import TotalProductsPrice from "../components/TotalProductsPrice";
|
import TotalProductsPrice from "../components/TotalProductsPrice";
|
||||||
import { Row, Col, Button } from "react-bootstrap";
|
import { Row, Col, Button } from "react-bootstrap";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import Swal from "sweetalert2";
|
|
||||||
import withReactContent from "sweetalert2-react-content";
|
|
||||||
import { CartContext } from "../components/Cart";
|
import { CartContext } from "../components/Cart";
|
||||||
import StripeContainer from "../components/StripeContainer"
|
import StripeContainer from "../components/StripeContainer"
|
||||||
|
|
||||||
@ -13,7 +11,7 @@ const ReviewInvoice = () => {
|
|||||||
|
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const mySwal = withReactContent(Swal);
|
|
||||||
|
|
||||||
const cart = useContext(CartContext);
|
const cart = useContext(CartContext);
|
||||||
|
|
||||||
@ -90,41 +88,42 @@ const ReviewInvoice = () => {
|
|||||||
navigate("/formulaire")
|
navigate("/formulaire")
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleConfirmer = async () => {
|
|
||||||
const json = JSON.stringify(thisInvoice);
|
|
||||||
|
|
||||||
const response = await fetch(`https://localhost:7292/api/Invoice`, {
|
// const handleConfirmer = async () => {
|
||||||
method: 'POST',
|
// const json = JSON.stringify(thisInvoice);
|
||||||
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"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
// 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 (
|
return (
|
||||||
<>
|
<>
|
||||||
@ -191,7 +190,7 @@ const ReviewInvoice = () => {
|
|||||||
/>
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row>
|
||||||
<StripeContainer cost={total} />
|
<StripeContainer cost={total} invoice={thisInvoice} />
|
||||||
</>
|
</>
|
||||||
|
|
||||||
);
|
);
|
||||||
|
@ -39,7 +39,7 @@ a {
|
|||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#cardholder-name {
|
.cardholder-info {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
border:none;
|
border:none;
|
||||||
color:white;
|
color:white;
|
||||||
|
Loading…
Reference in New Issue
Block a user