From 810f80151d9c1de03cc6fcb5571c3f91770dc929 Mon Sep 17 00:00:00 2001 From: Filip Borum Poulsen Date: Fri, 21 Apr 2023 11:38:59 +0200 Subject: [PATCH] Added payment gateway, create order and updated timeslot overview --- client/src/components/OrderPopup.vue | 143 ++++++++++++++++++ client/src/components/TrainerSelector.vue | 1 - client/src/interfaces/timeslot.ts | 1 + client/src/views/Home.vue | 25 ++- endpoints.md | 11 +- server/Entity relations.drawio | 135 +++++++++++++---- server/example.env | 4 +- server/package-lock.json | 15 +- server/package.json | 3 +- server/src/environment.ts | 22 ++- .../src/middlewares/bodyParserErrorHandler.ts | 34 +++++ server/src/migrations/index.ts | 39 +++-- server/src/migrations/populate.ts | 41 ++--- server/src/routes/index.ts | 4 + server/src/routes/login.ts | 3 +- server/src/routes/order.ts | 127 +++++++++++++--- server/src/routes/register.ts | 2 +- server/src/routes/stripeWebhook.ts | 63 ++++++++ server/src/routes/timeslot.ts | 72 ++++++--- server/src/stripe.ts | 7 + .../src/webhooks/checkoutSessionCompleted.ts | 50 ++++++ server/src/webhooks/checkoutSessionExpired.ts | 16 ++ server/src/webhooks/paymentIntentCreated.ts | 15 ++ server/src/webhooks/paymentIntentFailed.ts | 16 ++ server/src/webhooks/paymentIntentSucceeded.ts | 16 ++ 25 files changed, 738 insertions(+), 127 deletions(-) create mode 100644 client/src/components/OrderPopup.vue create mode 100644 server/src/middlewares/bodyParserErrorHandler.ts create mode 100644 server/src/routes/stripeWebhook.ts create mode 100644 server/src/stripe.ts create mode 100644 server/src/webhooks/checkoutSessionCompleted.ts create mode 100644 server/src/webhooks/checkoutSessionExpired.ts create mode 100644 server/src/webhooks/paymentIntentCreated.ts create mode 100644 server/src/webhooks/paymentIntentFailed.ts create mode 100644 server/src/webhooks/paymentIntentSucceeded.ts diff --git a/client/src/components/OrderPopup.vue b/client/src/components/OrderPopup.vue new file mode 100644 index 0000000..92613dd --- /dev/null +++ b/client/src/components/OrderPopup.vue @@ -0,0 +1,143 @@ + + + + + \ No newline at end of file diff --git a/client/src/components/TrainerSelector.vue b/client/src/components/TrainerSelector.vue index ca39c3c..f5b78a2 100644 --- a/client/src/components/TrainerSelector.vue +++ b/client/src/components/TrainerSelector.vue @@ -23,7 +23,6 @@ export default { }, async mounted() { const filters = this.centers?.map(c => `center=${c}`).join("&"); - console.log(filters) const res = await fetch(`${import.meta.env.VITE_BASE_API_URL}/trainer?${filters}`); if (res.status === 200) { this.trainers = await res.json(); diff --git a/client/src/interfaces/timeslot.ts b/client/src/interfaces/timeslot.ts index 9d0007f..a49421d 100644 --- a/client/src/interfaces/timeslot.ts +++ b/client/src/interfaces/timeslot.ts @@ -1,6 +1,7 @@ export interface Timeslot { startDate: Date endDate: Date + price: number } export interface WeeklyTimeslot { diff --git a/client/src/views/Home.vue b/client/src/views/Home.vue index a05c009..53640c3 100644 --- a/client/src/views/Home.vue +++ b/client/src/views/Home.vue @@ -14,8 +14,7 @@
{{ date.date }}
-
+
{{ formatTime(timeslot.startDate) }} - {{ formatTime(timeslot.endDate) }}
@@ -24,6 +23,7 @@
+ @@ -92,13 +92,14 @@