diff --git a/app/Http/Controllers/Sales/TenantProspectController.php b/app/Http/Controllers/Sales/TenantProspectController.php index da404229..d44472a8 100644 --- a/app/Http/Controllers/Sales/TenantProspectController.php +++ b/app/Http/Controllers/Sales/TenantProspectController.php @@ -213,4 +213,32 @@ public function checkBusinessNumber(Request $request) return response()->json($result); } + + /** + * 첨부 이미지 삭제 (AJAX) + */ + public function deleteAttachment(Request $request, int $id) + { + $prospect = TenantProspect::findOrFail($id); + + // 이미 전환된 경우 수정 불가 + if ($prospect->isConverted()) { + return response()->json(['success' => false, 'message' => '전환된 영업권은 수정할 수 없습니다.'], 403); + } + + $type = $request->get('type'); + $allowedTypes = ['business_card', 'id_card', 'bankbook']; + + if (!in_array($type, $allowedTypes)) { + return response()->json(['success' => false, 'message' => '잘못된 요청입니다.'], 400); + } + + $result = $this->service->deleteAttachment($prospect, $type); + + if ($result) { + return response()->json(['success' => true, 'message' => '이미지가 삭제되었습니다.']); + } + + return response()->json(['success' => false, 'message' => '삭제할 이미지가 없습니다.'], 404); + } } diff --git a/app/Services/Sales/TenantProspectService.php b/app/Services/Sales/TenantProspectService.php index 504ce932..9ee9e762 100644 --- a/app/Services/Sales/TenantProspectService.php +++ b/app/Services/Sales/TenantProspectService.php @@ -270,12 +270,25 @@ private function uploadBusinessCard(UploadedFile $file, int $userId): string */ public function deleteBusinessCard(TenantProspect $prospect): bool { - if ($prospect->business_card_path && Storage::disk('tenant')->exists($prospect->business_card_path)) { - Storage::disk('tenant')->delete($prospect->business_card_path); - $prospect->update(['business_card_path' => null]); - return true; + return $this->deleteAttachment($prospect, 'business_card'); + } + + /** + * 첨부파일 삭제 + */ + public function deleteAttachment(TenantProspect $prospect, string $type): bool + { + $pathField = $type . '_path'; + + if (!$prospect->$pathField) { + return false; } - return false; + if (Storage::disk('tenant')->exists($prospect->$pathField)) { + Storage::disk('tenant')->delete($prospect->$pathField); + } + + $prospect->update([$pathField => null]); + return true; } } diff --git a/resources/views/sales/prospects/edit.blade.php b/resources/views/sales/prospects/edit.blade.php index 939bae12..42a17f80 100644 --- a/resources/views/sales/prospects/edit.blade.php +++ b/resources/views/sales/prospects/edit.blade.php @@ -76,8 +76,17 @@ class="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none foc
새 이미지를 업로드하면 기존 이미지가 교체됩니다
새 이미지를 업로드하면 기존 이미지가 교체됩니다
새 이미지를 업로드하면 기존 이미지가 교체됩니다