diff --git a/frontend/app/admin/page.tsx b/frontend/app/admin/page.tsx index e0619e2..c761ac7 100644 --- a/frontend/app/admin/page.tsx +++ b/frontend/app/admin/page.tsx @@ -11,6 +11,9 @@ type OrderItem = { email: string; phone: string; address: string; + paymentMethod: string; + gcashReference: string; + gcashReceiptUrl: string; item: string; size: string; quantity: number; @@ -74,6 +77,9 @@ export default function AdminPage() { email: string; phone: string; address: string; + payment_method: string; + gcash_reference: string; + gcash_receipt_url: string; item_name: string; size: string; quantity: number; @@ -91,6 +97,9 @@ export default function AdminPage() { email: order.email, phone: order.phone, address: order.address, + paymentMethod: order.payment_method, + gcashReference: order.gcash_reference, + gcashReceiptUrl: order.gcash_receipt_url, item: order.item_name, size: order.size, quantity: order.quantity, @@ -134,6 +143,9 @@ export default function AdminPage() { order.phone, order.item, order.size, + order.paymentMethod, + order.gcashReference, + order.gcashReceiptUrl, order.status, ].some((field) => field.toLowerCase().includes(normalized)); const matchesStatus = @@ -229,6 +241,9 @@ export default function AdminPage() { "Email", "Phone", "Address", + "Payment Method", + "GCash Reference", + "GCash Receipt", "Item", "Size", "Qty", @@ -244,6 +259,9 @@ export default function AdminPage() { order.email, order.phone, order.address, + order.paymentMethod, + order.gcashReference, + order.gcashReceiptUrl, order.item, order.size, String(order.quantity), @@ -491,12 +509,13 @@ export default function AdminPage() {
| Order | Customer | Address | +Payment | Item | Qty | Price | @@ -528,6 +547,28 @@ export default function AdminPage() { {order.address} +
+
+ {order.paymentMethod}
+
+
+ {order.gcashReference}
+
+ {order.gcashReceiptUrl ? (
+
+ View Receipt
+
+ ) : (
+
+ Missing receipt
+
+ )}
+ |
{order.item}
diff --git a/frontend/app/api/admin/orders/route.ts b/frontend/app/api/admin/orders/route.ts
index 6f3b00c..651b33c 100644
--- a/frontend/app/api/admin/orders/route.ts
+++ b/frontend/app/api/admin/orders/route.ts
@@ -37,7 +37,7 @@ export async function GET(request: NextRequest) {
const { data, error } = await supabaseAdmin
.from("orders")
.select(
- "id,full_name,email,phone,address,item_name,size,quantity,unit_price,line_total,status,created_at"
+ "id,full_name,email,phone,address,payment_method,gcash_reference,gcash_receipt_url,item_name,size,quantity,unit_price,line_total,status,created_at"
)
.order("created_at", { ascending: false });
diff --git a/frontend/app/page.tsx b/frontend/app/page.tsx
index a80d4dd..0f367a1 100644
--- a/frontend/app/page.tsx
+++ b/frontend/app/page.tsx
@@ -22,6 +22,9 @@ type CartItem = {
quantity: number;
};
+const GCASH_BUCKET = "gcash-receipts";
+const MAX_RECEIPT_SIZE = 5 * 1024 * 1024;
+
export default function Home() {
const [merchItems, setMerchItems] = useState - Fill up the form below to reserve your merch. We will follow up - with payment details and size confirmation. + Fill up the form below and attach your GCash receipt to confirm + your merch order.
@@ -594,6 +649,47 @@ export default function Home() {
/>
+
+
+
+
+
+
+
{submitError ? (
+ Payment Method + + ++ Upload your GCash receipt before confirming the order. + +{submitError} diff --git a/frontend/supabase/schema.sql b/frontend/supabase/schema.sql index f1cbe95..3357510 100644 --- a/frontend/supabase/schema.sql +++ b/frontend/supabase/schema.sql @@ -21,6 +21,9 @@ create table if not exists public.orders ( email text not null, phone text not null, address text not null, + payment_method text not null default 'gcash', + gcash_reference text not null, + gcash_receipt_url text not null, item_id uuid references public.merch_items(id), item_name text not null, size text not null, |
|---|