<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Pembayaran;
use Illuminate\Support\Facades\Storage;

class PembayaranController extends Controller
{
    // ✅ GET: /api/pembayaran
    public function index(Request $request)
    {
        $santriId = $request->user()->id;

        $pembayaran = Pembayaran::where('santri_id', $santriId)
            ->with('santri')
            ->latest('tanggal')
            ->get()
            ->map(function ($item) {
                return [
                    'id' => $item->id,
                    'santri_id' => $item->santri_id,
                    'kelas_id' => $item->kelas_id,
                    'tanggal' => $item->tanggal,
                    'jumlah' => $item->jumlah,
                    'jenis_pembayaran' => $item->jenis_pembayaran,
                    'keterangan' => $item->keterangan,
                    'bukti_pembayaran' => $item->bukti_pembayaran ? asset('storage/' . $item->bukti_pembayaran) : null,
                    'status' => $item->status,
                    'created_at' => $item->created_at,
                    'updated_at' => $item->updated_at,
                    'santri_name' => $item->santri->name ?? null,
                ];
            });

        return response()->json($pembayaran);
    }

    // ✅ POST: /api/pembayaran
    public function store(Request $request)
    {
        $request->validate([
            'tanggal' => 'required|date',
            'jenis_pembayaran' => 'required|string',
            'jumlah' => 'required|numeric',
            'keterangan' => 'nullable|string',
            'bukti_pembayaran' => 'required|image|mimes:jpg,jpeg,png|max:2048',
        ]);

        $pembayaran = new Pembayaran();
        $pembayaran->santri_id = $request->user()->id;

        // Ambil kelas_id dari relasi user → santri → kelas
        $pembayaran->kelas_id = $request->user()->santri->kelas_id ?? null;

        $pembayaran->tanggal = $request->tanggal;
        $pembayaran->jenis_pembayaran = $request->jenis_pembayaran;
        $pembayaran->jumlah = $request->jumlah;
        $pembayaran->keterangan = $request->keterangan;
        $pembayaran->status = 'menunggu';

        if ($request->hasFile('bukti_pembayaran')) {
            $file = $request->file('bukti_pembayaran');
            $path = $file->store('bukti_pembayaran', 'public');
            $pembayaran->bukti_pembayaran = $path;
        }

        $pembayaran->save();

        return response()->json([
            'success' => true,
            'message' => 'Pembayaran berhasil dikirim',
            'data' => $pembayaran
        ], 201);
    }
}
