MIF_31230115/manajemen_mp/app/Http/Controllers/MemberDashboardController.php

78 lines
3.0 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Anggota;
use App\Models\Jadwal;
use App\Models\Kas;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class MemberDashboardController extends Controller
{
// public function index()
// {
// // 1. Ambil data profil anggota yang sedang login
// $user = Auth::user();
// $anggota = Anggota::where('user_id', $user->id)->first();
// if (!$anggota) {
// return redirect('/')->with('error', 'Data anggota tidak ditemukan.');
// }
// // 2. Ambil Jadwal Latihan (Hanya yang sesuai dengan Kolat si anggota)
// $jadwal = Jadwal::where('kolat_id', $anggota->kolat_id)
// ->where('tanggal', '>=', now())
// ->orderBy('tanggal', 'asc')
// ->take(5)
// ->get();
// // 3. Ambil Tagihan SPP (Contoh: mencari data di tabel kas yang belum lunas)
// // Asumsi Anda punya kolom 'anggota_id' dan 'status' di tabel Kas/SPP
// $tagihan_spp = Kas::where('no_induk', $anggota->no_induk)
// ->where('status', 'Pending')
// ->get();
// // 4. Hitung Ringkasan (Contoh: Total kehadiran)
// // Ini hanya dummy, silakan sesuaikan dengan tabel absensi Anda
// $persentase_hadir = 85;
// return view('anggota.dashboard', compact('anggota', 'jadwal', 'tagihan_spp', 'persentase_hadir'));
// }
public function index()
{
// 1. Ambil data profil anggota yang sedang login
$user = Auth::user();
$anggota = Anggota::where('user_id', $user->id)->first();
if (!$anggota) {
return redirect('/')->with('error', 'Data anggota tidak ditemukan.');
}
// 2. Ambil Jadwal Latihan (Hanya yang sesuai dengan Kolat si anggota)
$jadwal = Jadwal::where('kolat_id', $anggota->kolat_id)
->where('tanggal', '>=', now())
->orderBy('tanggal', 'asc')
->take(5)
->get();
// 3. Ambil Tagihan SPP
// PERBAIKAN: Menggunakan relasi spp() yang sudah Anda buat di model Anggota.
// Asumsi di tabel SPP Anda terdapat kolom 'status' (misal: 'Pending' atau 'Belum Lunas')
$tagihan_spp = $anggota->spp()->where('status', 'Pending')->get();
// 4. Hitung Ringkasan Kehadiran
// Contoh mengambil total kehadiran dari relasi riwayatPresensi()
// Ini asumsikan Anda memiliki kolom 'status_hadir' (misal: 'Hadir') di tabel Presensi
$total_latihan = $anggota->riwayatPresensi()->count();
$total_hadir = $anggota->riwayatPresensi()->where('status', 'Hadir')->count();
$persentase_hadir = 0;
if ($total_latihan > 0) {
$persentase_hadir = round(($total_hadir / $total_latihan) * 100);
}
return view('anggota.dashboard', compact('anggota', 'jadwal', 'tagihan_spp', 'persentase_hadir'));
}
}