diff --git a/app/Http/Controllers/Sales/BusinessCardRequestController.php b/app/Http/Controllers/Sales/BusinessCardRequestController.php
index 637977d3..f359268d 100644
--- a/app/Http/Controllers/Sales/BusinessCardRequestController.php
+++ b/app/Http/Controllers/Sales/BusinessCardRequestController.php
@@ -124,4 +124,26 @@ public function process(Request $request, int $id)
return redirect()->route('sales.business-cards.manage')
->with('success', '처리가 완료되었습니다.');
}
+
+ /**
+ * 처리완료 건 삭제 (관리자 전용)
+ */
+ public function destroy(Request $request, int $id)
+ {
+ if (! auth()->user()->isAdmin()) {
+ abort(403, '관리자만 삭제할 수 있습니다.');
+ }
+
+ $this->service->delete($id);
+
+ if ($request->expectsJson() || $request->header('Accept') === 'application/json') {
+ return response()->json([
+ 'success' => true,
+ 'message' => '삭제되었습니다.',
+ ]);
+ }
+
+ return redirect()->route('sales.business-cards.manage')
+ ->with('success', '삭제되었습니다.');
+ }
}
diff --git a/app/Services/Sales/BusinessCardRequestService.php b/app/Services/Sales/BusinessCardRequestService.php
index 91765881..c2fff899 100644
--- a/app/Services/Sales/BusinessCardRequestService.php
+++ b/app/Services/Sales/BusinessCardRequestService.php
@@ -119,6 +119,21 @@ public function process(int $id, ?string $memo = null): BusinessCardRequest
return $request;
}
+ /**
+ * 처리완료 건 삭제
+ */
+ public function delete(int $id): void
+ {
+ $tenantId = session('selected_tenant_id', 1);
+ $request = BusinessCardRequest::ofTenant($tenantId)->findOrFail($id);
+
+ if ($request->status !== BusinessCardRequest::STATUS_PROCESSED) {
+ abort(422, '처리완료 상태만 삭제할 수 있습니다.');
+ }
+
+ $request->delete();
+ }
+
private function buildQuery(string $status, ?string $search)
{
$tenantId = session('selected_tenant_id', 1);
diff --git a/resources/views/sales/business-cards/admin-index.blade.php b/resources/views/sales/business-cards/admin-index.blade.php
index 9450b4f7..81a10da1 100644
--- a/resources/views/sales/business-cards/admin-index.blade.php
+++ b/resources/views/sales/business-cards/admin-index.blade.php
@@ -207,6 +207,7 @@ class="px-3 py-1 bg-emerald-500 hover:bg-emerald-600 text-white text-xs font-med
의뢰일 |
처리일 |
처리자 |
+ |
@@ -231,10 +232,19 @@ class="px-3 py-1 bg-emerald-500 hover:bg-emerald-600 text-white text-xs font-med
{{ $req->processor?->name }}
|
+
+
+ |
@empty
- |
+ |
처리된 명함 신청이 없습니다.
|
@@ -312,5 +322,35 @@ function processRequest(id, name) {
{ title: '처리 완료', icon: 'question', confirmText: '처리완료' }
);
}
+
+function deleteRequest(id, name) {
+ showConfirm(
+ `${name}님의 처리완료된 명함신청을 삭제하시겠습니까?`,
+ () => {
+ fetch(`/sales/business-cards/${id}`, {
+ method: 'DELETE',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN': '{{ csrf_token() }}',
+ 'Accept': 'application/json',
+ }
+ })
+ .then(response => response.json())
+ .then(data => {
+ if (data.success) {
+ showToast(data.message, 'success');
+ window.location.reload();
+ } else {
+ showToast(data.message || '삭제에 실패했습니다.', 'error');
+ }
+ })
+ .catch(error => {
+ showToast('서버 오류가 발생했습니다.', 'error');
+ console.error(error);
+ });
+ },
+ { title: '삭제 확인', icon: 'warning', confirmText: '삭제' }
+ );
+}
@endpush
diff --git a/resources/views/sales/business-cards/partner-index.blade.php b/resources/views/sales/business-cards/partner-index.blade.php
index 4c1779c4..a2e4509e 100644
--- a/resources/views/sales/business-cards/partner-index.blade.php
+++ b/resources/views/sales/business-cards/partner-index.blade.php
@@ -69,10 +69,10 @@ class="w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none foc
-
-
기본 100매
+ placeholder="500">
+
기본 500매
diff --git a/routes/web.php b/routes/web.php
index f8e538d1..20d9f105 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -1298,6 +1298,7 @@
Route::get('business-cards/manage', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'manage'])->name('business-cards.manage');
Route::post('business-cards/{id}/order', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'order'])->name('business-cards.order');
Route::post('business-cards/{id}/process', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'process'])->name('business-cards.process');
+ Route::delete('business-cards/{id}', [\App\Http\Controllers\Sales\BusinessCardRequestController::class, 'destroy'])->name('business-cards.destroy');
// 매니저 검색 (리소스 라우트보다 먼저 정의해야 함!)
Route::get('managers/list', [\App\Http\Controllers\Sales\SalesDashboardController::class, 'getManagers'])->name('managers.list');