Files
innovatieplatform/app/Http/Controllers/CommitmentController.php
znetsixe f0aca26642 Sprint 2: Live data, CRUD modals, commitments, document upload
Frontend:
- Connect MetroMap to live Inertia props (replace hardcoded demo data)
- Drill-down navigation via router.visit for project-level maps
- Reactive breadcrumb based on map level
- Empty state when no projects exist
- Reusable Modal component with retro styling
- ProjectForm and CommitmentForm with Inertia useForm
- FormInput reusable component (text, date, textarea, select)
- FloatingActions FAB button for creating projects/themes

Backend:
- CommitmentService + CommitmentController (CRUD, mark complete, overdue)
- DocumentService + DocumentController (upload, download, delete)
- MapController now passes users and speerpunten to frontend
- 7 new routes (4 commitment, 3 document)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 16:02:38 +02:00

62 lines
1.8 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Commitment;
use App\Services\CommitmentService;
use Illuminate\Http\Request;
class CommitmentController extends Controller
{
public function __construct(
private CommitmentService $commitmentService
) {}
public function store(Request $request)
{
$validated = $request->validate([
'beschrijving' => 'required|string',
'eigenaar_id' => 'required|exists:users,id',
'deadline' => 'required|date',
'project_id' => 'required|exists:projects,id',
'prioriteit' => 'nullable|string',
'bron' => 'nullable|string',
'besluit_id' => 'nullable|exists:besluiten,id',
]);
$this->commitmentService->create($validated);
return back()->with('success', 'Commitment aangemaakt.');
}
public function update(Request $request, Commitment $commitment)
{
$validated = $request->validate([
'beschrijving' => 'sometimes|required|string',
'eigenaar_id' => 'sometimes|required|exists:users,id',
'deadline' => 'sometimes|required|date',
'prioriteit' => 'nullable|string',
'bron' => 'nullable|string',
'status' => 'nullable|string',
]);
$this->commitmentService->update($commitment, $validated);
return back()->with('success', 'Commitment bijgewerkt.');
}
public function complete(Commitment $commitment)
{
$this->commitmentService->markComplete($commitment);
return back()->with('success', 'Commitment afgerond.');
}
public function destroy(Commitment $commitment)
{
$commitment->delete();
return back()->with('success', 'Commitment verwijderd.');
}
}