'use client'; import { useState } from 'react'; import { useMutation, useSuspenseQuery } from '@tanstack/react-query'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'; import { Input } from '@/components/ui/input'; import { approvalsQueryOptions, crmReferenceQueryOptions } from '../api/queries'; import { approveQuotationMutation, rejectQuotationMutation } from '../api/mutations'; import { BranchBadge, SectionCard, TimelineList } from './shared'; import { formatCurrency } from '../utils/format'; function DecisionDialog({ label, description, isPending, onConfirm }: { label: string; description: string; isPending: boolean; onConfirm: (comment: string) => void; }) { const [comment, setComment] = useState(''); return ( {label} {description} setComment(event.target.value)} placeholder='Comment' /> ); } export function ApprovalsPage() { const { data } = useSuspenseQuery(approvalsQueryOptions({ page: 1, limit: 10 })); const { data: reference } = useSuspenseQuery(crmReferenceQueryOptions()); const baseApproveMutation = approveQuotationMutation; const baseRejectMutation = rejectQuotationMutation; const approveMutation = useMutation({ ...baseApproveMutation, onSuccess: async (...args) => { await baseApproveMutation.onSuccess?.(...args); toast.success('Approve mock สำเร็จ'); } }); const rejectMutation = useMutation({ ...baseRejectMutation, onSuccess: async (...args) => { await baseRejectMutation.onSuccess?.(...args); toast.success('Reject mock สำเร็จ'); } }); return (
{data.items.map((item) => { const branch = reference.branches.find((value) => value.id === item.branchId); return (

{item.quotationCode}

{branch ? : null}

{item.productType} / Submitter: {item.submitterName}

Level {item.approverLevel} / {formatCurrency(item.amount)}

approveMutation.mutate({ quotationId: item.quotationId, comment }) } /> rejectMutation.mutate({ quotationId: item.quotationId, comment }) } />
); })}
({ id: item.id, title: `${item.quotationCode} / Level ${item.approverLevel}`, detail: `${item.submitterName} ส่งอนุมัติสำหรับ ${item.productType}`, timestamp: '2026-06-11' }))} />
); }