globalscope wilayah

This commit is contained in:
2026-05-06 09:06:37 +07:00
parent 3c6680c71c
commit 54f06af30b
5 changed files with 94 additions and 1 deletions
+23
View File
@@ -8,6 +8,7 @@ use App\Models\Wilayah\Kecamatan;
use App\Models\Pertanian\Lahan; use App\Models\Pertanian\Lahan;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
class DesaKelurahan extends Model class DesaKelurahan extends Model
{ {
@@ -29,4 +30,26 @@ class DesaKelurahan extends Model
{ {
return $this->hasMany(Lahan::class, 'desa_kelurahan_id'); return $this->hasMany(Lahan::class, 'desa_kelurahan_id');
} }
protected static function booted()
{
static::addGlobalScope('program', function (Builder $builder) {
if (!app()->has('SystemProgram')) {
return;
}
$programId = app('SystemProgram')->id;
$builder->where(function ($query) use ($programId) {
$query->whereIn('id', function ($q) use ($programId) {
$q->select('desa_kelurahan_id')
->from('core_program_lokasi')
->where('program_id', $programId)
->whereNotNull('desa_kelurahan_id');
});
});
});
}
} }
+23
View File
@@ -8,6 +8,7 @@ use App\Models\Wilayah\Provinsi;
use App\Models\Wilayah\Kecamatan; use App\Models\Wilayah\Kecamatan;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
class KabupatenKota extends Model class KabupatenKota extends Model
{ {
@@ -31,4 +32,26 @@ class KabupatenKota extends Model
{ {
return $this->hasMany(Kecamatan::class, 'kabupaten_kota_id'); return $this->hasMany(Kecamatan::class, 'kabupaten_kota_id');
} }
protected static function booted()
{
static::addGlobalScope('program', function (Builder $builder) {
if (!app()->has('SystemProgram')) {
return;
}
$programId = app('SystemProgram')->id;
$builder->where(function ($query) use ($programId) {
$query->whereIn('id', function ($q) use ($programId) {
$q->select('kabupaten_kota_id')
->from('core_program_lokasi')
->where('program_id', $programId)
->whereNotNull('kabupaten_kota_id');
});
});
});
}
} }
+23
View File
@@ -8,6 +8,7 @@ use App\Models\Wilayah\KabupatenKota;
use App\Models\Wilayah\DesaKelurahan; use App\Models\Wilayah\DesaKelurahan;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
class Kecamatan extends Model class Kecamatan extends Model
{ {
@@ -30,4 +31,26 @@ class Kecamatan extends Model
{ {
return $this->hasMany(DesaKelurahan::class, 'kecamatan_id'); return $this->hasMany(DesaKelurahan::class, 'kecamatan_id');
} }
protected static function booted()
{
static::addGlobalScope('program', function (Builder $builder) {
if (!app()->has('SystemProgram')) {
return;
}
$programId = app('SystemProgram')->id;
$builder->where(function ($query) use ($programId) {
$query->whereIn('id', function ($q) use ($programId) {
$q->select('kecamatan_id')
->from('core_program_lokasi')
->where('program_id', $programId)
->whereNotNull('kecamatan_id');
});
});
});
}
} }
+24
View File
@@ -7,6 +7,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Wilayah\KabupatenKota; use App\Models\Wilayah\KabupatenKota;
use App\Models\Wilayah\DesaKelurahan; use App\Models\Wilayah\DesaKelurahan;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Builder;
class Provinsi extends Model class Provinsi extends Model
{ {
@@ -28,4 +29,27 @@ class Provinsi extends Model
{ {
return $this->hasMany(KabupatenKota::class, 'provinsi_id'); return $this->hasMany(KabupatenKota::class, 'provinsi_id');
} }
protected static function booted()
{
static::addGlobalScope('program', function (Builder $builder) {
if (!app()->has('SystemProgram')) {
return;
}
$programId = app('SystemProgram')->id;
$builder->where(function ($query) use ($programId) {
$query->whereIn('id', function ($q) use ($programId) {
$q->select('provinsi_id')
->from('core_program_lokasi')
->where('program_id', $programId)
->whereNotNull('provinsi_id');
});
});
});
}
} }
@@ -114,7 +114,7 @@
<td><span class="text-heading">{{ $p->nama }}</span></td> <td><span class="text-heading">{{ $p->nama }}</span></td>
<td><span class="text-muted">{{ $p->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }}</span></td> <td><span class="text-muted">{{ $p->jenis_kelamin ? 'Laki-laki' : 'Perempuan' }}</span></td>
<td><span class="text-muted">{{ $p->umur }} tahun</span></td> <td><span class="text-muted">{{ $p->umur }} tahun</span></td>
<td><span class="text-muted">{{ $p->desaKelurahan->nama }}, {{ $p->desaKelurahan->kecamatan->nama }}, {{ $p->desaKelurahan->kecamatan->kabupatenKota->nama }}, {{ $p->desaKelurahan->kecamatan->kabupatenKota->provinsi->nama }}</span></td> <td><span class="text-muted">{{ $p->desaKelurahan?->nama }}, {{ $p->desaKelurahan?->kecamatan?->nama }}, {{ $p->desaKelurahan?->kecamatan?->kabupatenKota?->nama }}, {{ $p->desaKelurahan?->kecamatan?->kabupatenKota?->provinsi?->nama }}</span></td>
<td> <td>
<div class="d-flex align-items-center"> <div class="d-flex align-items-center">
<a href="{{ route('petani-cpm.edit', $p->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record"><i class="ti tabler-edit ti-md"></i></a> <a href="{{ route('petani-cpm.edit', $p->id) }}" class="btn btn-icon btn-text-secondary rounded-pill edit-record"><i class="ti tabler-edit ti-md"></i></a>