From 63cb4b45d7fc648755e6eb53d7abb9dc5e7b4ca6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aaron=20D=C3=B6tsch?= <aaron@fsmpi.rwth-aachen.de>
Date: Mon, 6 Mar 2023 15:30:43 +0100
Subject: [PATCH] Add used card to money transfers

---
 .../20230306141823_add_card_to_transfer/migration.sql          | 2 ++
 prisma/schema.prisma                                           | 1 +
 src/routes/api/[slug]/+server.js                               | 2 +-
 src/routes/api/transactions.js                                 | 3 ++-
 4 files changed, 6 insertions(+), 2 deletions(-)
 create mode 100644 prisma/migrations/20230306141823_add_card_to_transfer/migration.sql

diff --git a/prisma/migrations/20230306141823_add_card_to_transfer/migration.sql b/prisma/migrations/20230306141823_add_card_to_transfer/migration.sql
new file mode 100644
index 0000000..e3f3acc
--- /dev/null
+++ b/prisma/migrations/20230306141823_add_card_to_transfer/migration.sql
@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE "MoneyTransfer" ADD COLUMN     "card" TEXT NOT NULL DEFAULT '';
diff --git a/prisma/schema.prisma b/prisma/schema.prisma
index 576094a..a246311 100644
--- a/prisma/schema.prisma
+++ b/prisma/schema.prisma
@@ -97,4 +97,5 @@ model MoneyTransfer {
   fromId    Int
   to        User     @relation("to", fields: [toId], references: [id])
   toId      Int
+  card      String   @default("")
 }
diff --git a/src/routes/api/[slug]/+server.js b/src/routes/api/[slug]/+server.js
index cfdcbe6..dffff53 100644
--- a/src/routes/api/[slug]/+server.js
+++ b/src/routes/api/[slug]/+server.js
@@ -44,7 +44,7 @@ export async function POST(event) {
 				if(user.balance < data.amount) return new Response(JSON.stringify({message: "Not enough balance"}), {headers: {'content-type': 'application/json', 'status': 400}});
 				const target = await getUserById(data.target);
 				if(!target) return new Response(JSON.stringify({message: "Target not found"}), {headers: {'content-type': 'application/json', 'status': 404}});
-				const { from } = await transferMoney(user.id, target.id, data.amount);
+				const { from } = await transferMoney(user.id, data.card, target.id, data.amount);
 				// don't return the to-user, because it contains the target's information
 				return new Response(JSON.stringify(from), {headers: {'content-type': 'application/json', 'status': 200}});
 			}catch(e){
diff --git a/src/routes/api/transactions.js b/src/routes/api/transactions.js
index ee1d042..cf729b2 100644
--- a/src/routes/api/transactions.js
+++ b/src/routes/api/transactions.js
@@ -29,7 +29,7 @@ export async function buyArticles(userId, card, items, noBalance=false) {
 	return { user, itemTransactions };
 }
 
-export async function transferMoney(fromId, toId, amount){
+export async function transferMoney(fromId, card, toId, amount){
 	const [to, from] = await db.$transaction([
 		db.user.update({
 			where: { id: toId },
@@ -40,6 +40,7 @@ export async function transferMoney(fromId, toId, amount){
 				moneyTransfersReceived: {
 					create: {
 						amount,
+						card,
 						from: { connect: { id: fromId } }
 					}
 				}
-- 
GitLab