getCurrentUser(); if (!$user || !$user->hasPermission($permission)) { $this->addFlash('error', 'Você não tem permissão para acessar esta área.'); $this->redirect('admin/dashboard')->send(); exit; } } /** * List all categories. */ public function index(Request $request) { $this->checkPermission('fluxocaixapro.view'); $categories = Category::orderBy('name')->get(); return $this->renderAdminView('@fluxocaixapro/admin/categories/index.twig', [ 'title' => 'Categorias de Fluxo de Caixa', 'categories' => $categories ]); } /** * Store a new category. */ public function store(Request $request) { $this->checkPermission('fluxocaixapro.manage'); $data = $request->request->all(); Category::create([ 'name' => $data['name'], 'type' => $data['type'], 'color' => $data['color'] ?? '#6c757d', 'icon' => $data['icon'] ?? 'bi bi-tag', 'is_active' => true ]); $this->addFlash('success', 'Categoria criada com sucesso!'); return $this->redirect('/admin/fluxo-caixa/categories'); } /** * Update an existing category. */ public function update(Request $request, $id) { $this->checkPermission('fluxocaixapro.manage'); $category = Category::findOrFail($id); $data = $request->request->all(); $category->update([ 'name' => $data['name'], 'type' => $data['type'], 'color' => $data['color'], 'icon' => $data['icon'] ]); $this->addFlash('success', 'Categoria atualizada com sucesso!'); return $this->redirect('/admin/fluxo-caixa/categories'); } /** * Toggle category status. */ public function delete(Request $request, $id) { $this->checkPermission('fluxocaixapro.manage'); $category = Category::findOrFail($id); $category->is_active = !$category->is_active; $category->save(); $status = $category->is_active ? 'ativada' : 'desativada'; $this->addFlash('success', "Categoria {$status} com sucesso!"); return $this->redirect('/admin/fluxo-caixa/categories'); } }