1
0
Files
services_core/app/Http/Controllers/Wilayah/WilayahController.php
T
2026-07-27 16:24:09 +07:00

107 lines
3.2 KiB
PHP

<?php
namespace App\Http\Controllers\Wilayah;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Wilayah\AlamatLengkapRequest;
use App\Http\Requests\Wilayah\IndexWilayahRequest;
use App\Http\Requests\Wilayah\LookupWilayahRequest;
use App\Http\Requests\Wilayah\StoreWilayahRequest;
use App\Http\Requests\Wilayah\UpdateWilayahRequest;
use App\Http\Resources\Wilayah\WilayahResource;
use App\Models\WilayahKabupaten;
use App\Models\WilayahKecamatan;
use App\Models\WilayahProvinsi;
use App\Services\Wilayah\WilayahService;
class WilayahController extends ApiController
{
public function __construct(protected WilayahService $service) {}
public function index(IndexWilayahRequest $request, string $tingkat)
{
return $this->successPaginated(
$this->service->list($tingkat, $request->validated()),
WilayahResource::class,
"Daftar {$tingkat} berhasil diambil"
);
}
public function store(StoreWilayahRequest $request, string $tingkat)
{
return $this->created(
new WilayahResource($this->service->create($tingkat, $request->validated())),
ucfirst($tingkat).' berhasil dibuat'
);
}
public function show(int $wilayah, string $tingkat)
{
return $this->success(
new WilayahResource($this->service->find($tingkat, $wilayah)),
'Detail wilayah berhasil diambil'
);
}
public function update(UpdateWilayahRequest $request, int $wilayah, string $tingkat)
{
return $this->updated(
new WilayahResource($this->service->update($tingkat, $wilayah, $request->validated())),
ucfirst($tingkat).' berhasil diperbarui'
);
}
public function destroy(int $wilayah, string $tingkat)
{
$this->service->delete($tingkat, $wilayah);
return $this->deleted(ucfirst($tingkat).' berhasil dihapus');
}
public function alamatLengkap(AlamatLengkapRequest $request)
{
return $this->success(
$this->service->alamatLengkap($request->validated()),
'Alamat wilayah lengkap berhasil diambil'
);
}
public function provinsiOptions(LookupWilayahRequest $request)
{
return $this->success(
$this->service->options('provinsi', $request->validated()),
'Pilihan provinsi berhasil diambil'
);
}
public function kabupatenOptions(
LookupWilayahRequest $request,
WilayahProvinsi $provinsi
) {
return $this->success(
$this->service->options('kabupaten', $request->validated(), $provinsi->id),
'Pilihan kabupaten berhasil diambil'
);
}
public function kecamatanOptions(
LookupWilayahRequest $request,
WilayahKabupaten $kabupaten
) {
return $this->success(
$this->service->options('kecamatan', $request->validated(), $kabupaten->id),
'Pilihan kecamatan berhasil diambil'
);
}
public function desaOptions(
LookupWilayahRequest $request,
WilayahKecamatan $kecamatan
) {
return $this->success(
$this->service->options('desa', $request->validated(), $kecamatan->id),
'Pilihan desa berhasil diambil'
);
}
}