diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 7456e6c..caac14a 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -195,6 +195,33 @@ class ProjectController extends Controller return back()->with('success', 'Yeni ilerleme duyurusu yayınlandı.'); } + /** + * Web Manager Action: Delete Live Progress Update / Announcement + */ + public function deleteUpdate(Request $request, string $slug) + { + $project = Project::where('slug', $slug)->firstOrFail(); + + $request->validate([ + 'update_id' => 'required|exists:project_updates,id', + ]); + + $update = ProjectUpdate::where('id', $request->input('update_id')) + ->where('project_id', $project->id) + ->firstOrFail(); + + $update->delete(); + + if ($request->wantsJson() || $request->ajax()) { + return response()->json([ + 'success' => true, + 'message' => 'Duyuru başarıyla silindi.', + ]); + } + + return back()->with('success', 'Duyuru başarıyla silindi.'); + } + /** * Web Manager Action: Recalculate Progress % */ diff --git a/resources/views/projects/show.blade.php b/resources/views/projects/show.blade.php index 62858dc..fe88503 100644 --- a/resources/views/projects/show.blade.php +++ b/resources/views/projects/show.blade.php @@ -679,9 +679,15 @@ gantt

{{ $update->title }}

- - {{ $update->created_at->format('d.m.Y H:i') }} - +
+ + {{ $update->created_at->format('d.m.Y H:i') }} + + +

@@ -972,6 +978,43 @@ gantt }); } + // AJAX Delete Announcement / Update + function deleteUpdateAjax(updateId, btnEl) { + if (!confirm('Bu duyuruyu silmek istediğinize emin misiniz?')) return; + + fetch('{{ route("projects.admin.delete-update", $project->slug) }}', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'), + 'Accept': 'application/json', + 'X-Requested-With': 'XMLHttpRequest' + }, + body: JSON.stringify({ + update_id: updateId + }) + }) + .then(res => res.json()) + .then(data => { + if (data.success) { + const card = btnEl.closest('.relative.group'); + if (card) { + card.style.transition = 'all 0.3s ease'; + card.style.opacity = '0'; + card.style.transform = 'scale(0.95)'; + setTimeout(() => card.remove(), 300); + } + showToast(data.message, 'success'); + } else { + showToast('Duyuru silinemedi.', 'error'); + } + }) + .catch(err => { + console.error('AJAX Error:', err); + showToast('Bağlantı hatası.', 'error'); + }); + } + // Dynamic UI Updates function updateProgressUI(pct) { const valEl = document.getElementById('progress-percent-val'); diff --git a/routes/web.php b/routes/web.php index 406cef8..a95b53e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -182,6 +182,7 @@ Route::post('/proje-takip/{slug}/admin/task-status', [\App\Http\Controllers\Proj Route::post('/proje-takip/{slug}/admin/add-task', [\App\Http\Controllers\ProjectController::class, 'addTask'])->name('projects.admin.add-task'); Route::post('/proje-takip/{slug}/admin/delete-task', [\App\Http\Controllers\ProjectController::class, 'deleteTask'])->name('projects.admin.delete-task'); Route::post('/proje-takip/{slug}/admin/add-update', [\App\Http\Controllers\ProjectController::class, 'addUpdate'])->name('projects.admin.add-update'); +Route::post('/proje-takip/{slug}/admin/delete-update', [\App\Http\Controllers\ProjectController::class, 'deleteUpdate'])->name('projects.admin.delete-update'); Route::post('/proje-takip/{slug}/admin/recalculate', [\App\Http\Controllers\ProjectController::class, 'recalculate'])->name('projects.admin.recalculate'); Route::post('/proje-takip/{slug}/admin/toggle-mode', [\App\Http\Controllers\ProjectController::class, 'toggleAdminMode'])->name('projects.admin.toggle-mode');