<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use App\Models\Masjid;
use Illuminate\Http\Request;

class MasjidApiController extends Controller
{
    /**
     * Mengembalikan data lokasi semua masjid dalam format JSON.
     * Digunakan oleh sistem eksternal (rekan) untuk mengambil data koordinat masjid.
     *
     * GET /api/masjid
     * GET /api/masjid?has_coordinates=1  → hanya masjid yang sudah punya koordinat
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function index(Request $request)
    {
        $query = Masjid::select('id_masjid', 'nama_masjid', 'alamat_masjid', 'latitude', 'longitude', 'tahun_aktif');

        // Filter opsional: hanya tampilkan masjid yang sudah memiliki koordinat
        if ($request->boolean('has_coordinates')) {
            $query->whereNotNull('latitude')->whereNotNull('longitude');
        }

        $masjid = $query->orderBy('nama_masjid')->get();

        return response()->json([
            'status'  => 'success',
            'total'   => $masjid->count(),
            'data'    => $masjid,
        ]);
    }

    /**
     * Mengembalikan data satu masjid berdasarkan ID.
     *
     * GET /api/masjid/{id}
     *
     * @param int $id
     * @return \Illuminate\Http\JsonResponse
     */
    public function show($id)
    {
        $masjid = Masjid::select('id_masjid', 'nama_masjid', 'alamat_masjid', 'latitude', 'longitude', 'tahun_aktif')
            ->find($id);

        if (!$masjid) {
            return response()->json([
                'status'  => 'error',
                'message' => 'Masjid tidak ditemukan.',
            ], 404);
        }

        return response()->json([
            'status' => 'success',
            'data'   => $masjid,
        ]);
    }
}
