Zaed_Abdullah/irrigation-report-api/app/Http/Controllers/Map/DaerahIrigasiController.php
2024-12-31 11:48:55 +07:00

57 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Map;
use App\Http\Controllers\Controller;
use App\Http\Resources\Map\DaerahIrigasiResource;
use App\Models\Map\DaerahIrigasi;
use App\Services\Map\DaerahIrigasiFilter;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Spatie\QueryBuilder\QueryBuilder;
class DaerahIrigasiController extends Controller
{
public function index(Request $request)
{
$daerahIrigasiFilter = new DaerahIrigasiFilter();
$queryItems = $daerahIrigasiFilter->transform($request);
$query = QueryBuilder::for(DaerahIrigasi::class)
->allowedSorts([
'sub_district_id',
'name_di',
'status',
'area_ha',
'information',
'created_at',
'updated_at',
]);
foreach ($queryItems as $filter) {
$query->where($filter[0], $filter[1], $filter[2]);
}
$daerahIrigasi = $query->get();
$daerahIrigasi->transform(function ($item) {
$geojson =
DB::selectOne('SELECT *, ST_AsGeoJSON(ST_Transform(geom, 4326)) as geojson FROM map.irrigations_area WHERE id = ?', [$item->id])->geojson;
$item->geojson = $geojson;
return $item;
});
return DaerahIrigasiResource::collection($daerahIrigasi);
}
public function show($id)
{
$item = DaerahIrigasi::findOrFail($id);
$geojson = DB::selectOne('SELECT ST_AsGeoJSON(ST_Transform(geom, 4326)) as geojson FROM map.irrigations_area WHERE id = ?', [$item->id])->geojson;
$item->geojson = $geojson;
return new DaerahIrigasiResource($item);
}
}