65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use App\Models\{Region, RegionCategory};
|
|
use App\Http\Resources\{RegionResource, RegionCategoryResource, RegionPlantResource, PlantHarvestResource};
|
|
use App\Filters\Admin\RegionFilter;
|
|
|
|
class RegionController extends Controller
|
|
{
|
|
public function category(Request $request)
|
|
{
|
|
$list = RegionCategory::query()->show()->sort()->get();
|
|
|
|
return $this->json(RegionCategoryResource::collection($list));
|
|
}
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$query = Region::with(['currentPlant', 'monitorModes'])->filter($request->all(), RegionFilter::class)->sort()->show();
|
|
|
|
$list = $query->paginate($request->input('per_page'));
|
|
|
|
return $this->json(RegionResource::collection($list));
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
$info = Region::with(['currentPlant', 'monitorModes', 'category'])->show()->findOrFail($id);
|
|
|
|
return $this->json(RegionResource::make($info));
|
|
}
|
|
|
|
public function plants($id, Request $request)
|
|
{
|
|
$info = Region::show()->findOrFail($id);
|
|
|
|
$query = $info->plants();
|
|
$per = $request->input('per_page');
|
|
if ($per == -1) {
|
|
$list = $query->get();
|
|
} else {
|
|
$list = $query->paginate($per);
|
|
}
|
|
|
|
return $this->json(RegionPlantResource::collection($list));
|
|
}
|
|
|
|
public function harvests($id, Request $request)
|
|
{
|
|
$info = Region::show()->findOrFail($id);
|
|
$query = $info->harvests()->filter($request->all());
|
|
$per = $request->input('per_page');
|
|
if ($per == -1) {
|
|
$list = $query->get();
|
|
} else {
|
|
$list = $query->paginate($per);
|
|
}
|
|
|
|
return $this->json(PlantHarvestResource::collection($list));
|
|
}
|
|
}
|