<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

/**
 * Model PengajuanMasjid
 *
 * Merepresentasikan tabel 'pengajuan_masjid'.
 * Ini adalah kelas RELASI (association class) antara User dan Masjid.
 * Satu pengajuan dimiliki oleh satu User, dan bisa terhubung ke satu Masjid.
 */
class PengajuanMasjid extends Model
{
    use HasFactory;

    // Nama tabel di database
    protected $table = 'pengajuan_masjid';

    // Primary key kustom (bukan 'id' bawaan Laravel)
    protected $primaryKey = 'id_pengajuan';

    // Kolom-kolom yang boleh diisi secara massal (mass assignment)
    protected $fillable = [
        'user_id',           // Relasi ke User yang mengajukan
        'masjid_id',         // Relasi ke Masjid yang diajukan (bisa null)
        'tanggal_pengajuan',
        'nama_masjid',
        'alamat_masjid',
        'latitude',
        'longitude',
        'nama_admin_masjid',
        'no_wa_admin',
        'username',
        'email',
        'password',
        'status_pengajuan',  // pending / disetujui / ditolak
    ];

    // Sembunyikan password dari output JSON/serialisasi
    protected $hidden = [
        'password',
    ];

    // ==========================================
    // RELASI ELOQUENT
    // ==========================================

    /**
     * BelongsTo: Setiap pengajuan DIMILIKI OLEH satu User.
     * Parameter: (Model, foreign_key_di_tabel_ini, primary_key_di_tabel_users)
     */
    public function user(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id', 'id_user');
    }

    /**
     * BelongsTo: Setiap pengajuan (opsional) BERKAITAN DENGAN satu Masjid.
     * Relasi ini nullable — masjid baru ada setelah pengajuan disetujui.
     * Parameter: (Model, foreign_key_di_tabel_ini, primary_key_di_tabel_Masjid)
     */
    public function masjid(): \Illuminate\Database\Eloquent\Relations\BelongsTo
    {
        return $this->belongsTo(Masjid::class, 'masjid_id', 'id_masjid');
    }
}
