navigationService = $navigationService; } /** * Store a new page. * * @param array $data Data to create the page. * @return Page The created page. */ public function store(array $data): Page { return DB::transaction(function () use ($data) { $renderer = new PageRenderer(); $data['cached_html'] = $renderer->render($data['content']); $data['user_id'] = auth()->id(); $page = Page::create(collect($data)->except('include_in_navigation')->toArray()); if (isset($data['include_in_navigation']) && $data['include_in_navigation']) { $this->navigationService->syncPageNavigation($page, true); } return $page; }); } /** * Update an existing page. * * @param Page $page The page to update. * @param array $data Data to update the page. * @return bool True if successful. */ public function update(Page $page, array $data): bool { return DB::transaction(function () use ($page, $data) { $renderer = new PageRenderer(); $data['cached_html'] = $renderer->render($data['content']); $success = $page->update(collect($data)->except('include_in_navigation')->toArray()); if (isset($data['include_in_navigation'])) { $this->navigationService->syncPageNavigation($page, (bool)$data['include_in_navigation']); } return $success; }); } /** * Delete a page. * * @param Page $page The page to delete. * @return bool True if successful. */ public function delete(Page $page): bool { return $page->delete(); } }