<?php

namespace App\Http\Controllers;

use App\Models\Mahasiswa;
use App\Models\Angsuran;
use App\Models\AngsuranDetail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class LogAktivitasController extends Controller
{
    public function index(Request $request)
    {
        $query = Mahasiswa::with(['kampus', 'prodi'])
            ->where('validasi_status', 'valid');

        // Filter
        if ($request->kampus_id) {
            $query->where('kampus_id', $request->kampus_id);
        }
        if ($request->prodi_id) {
            $query->where('prodi_id', $request->prodi_id);
        }
        if ($request->tahun_ajaran) {
            $query->where('tahun_ajaran', $request->tahun_ajaran);
        }
        if ($request->tanggal_awal) {
            $query->whereDate('created_at', '>=', $request->tanggal_awal);
        }
        if ($request->tanggal_akhir) {
            $query->whereDate('created_at', '<=', $request->tanggal_akhir);
        }

        $mahasiswas = $query->orderBy('created_at', 'desc')->paginate(20);

        // Data untuk filter
        $kampusList = \App\Models\Kampus::orderBy('nama')->get();
        $tahunAjaranOptions = Mahasiswa::where('validasi_status', 'valid')
            ->select('tahun_ajaran')
            ->distinct()
            ->whereNotNull('tahun_ajaran')
            ->orderBy('tahun_ajaran', 'desc')
            ->pluck('tahun_ajaran');

        $prodiOptions = [];
        if ($request->kampus_id) {
            $prodiOptions = \App\Models\Prodi::where('kampus_id', $request->kampus_id)->orderBy('nama')->get();
        }

        return view('log-aktivitas.index', compact('mahasiswas', 'kampusList', 'prodiOptions', 'tahunAjaranOptions'));
    }

    public function detail($id)
    {
        $mahasiswa = Mahasiswa::with(['kampus', 'prodi'])->findOrFail($id);

        // Ambil SEMUA angsuran detail (termasuk yang belum dibayar)
        $angsuran = Angsuran::where('mahasiswa_id', $id)->first();
        $allAngsuranDetails = [];

        if ($angsuran) {
            // Ambil SEMUA detail, urutkan berdasarkan semester dan tanggal angsuran
            $allAngsuranDetails = AngsuranDetail::where('angsuran_id', $angsuran->id)
                ->orderBy('semester', 'asc')
                ->orderBy('tanggal_angsuran', 'asc')
                ->get();
        }

        return response()->json([
            'success' => true,
            'data' => [
                'mahasiswa' => $mahasiswa,
                'angsuran_detail' => $allAngsuranDetails,
                'total_tagihan' => $angsuran ? $angsuran->total : 0,
                'sisa_tagihan' => $angsuran ? $angsuran->sisa : 0,
            ]
        ]);
    }

}
