forked from admin/services_core
107 lines
3.2 KiB
PHP
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'
|
|
);
|
|
}
|
|
}
|