projectbased/updates/baseline/app/Controllers/DashboardController.php

SHA-256: e4e975b5b479bce65b686604303f29f746f7bffb7b006a63a5591a67b6867f19
<?php
namespace App\Controllers;

use App\App;
use App\Lib\View;
use App\Lib\Url;
use App\Lib\Auth;

final class DashboardController {
    public function index(): void {
        $user = Auth::requireLogin();
        $db = App::db();

        $skills = $db->prepare('SELECT s.name FROM user_skills us JOIN skills s ON s.id=us.skill_id WHERE us.user_id=? ORDER BY s.name');
        $skills->execute([(int)$user['id']]);
        $skills = $skills->fetchAll();

        $projects = $db->query('SELECT p.id,p.title,p.category,p.region,p.status,p.created_at,u.display_name AS owner_name
                               FROM projects p JOIN users u ON u.id=p.owner_id
                               ORDER BY p.created_at DESC LIMIT 8')->fetchAll();

        $needs = $db->query('SELECT n.id,n.title,n.category,n.region,n.priority,n.created_at,u.display_name AS author
                            FROM needs n JOIN users u ON u.id=n.user_id
                            ORDER BY n.created_at DESC LIMIT 8')->fetchAll();

        View::render('dashboard', compact('user','skills','projects','needs'));
    }
}