only(['search', 'tab', 'sub_section_id']); $data = $this->listPagesAction->run($filters); return Inertia::render('Dashboard/Pages/Index', $data); } /** * Показывает форму создания страницы */ public function create(): \Inertia\Response { $data = $this->listPagesAction->run([]); return Inertia::render('Dashboard/Pages/Create', [ 'subSections' => $data['subSections'], ]); } /** * Создает новую страницу */ public function store(StorePageRequest $request): RedirectResponse { try { $validated = $request->validated(); $this->createPageAction->run($validated); return redirect()->route('dashboard.pages.index') ->with('success', 'Страница успешно создана!'); } catch (\Exception $e) { return back() ->withInput() ->with('error', 'Ошибка при создании страницы: ' . $e->getMessage()); } } /** * Показывает форму редактирования страницы */ public function edit(Page $page): \Inertia\Response { $page->load(['section.mainSection']); $data = $this->listPagesAction->run([]); return Inertia::render('Dashboard/Pages/Edit', [ 'page' => $page, 'subSections' => $data['subSections'], ]); } /** * Обновляет существующую страницу */ public function update(UpdatePageRequest $request, Page $page): RedirectResponse { try { $validated = $request->validated(); $this->updatePageAction->run($page, $validated); return redirect()->route('dashboard.pages.edit', $page) ->with('success', 'Страница успешно обновлена!'); } catch (\Exception $e) { return back() ->withInput() ->with('error', 'Ошибка при обновлении страницы: ' . $e->getMessage()); } } /** * Удаляет страницу */ public function destroy(Page $page): RedirectResponse { try { $this->deletePageAction->run($page); return redirect()->route('dashboard.pages.index') ->with('success', 'Страница успешно удалена!'); } catch (\Exception $e) { return back() ->with('error', 'Ошибка при удалении страницы: ' . $e->getMessage()); } } /** * Загружает файлы для ContentBuilder и возвращает метаданные */ public function uploadFiles(Request $request): JsonResponse { $request->validate([ 'files' => 'required|array', 'files.*' => 'required|file|mimes:pdf,docx,xlsx,pptx,zip,doc,xls,ppt|max:524288', ]); try { $results = $this->uploadContentBuilderFilesAction->run($request->file('files')); return response()->json([ 'success' => true, 'files' => $results, ]); } catch (\Exception $e) { return response()->json([ 'success' => false, 'error' => 'Ошибка при загрузке файлов: ' . $e->getMessage(), ], 500); } } }