28 lines
690 B
PHP
28 lines
690 B
PHP
<?php
|
|
|
|
namespace App\Group\Actions;
|
|
|
|
use App\Group;
|
|
use App\Group\Resources\GroupResource;
|
|
use Illuminate\Database\Eloquent\Collection;
|
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
|
use Lorisleiva\Actions\Concerns\AsAction;
|
|
|
|
class GroupApiIndexAction
|
|
{
|
|
use AsAction;
|
|
|
|
/**
|
|
* @return Collection<int, Group>
|
|
*/
|
|
public function handle(): Collection
|
|
{
|
|
return Group::get();
|
|
}
|
|
|
|
public function asController(?Group $group = null): AnonymousResourceCollection
|
|
{
|
|
return GroupResource::collection($group ? $group->children()->withCount('children')->get() : Group::where('parent_id', null)->withCount('children')->get());
|
|
}
|
|
}
|