<?php

namespace App\Http\Controllers;

use App\Models\Wilayah;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class WilayahController extends Controller
{
    /**
     * Tampilkan daftar wilayah RT/RW
     * Aktor: Admin Masjid
     */
    public function index()
    {
        $masjidId = Auth::user()->id_masjid;
        $wilayah = Wilayah::where('id_masjid', $masjidId)
                          ->with(['users', 'dataKKs'])
                          ->get();

        return view('admin.wilayah.index', compact('wilayah'));
    }

    /**
     * Tampilkan form tambah wilayah
     * Aktor: Admin Masjid
     */
    public function create()
    {
        return view('admin.wilayah.create');
    }

    /**
     * Simpan wilayah baru
     * Aktor: Admin Masjid
     */
    public function store(Request $request)
    {
        $request->validate([
            'rt' => 'required|string|max:10',
            'rw' => 'required|string|max:10',
            'nama_wilayah' => 'required|string|max:255',
        ]);

        Wilayah::create([
            'id_masjid' => Auth::user()->id_masjid,
            'rt' => $request->rt,
            'rw' => $request->rw,
            'nama_wilayah' => $request->nama_wilayah,
        ]);

        return redirect('/admin/wilayah')->with('success', 'Data wilayah berhasil ditambahkan.');
    }

    /**
     * Tampilkan form edit wilayah
     * Aktor: Admin Masjid
     */
    public function edit($id)
    {
        $wilayah = Wilayah::where('id_masjid', Auth::user()->id_masjid)->findOrFail($id);
        return view('admin.wilayah.edit', compact('wilayah'));
    }

    /**
     * Update wilayah
     * Aktor: Admin Masjid
     */
    public function update(Request $request, $id)
    {
        $request->validate([
            'rt' => 'required|string|max:10',
            'rw' => 'required|string|max:10',
            'nama_wilayah' => 'required|string|max:255',
        ]);

        $wilayah = Wilayah::where('id_masjid', Auth::user()->id_masjid)->findOrFail($id);
        $wilayah->update([
            'rt' => $request->rt,
            'rw' => $request->rw,
            'nama_wilayah' => $request->nama_wilayah,
        ]);

        return redirect('/admin/wilayah')->with('success', 'Data wilayah berhasil diperbarui.');
    }

    /**
     * Hapus wilayah
     * Aktor: Admin Masjid
     */
    public function destroy($id)
    {
        $wilayah = Wilayah::where('id_masjid', Auth::user()->id_masjid)->findOrFail($id);
        $wilayah->delete();

        return redirect('/admin/wilayah')->with('success', 'Data wilayah berhasil dihapus.');
    }
}
