feat(orders): add rejected status to order schema and admin table views
All checks were successful
Staging Build / build (push) Successful in 2m49s
All checks were successful
Staging Build / build (push) Successful in 2m49s
This commit is contained in:
@@ -12,6 +12,7 @@ const statusLabel: Record<string, string> = {
|
|||||||
active: 'In Bearbeitung',
|
active: 'In Bearbeitung',
|
||||||
completed: 'Abgeschlossen',
|
completed: 'Abgeschlossen',
|
||||||
cancelled: 'Storniert',
|
cancelled: 'Storniert',
|
||||||
|
rejected: 'Abgelehnt',
|
||||||
}
|
}
|
||||||
|
|
||||||
const statusClass: Record<string, string> = {
|
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',
|
active: 'bg-green-500/20 text-green-400 border-green-500/30',
|
||||||
completed: 'bg-blue-500/20 text-blue-400 border-blue-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',
|
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() {
|
export default async function MyOrdersPage() {
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ export default async function OrderSuccessPage({
|
|||||||
pending: 'Eingegangen',
|
pending: 'Eingegangen',
|
||||||
active: 'In Bearbeitung',
|
active: 'In Bearbeitung',
|
||||||
cancelled: 'Storniert',
|
cancelled: 'Storniert',
|
||||||
|
rejected: 'Abgelehnt',
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ const statusLabel: Record<string, string> = {
|
|||||||
active: 'In Bearbeitung',
|
active: 'In Bearbeitung',
|
||||||
completed: 'Abgeschlossen',
|
completed: 'Abgeschlossen',
|
||||||
cancelled: 'Storniert',
|
cancelled: 'Storniert',
|
||||||
|
rejected: 'Abgelehnt',
|
||||||
};
|
};
|
||||||
|
|
||||||
const statusClass: Record<string, string> = {
|
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',
|
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',
|
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',
|
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) {
|
export function OrdersTable({ initialOrders }: OrdersTableProps) {
|
||||||
@@ -43,7 +45,7 @@ export function OrdersTable({ initialOrders }: OrdersTableProps) {
|
|||||||
setOrders(initialOrders);
|
setOrders(initialOrders);
|
||||||
}, [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);
|
setUpdatingId(orderId);
|
||||||
try {
|
try {
|
||||||
await updateOrderStatus(orderId, newStatus);
|
await updateOrderStatus(orderId, newStatus);
|
||||||
@@ -126,6 +128,14 @@ export function OrdersTable({ initialOrders }: OrdersTableProps) {
|
|||||||
>
|
>
|
||||||
Storniert
|
Storniert
|
||||||
</Button>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -23,12 +23,14 @@ const statusClass: Record<string, string> = {
|
|||||||
pending: 'bg-amber-500/20 text-amber-400 border-amber-500/30',
|
pending: 'bg-amber-500/20 text-amber-400 border-amber-500/30',
|
||||||
active: 'bg-green-500/20 text-green-400 border-green-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',
|
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> = {
|
const statusLabel: Record<string, string> = {
|
||||||
pending: 'Eingegangen',
|
pending: 'Eingegangen',
|
||||||
active: 'In Bearbeitung',
|
active: 'In Bearbeitung',
|
||||||
cancelled: 'Storniert',
|
cancelled: 'Storniert',
|
||||||
|
rejected: 'Abgelehnt',
|
||||||
}
|
}
|
||||||
|
|
||||||
const POLL_INTERVAL_MS = 30_000
|
const POLL_INTERVAL_MS = 30_000
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ export async function submitOrder(params: {
|
|||||||
|
|
||||||
export async function updateOrderStatus(
|
export async function updateOrderStatus(
|
||||||
orderId: string,
|
orderId: string,
|
||||||
newStatus: 'pending' | 'active' | 'completed' | 'cancelled'
|
newStatus: 'pending' | 'active' | 'completed' | 'cancelled' | 'rejected'
|
||||||
) {
|
) {
|
||||||
const admin = createAdminClient()
|
const admin = createAdminClient()
|
||||||
|
|
||||||
@@ -337,6 +337,7 @@ export async function updateOrderStatus(
|
|||||||
active: 'In Bearbeitung',
|
active: 'In Bearbeitung',
|
||||||
completed: 'Abgeschlossen',
|
completed: 'Abgeschlossen',
|
||||||
cancelled: 'Storniert',
|
cancelled: 'Storniert',
|
||||||
|
rejected: 'Abgelehnt',
|
||||||
}
|
}
|
||||||
const oldLabel = statusLabelMap[oldStatus] || oldStatus
|
const oldLabel = statusLabelMap[oldStatus] || oldStatus
|
||||||
const newLabel = statusLabelMap[newStatus] || newStatus
|
const newLabel = statusLabelMap[newStatus] || newStatus
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ export type Order = {
|
|||||||
order_data: OrderSnapshot
|
order_data: OrderSnapshot
|
||||||
total_price: number
|
total_price: number
|
||||||
pdf_url: string | null
|
pdf_url: string | null
|
||||||
status: 'pending' | 'active' | 'completed' | 'cancelled'
|
status: 'pending' | 'active' | 'completed' | 'cancelled' | 'rejected'
|
||||||
created_at: string
|
created_at: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user