From db56ec94ea9163aa2c3b747a45c3be6f003a6751 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 3 Sep 2026 14:07:37 +0700 Subject: [PATCH] feat: add upload file functionality to letter requests; integrate AttachmentPreviewDialog and update column actions --- .../services/letter-requests/columns.tsx | 30 +++++++++++-------- .../admin/services/letter-requests/index.tsx | 1 + 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/resources/js/pages/admin/services/letter-requests/columns.tsx b/resources/js/pages/admin/services/letter-requests/columns.tsx index cdcf2a7..03a6cf9 100644 --- a/resources/js/pages/admin/services/letter-requests/columns.tsx +++ b/resources/js/pages/admin/services/letter-requests/columns.tsx @@ -1,6 +1,7 @@ import type { ColumnDef } from '@tanstack/react-table'; import { format } from 'date-fns'; -import { Paperclip, Pencil, Trash2 } from 'lucide-react'; +import { Pencil, Trash2, Upload } from 'lucide-react'; +import { AttachmentPreviewDialog } from '@/components/attachment-preview-dialog'; import { RowActions } from '@/components/row-actions'; import { StatusBadge } from '@/components/status-badge'; import type { LetterRequest } from '@/types/letter-request'; @@ -27,6 +28,7 @@ type CreateColumnsParams = { handleEdit: (letterRequest: LetterRequest) => void; handleDeleteClick: (letterRequest: LetterRequest) => void; handleStatusChange: (letterRequest: LetterRequest, status: string) => void; + handleUploadClick: (letterRequest: LetterRequest) => void; canUpdate: boolean; canDelete: boolean; canProcess: boolean; @@ -39,6 +41,7 @@ export function createLetterRequestColumns( handleEdit, handleDeleteClick, handleStatusChange, + handleUploadClick, canUpdate, canDelete, canProcess, @@ -128,26 +131,21 @@ export function createLetterRequestColumns( cell: ({ row }) => { const letterRequest = row.original; - if (!letterRequest.result_url) { + if (!letterRequest.result_url || !letterRequest.result_name) { return -; } return ( - - - {letterRequest.result_name} - + ); }, }, ]; - if (canUpdate || canDelete) { + if (canUpdate || canDelete || canProcess) { columns.push({ id: 'actions', header: () => Aksi, @@ -161,6 +159,14 @@ export function createLetterRequestColumns( return ( , + show: + canProcess && + row.original.status === 'in_process', + onClick: () => handleUploadClick(row.original), + }, { label: 'Edit', icon: , diff --git a/resources/js/pages/admin/services/letter-requests/index.tsx b/resources/js/pages/admin/services/letter-requests/index.tsx index e7a0968..660353b 100644 --- a/resources/js/pages/admin/services/letter-requests/index.tsx +++ b/resources/js/pages/admin/services/letter-requests/index.tsx @@ -115,6 +115,7 @@ export default function LetterRequestIndex({ handleEdit: (letterRequest) => setEditing(letterRequest), handleDeleteClick: (letterRequest) => setDeleting(letterRequest), handleStatusChange, + handleUploadClick: (letterRequest) => setProcessing(letterRequest), canUpdate, canDelete, canProcess,