feat(orders): add rejected status to order schema and admin table views
All checks were successful
Staging Build / build (push) Successful in 2m49s

This commit is contained in:
DanielS
2026-07-08 10:13:21 +02:00
parent cc7445e4c5
commit bffaca1d63
6 changed files with 19 additions and 3 deletions

View File

@@ -12,6 +12,7 @@ const statusLabel: Record<string, string> = {
active: 'In Bearbeitung',
completed: 'Abgeschlossen',
cancelled: 'Storniert',
rejected: 'Abgelehnt',
}
const statusClass: Record<string, string> = {
@@ -19,6 +20,7 @@ const statusClass: Record<string, string> = {
active: 'bg-green-500/20 text-green-400 border-green-500/30',
completed: 'bg-blue-500/20 text-blue-400 border-blue-500/30',
cancelled: 'bg-red-500/20 text-red-400 border-red-500/30',
rejected: 'bg-rose-500/20 text-rose-400 border-rose-500/30',
}
export default async function MyOrdersPage() {

View File

@@ -66,6 +66,7 @@ export default async function OrderSuccessPage({
pending: 'Eingegangen',
active: 'In Bearbeitung',
cancelled: 'Storniert',
rejected: 'Abgelehnt',
}
return (

View File

@@ -24,6 +24,7 @@ const statusLabel: Record<string, string> = {
active: 'In Bearbeitung',
completed: 'Abgeschlossen',
cancelled: 'Storniert',
rejected: 'Abgelehnt',
};
const statusClass: Record<string, string> = {
@@ -31,6 +32,7 @@ const statusClass: Record<string, string> = {
active: 'bg-blue-500/20 text-blue-400 border border-blue-500/30',
completed: 'bg-green-500/20 text-green-400 border border-green-500/30',
cancelled: 'bg-red-500/20 text-red-400 border border-red-500/30',
rejected: 'bg-rose-500/20 text-rose-400 border border-rose-500/30',
};
export function OrdersTable({ initialOrders }: OrdersTableProps) {
@@ -43,7 +45,7 @@ export function OrdersTable({ initialOrders }: OrdersTableProps) {
setOrders(initialOrders);
}, [initialOrders]);
const handleStatusChange = async (orderId: string, newStatus: 'pending' | 'active' | 'completed' | 'cancelled') => {
const handleStatusChange = async (orderId: string, newStatus: 'pending' | 'active' | 'completed' | 'cancelled' | 'rejected') => {
setUpdatingId(orderId);
try {
await updateOrderStatus(orderId, newStatus);
@@ -126,6 +128,14 @@ export function OrdersTable({ initialOrders }: OrdersTableProps) {
>
Storniert
</Button>
<Button
variant={statusFilter === "rejected" ? "default" : "outline"}
size="sm"
onClick={() => setStatusFilter("rejected")}
className="text-xs border-rose-500/20 hover:bg-rose-500/10 text-rose-400"
>
Abgelehnt
</Button>
</div>
</div>

View File

@@ -23,12 +23,14 @@ const statusClass: Record<string, string> = {
pending: 'bg-amber-500/20 text-amber-400 border-amber-500/30',
active: 'bg-green-500/20 text-green-400 border-green-500/30',
cancelled: 'bg-red-500/20 text-red-400 border-red-500/30',
rejected: 'bg-rose-500/20 text-rose-400 border-rose-500/30',
}
const statusLabel: Record<string, string> = {
pending: 'Eingegangen',
active: 'In Bearbeitung',
cancelled: 'Storniert',
rejected: 'Abgelehnt',
}
const POLL_INTERVAL_MS = 30_000

View File

@@ -292,7 +292,7 @@ export async function submitOrder(params: {
export async function updateOrderStatus(
orderId: string,
newStatus: 'pending' | 'active' | 'completed' | 'cancelled'
newStatus: 'pending' | 'active' | 'completed' | 'cancelled' | 'rejected'
) {
const admin = createAdminClient()
@@ -337,6 +337,7 @@ export async function updateOrderStatus(
active: 'In Bearbeitung',
completed: 'Abgeschlossen',
cancelled: 'Storniert',
rejected: 'Abgelehnt',
}
const oldLabel = statusLabelMap[oldStatus] || oldStatus
const newLabel = statusLabelMap[newStatus] || newStatus

View File

@@ -160,7 +160,7 @@ export type Order = {
order_data: OrderSnapshot
total_price: number
pdf_url: string | null
status: 'pending' | 'active' | 'completed' | 'cancelled'
status: 'pending' | 'active' | 'completed' | 'cancelled' | 'rejected'
created_at: string
}