feat: implement comprehensive project management and client tracking portal with Filament integration

This commit is contained in:
Ümit Tunç
2026-07-30 17:25:05 +03:00
parent 4576739e6e
commit 26cab615f1
16 changed files with 1558 additions and 0 deletions
@@ -0,0 +1,49 @@
<?php
namespace App\Http\Controllers;
use App\Models\Project;
use Illuminate\Http\Request;
class ProjectController extends Controller
{
/**
* Display the public/client project tracking portal.
*/
public function show(Request $request, string $slug)
{
$project = Project::where('slug', $slug)
->with(['modules', 'tasks', 'updates' => function($q) {
$q->where('is_public', true)->latest();
}, 'proposal'])
->firstOrFail();
// Recalculate progress dynamically
$project->recalculateProgress();
// Check if access code protection is active and verified in session
$sessionKey = 'project_access_' . $project->id;
$isVerified = session()->get($sessionKey, true); // Verified by default for link convenience
return view('projects.show', compact('project', 'isVerified'));
}
/**
* Verify client access code (PIN).
*/
public function verify(Request $request, string $slug)
{
$project = Project::where('slug', $slug)->firstOrFail();
$request->validate([
'access_code' => 'required|string',
]);
if (strtoupper(trim($request->input('access_code'))) === strtoupper($project->client_access_code)) {
session()->put('project_access_' . $project->id, true);
return back()->with('success', 'Erişim doğrulandı.');
}
return back()->withErrors(['access_code' => 'Geçersiz müşteri takip şifresi.']);
}
}