<?php

declare(strict_types=1);

namespace {{ tree.getFullNameSpaceOfFile(file, entity, action) }};

use App\Base\AbstractController;
use App\Base\AbstractResponse;
use App\Base\ReadManyRequest;
{% for dependency in dependencyzz %}
use {{ dependency }};{% endfor %}
use Illuminate\Http\JsonResponse;
use Illuminate\Support\Facades\DB;

class {{ helper.getClassName(file, entity, action) }} extends AbstractController
{
    public function __invoke(ReadManyRequest $Request, {{ action + entity.name }} $DeleteMany): JsonResponse
    {
        /** @var \App\Models\User $User */
        $User = auth()->user();

        $this->acquireLock($User->Id);

        try {

            $Result = $DeleteMany->run($User->Id, $Request->getValidatedIdzz());

            return AbstractResponse::sendOK($Result);

        } catch (\Throwable $Throwable) {

            DB::rollBack();

            throw $Throwable;

        } finally {
            $this->releaseLock();
        }

    }
}
