<?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());
    }
}