getCurrentUser(); if (!$user || !$user->hasPermission('modelo.view')) { return new Response($this->view->render('components/alerts.twig', [ 'type' => 'danger', 'message' => 'Access denied.' ]), 403); } $modelos = Modelo::orderBy('modelos_order', 'asc')->get(); return $this->renderAdminView('@modelo/admin/index.twig', [ 'page_title' => 'Gerenciamento de Modelo', 'modelos' => $modelos ]); } /** * Show create form */ public function create(Request $request): Response { $user = $this->getCurrentUser(); if (!$user || !$user->hasPermission('modelo.manage')) { return new Response('Access denied', 403); } return $this->renderAdminView('@modelo/admin/form.twig', [ 'page_title' => 'Novo Modelo', 'action' => 'create' ]); } /** * Store new Modelo */ public function store(Request $request): Response { $user = $this->getCurrentUser(); if (!$user || !$user->hasPermission('modelo.manage')) { return new Response('Access denied', 403); } $data = $request->request->all(); $modelo = new Modelo(); // Handle potential null bus_id for Super Admins $busId = $user->users_bus_id; if (empty($busId)) { $busId = $_SESSION['current_company_id'] ?? 1; } $modelo->modelos_bus_id = $busId; $modelo->modelos_title = $data['title']; $modelo->modelos_slug = !empty($data['slug']) ? Str::slug($data['slug']) : Str::slug($data['title']); $modelo->modelos_content = $data['content']; $modelo->modelos_order = (int) ($data['order'] ?? 0); $modelo->modelos_active = isset($data['active']); $modelo->modelos_visibility = $data['visibility'] ?? 'public'; $modelo->save(); return new RedirectResponse(url('admin/modelo?success=created')); } /** * Show edit form */ public function edit(Request $request, $id): Response { $user = $this->getCurrentUser(); if (!$user || !$user->hasPermission('modelo.manage')) { return new Response('Access denied', 403); } $modelo = Modelo::find($id); if (!$modelo) { return new Response('Modelo not found', 404); } return $this->renderAdminView('@modelo/admin/form.twig', [ 'page_title' => 'Editar Modelo', 'modelo' => $modelo, 'action' => 'edit' ]); } /** * Update Modelo */ public function update(Request $request, $id): Response { $user = $this->getCurrentUser(); if (!$user || !$user->hasPermission('modelo.manage')) { return new Response('Access denied', 403); } $modelo = Modelo::find($id); if (!$modelo) { return new Response('Modelo not found', 404); } $data = $request->request->all(); $modelo->modelos_title = $data['title']; $modelo->modelos_slug = !empty($data['slug']) ? Str::slug($data['slug']) : Str::slug($data['title']); $modelo->modelos_content = $data['content']; $modelo->modelos_order = (int) ($data['order'] ?? 0); $modelo->modelos_active = isset($data['active']); $modelo->modelos_visibility = $data['visibility'] ?? 'public'; $modelo->save(); return new RedirectResponse(url('admin/modelo?success=updated')); } /** * Delete Modelo */ public function delete(Request $request, $id): Response { $user = $this->getCurrentUser(); if (!$user || !$user->hasPermission('modelo.manage')) { return new Response('Access denied', 403); } $modelo = Modelo::find($id); if ($modelo) { $modelo->delete(); } return new RedirectResponse(url('admin/modelo?success=deleted')); } /** * User Manual */ public function manual(Request $request): Response { return $this->renderAdminView('@modelo/admin/manual.twig', [ 'title' => 'Manual do Usuário - Módulo Modelo' ]); } }