Files
ntspi-app/app/Containers/Dashboard/Actions/Pages/AttachPageToSubSectionAction.php
2026-04-07 17:54:26 +05:00

25 lines
678 B
PHP

<?php
namespace App\Containers\Dashboard\Actions\Pages;
use App\Containers\AppStructure\Models\Page;
use App\Containers\AppStructure\Models\SubSection;
class AttachPageToSubSectionAction
{
public function run(Page $page, SubSection $subSection): Page
{
// Pessimistic lock to prevent race conditions
$page = Page::lockForUpdate()->findOrFail($page->id);
if ($page->sub_section_id !== null) {
throw new \InvalidArgumentException('Страница уже принадлежит другому подразделу');
}
$page->section()->associate($subSection);
$page->save();
return $page;
}
}