name('index'); Route::get('/sobre', [PageController::class, 'about'])->name('about'); // Note: /produtos route is registered by the Products module when enabled // Note: /servicos route is registered by the Services module when enabled Route::get('/assistentes-digitais-com-ia', [PageController::class, 'assistentesDigitaisIA'])->name('assistentes-digitais-ia'); Route::get('/linux-servers', [PageController::class, 'servidoresLinux'])->name('servidores-linux'); Route::get('/erp', [PageController::class, 'erp'])->name('erp'); Route::get('/fluxo-de-caixa-pro', [PageController::class, 'fluxoDeCaixaPro'])->name('fluxo-de-caixa-pro'); Route::get('/downloads', [PageController::class, 'downloads'])->name('downloads'); Route::get('/downloads/{download}', [PageController::class, 'downloadFile'])->name('downloads.file')->middleware(['auth', 'verified']); Route::get('/galerias/categoria/{slug}', [PageController::class, 'galleryCategory'])->name('gallery.category'); Route::get('/galeria/{slug}', [PageController::class, 'gallery'])->name('gallery.show'); Route::get('/noticias', [PageController::class, 'newsIndex'])->name('news.index'); Route::get('/noticias/{slug}', [PageController::class, 'newsShow'])->name('news.show'); Route::get('/faq', [PageController::class, 'faq'])->name('faq'); Route::get('/contato', [PageController::class, 'contato'])->name('contato'); Route::post('/contato', [PageController::class, 'sendContact']) ->middleware('throttle:5,1') ->name('contato.send'); Route::get('/politica-privacidade', [PageController::class, 'politicaPrivacidade'])->name('politica-privacidade'); // Rotas de Autenticação (Login, Registro, Recuperação, Verificação) Auth::routes(['verify' => true, 'register' => true]); // Dashboard (Protegido) Route::middleware(['auth', 'verified'])->group(function () { Route::get('/home', [HomeController::class, 'index'])->name('home'); Route::post('/home/feature-request', [HomeController::class, 'sendFeatureRequest'])->name('home.feature.request'); // Perfil e Preferências Route::get('/perfil', [ProfileController::class, 'edit'])->name('profile.edit'); Route::put('/perfil', [ProfileController::class, 'update'])->name('profile.update'); Route::get('/preferencias', [ProfileController::class, 'preferences'])->name('profile.preferences'); Route::put('/preferencias', [ProfileController::class, 'updatePreferences'])->name('profile.preferences.update'); }); // Área Administrativa (Apenas Admin) Route::middleware(['auth', 'verified', 'admin'])->prefix('admin')->name('admin.')->group(function () { // Gerenciamento de Usuários (Somente Admin) Route::get('/usuarios', [App\Http\Controllers\Admin\UserController::class, 'index'])->name('users.index'); Route::get('/usuarios/criar', [App\Http\Controllers\Admin\UserController::class, 'create'])->name('users.create'); Route::post('/usuarios', [App\Http\Controllers\Admin\UserController::class, 'store'])->name('users.store'); Route::get('/usuarios/{user}/editar', [App\Http\Controllers\Admin\UserController::class, 'edit'])->name('users.edit'); Route::put('/usuarios/{user}', [App\Http\Controllers\Admin\UserController::class, 'update'])->name('users.update'); Route::delete('/usuarios/{user}', [App\Http\Controllers\Admin\UserController::class, 'destroy'])->name('users.destroy'); // Gerenciamento de Tipos de Usuário (Somente Admin) Route::get('/tipos-de-usuario', [App\Http\Controllers\Admin\UserTypeController::class, 'index'])->name('user-types.index'); Route::get('/tipos-de-usuario/criar', [App\Http\Controllers\Admin\UserTypeController::class, 'create'])->name('user-types.create'); Route::post('/tipos-de-usuario', [App\Http\Controllers\Admin\UserTypeController::class, 'store'])->name('user-types.store'); Route::get('/tipos-de-usuario/{userType}/editar', [App\Http\Controllers\Admin\UserTypeController::class, 'edit'])->name('user-types.edit'); Route::put('/tipos-de-usuario/{userType}', [App\Http\Controllers\Admin\UserTypeController::class, 'update'])->name('user-types.update'); Route::delete('/tipos-de-usuario/{userType}', [App\Http\Controllers\Admin\UserTypeController::class, 'destroy'])->name('user-types.destroy'); }); // Área Administrativa (Admin e User com permissões específicas) Route::middleware(['auth', 'verified'])->prefix('admin')->name('admin.')->group(function () { // Gerenciamento de Contatos (permissão: contacts) Route::middleware('permission:contacts')->group(function () { Route::get('/contatos', [App\Http\Controllers\Admin\ContactController::class, 'index'])->name('contacts.index'); Route::get('/contatos/{contact}', [App\Http\Controllers\Admin\ContactController::class, 'show'])->name('contacts.show'); Route::post('/contatos/{contact}/responder', [App\Http\Controllers\Admin\ContactController::class, 'reply'])->name('contacts.reply'); Route::delete('/contatos/{contact}', [App\Http\Controllers\Admin\ContactController::class, 'destroy'])->name('contacts.destroy'); }); // Gerenciamento de Assuntos (permissão: subjects) Route::middleware('permission:subjects')->group(function () { Route::get('/assuntos', [App\Http\Controllers\Admin\SubjectController::class, 'index'])->name('subjects.index'); Route::get('/assuntos/criar', [App\Http\Controllers\Admin\SubjectController::class, 'create'])->name('subjects.create'); Route::post('/assuntos', [App\Http\Controllers\Admin\SubjectController::class, 'store'])->name('subjects.store'); Route::get('/assuntos/{subject}/editar', [App\Http\Controllers\Admin\SubjectController::class, 'edit'])->name('subjects.edit'); Route::put('/assuntos/{subject}', [App\Http\Controllers\Admin\SubjectController::class, 'update'])->name('subjects.update'); Route::delete('/assuntos/{subject}', [App\Http\Controllers\Admin\SubjectController::class, 'destroy'])->name('subjects.destroy'); }); // Gerenciamento de Páginas (permissão: pages) Route::middleware('permission:pages')->group(function () { Route::get('/paginas', [App\Http\Controllers\Admin\PageController::class, 'index'])->name('pages.index'); Route::get('/paginas/criar', [App\Http\Controllers\Admin\PageController::class, 'create'])->name('pages.create'); Route::post('/paginas', [App\Http\Controllers\Admin\PageController::class, 'store'])->name('pages.store'); Route::get('/paginas/{page}/editar', [App\Http\Controllers\Admin\PageController::class, 'edit'])->name('pages.edit'); Route::put('/paginas/{page}', [App\Http\Controllers\Admin\PageController::class, 'update'])->name('pages.update'); Route::delete('/paginas/{page}', [App\Http\Controllers\Admin\PageController::class, 'destroy'])->name('pages.destroy'); }); // Gerenciamento de FAQ (permissão: faqs) Route::middleware('permission:faqs')->group(function () { Route::get('/faq', [App\Http\Controllers\Admin\FaqController::class, 'index'])->name('faqs.index'); Route::get('/faq/criar', [App\Http\Controllers\Admin\FaqController::class, 'create'])->name('faqs.create'); Route::post('/faq', [App\Http\Controllers\Admin\FaqController::class, 'store'])->name('faqs.store'); Route::get('/faq/{faq}/editar', [App\Http\Controllers\Admin\FaqController::class, 'edit'])->name('faqs.edit'); Route::put('/faq/{faq}', [App\Http\Controllers\Admin\FaqController::class, 'update'])->name('faqs.update'); Route::delete('/faq/{faq}', [App\Http\Controllers\Admin\FaqController::class, 'destroy'])->name('faqs.destroy'); }); // Note: Products routes are registered by the Products module when enabled // Note: Services routes are registered by the Services module when enabled // Gerenciamento de Notícias (permissão: news) Route::middleware('permission:news')->group(function () { Route::get('/noticias', [App\Http\Controllers\Admin\NewsController::class, 'index'])->name('news.index'); Route::post('/noticias/toggle-visibilidade', [App\Http\Controllers\Admin\NewsController::class, 'toggleVisibility'])->name('news.toggle'); Route::get('/noticias/criar', [App\Http\Controllers\Admin\NewsController::class, 'create'])->name('news.create'); Route::post('/noticias', [App\Http\Controllers\Admin\NewsController::class, 'store'])->name('news.store'); Route::get('/noticias/{news}/editar', [App\Http\Controllers\Admin\NewsController::class, 'edit'])->name('news.edit'); Route::put('/noticias/{news}', [App\Http\Controllers\Admin\NewsController::class, 'update'])->name('news.update'); Route::delete('/noticias/{news}', [App\Http\Controllers\Admin\NewsController::class, 'destroy'])->name('news.destroy'); Route::delete('/noticias/{news}/imagem-principal', [App\Http\Controllers\Admin\NewsController::class, 'removeFeaturedImage'])->name('news.remove-featured'); Route::post('/noticias/{news}/imagem', [App\Http\Controllers\Admin\NewsController::class, 'uploadImage'])->name('news.upload'); Route::put('/noticias/imagem/{image}', [App\Http\Controllers\Admin\NewsController::class, 'updateImage'])->name('news.image.update'); Route::delete('/noticias/imagem/{image}', [App\Http\Controllers\Admin\NewsController::class, 'deleteImage'])->name('news.image.delete'); }); // Gerenciamento de Downloads (permissão: downloads) Route::middleware('permission:downloads')->group(function () { Route::get('/downloads', [App\Http\Controllers\Admin\DownloadController::class, 'index'])->name('downloads.index'); Route::get('/downloads/criar', [App\Http\Controllers\Admin\DownloadController::class, 'create'])->name('downloads.create'); Route::post('/downloads', [App\Http\Controllers\Admin\DownloadController::class, 'store'])->name('downloads.store'); Route::get('/downloads/{download}/editar', [App\Http\Controllers\Admin\DownloadController::class, 'edit'])->name('downloads.edit'); Route::put('/downloads/{download}', [App\Http\Controllers\Admin\DownloadController::class, 'update'])->name('downloads.update'); Route::delete('/downloads/{download}', [App\Http\Controllers\Admin\DownloadController::class, 'destroy'])->name('downloads.destroy'); }); // Gerenciamento de Galerias (permissão: galleries) Route::middleware('permission:galleries')->group(function () { Route::get('/galerias', [App\Http\Controllers\Admin\GalleryController::class, 'index'])->name('galleries.index'); Route::get('/galerias/criar', [App\Http\Controllers\Admin\GalleryController::class, 'create'])->name('galleries.create'); Route::post('/galerias', [App\Http\Controllers\Admin\GalleryController::class, 'store'])->name('galleries.store'); Route::get('/galerias/{gallery}/editar', [App\Http\Controllers\Admin\GalleryController::class, 'edit'])->name('galleries.edit'); Route::put('/galerias/{gallery}', [App\Http\Controllers\Admin\GalleryController::class, 'update'])->name('galleries.update'); Route::delete('/galerias/{gallery}', [App\Http\Controllers\Admin\GalleryController::class, 'destroy'])->name('galleries.destroy'); Route::post('/galerias/{gallery}/imagem', [App\Http\Controllers\Admin\GalleryController::class, 'uploadImage'])->name('galleries.upload'); Route::put('/galerias/imagem/{image}', [App\Http\Controllers\Admin\GalleryController::class, 'updateImage'])->name('galleries.image.update'); Route::delete('/galerias/imagem/{image}', [App\Http\Controllers\Admin\GalleryController::class, 'deleteImage'])->name('galleries.image.delete'); // Categorias de Galerias Route::get('/galerias/categorias', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'index'])->name('gallery-categories.index'); Route::get('/galerias/categorias/criar', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'create'])->name('gallery-categories.create'); Route::post('/galerias/categorias', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'store'])->name('gallery-categories.store'); Route::get('/galerias/categorias/{galleryCategory}/editar', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'edit'])->name('gallery-categories.edit'); Route::put('/galerias/categorias/{galleryCategory}', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'update'])->name('gallery-categories.update'); Route::delete('/galerias/categorias/{galleryCategory}', [App\Http\Controllers\Admin\GalleryCategoryController::class, 'destroy'])->name('gallery-categories.destroy'); }); // Área de Marketing (permissão: marketing) Route::middleware('permission:marketing')->prefix('marketing')->name('marketing.')->group(function () { Route::get('/', [App\Http\Controllers\Admin\MarketingController::class, 'index'])->name('index'); Route::get('/visitantes', [App\Http\Controllers\Admin\MarketingController::class, 'analytics'])->name('analytics'); Route::get('/promover-produtos', [App\Http\Controllers\Admin\MarketingController::class, 'promoteProducts'])->name('promote.products'); Route::get('/promover-servicos', [App\Http\Controllers\Admin\MarketingController::class, 'promoteServices'])->name('promote.services'); Route::get('/email-marketing', [App\Http\Controllers\Admin\MarketingController::class, 'emailMarketing'])->name('email'); Route::post('/email-marketing', [App\Http\Controllers\Admin\MarketingController::class, 'sendEmailMarketing'])->name('email.send'); // Gerenciamento de Banners (Destaques) Route::resource('banners', App\Http\Controllers\Admin\BannerController::class); }); // Configurações e SEO Global (permissão: settings) Route::middleware('permission:settings')->group(function () { Route::get('/configuracoes', [App\Http\Controllers\Admin\SettingController::class, 'index'])->name('settings.index'); Route::post('/configuracoes', [App\Http\Controllers\Admin\SettingController::class, 'update'])->name('settings.update'); }); // ERP Syspanel Advertisement (available to all logged-in users) Route::get('/erp-syspanel', [App\Http\Controllers\Admin\SettingController::class, 'erpAd'])->name('erp.ad'); // Manual de Uso (available to all logged-in users) Route::get('/manual-de-uso', function () { return view('admin.manual.index'); })->name('manual'); // Notificações (available to all logged-in users) Route::get('/notificacoes/{id}/lida', function ($id) { /** @var \App\Models\User $user */ $user = Auth::user(); $notification = $user->notifications()->findOrFail($id); $notification->markAsRead(); return Redirect::to($notification->data['link']); })->name('notifications.read'); Route::get('/notificacoes/limpar', function () { /** @var \App\Models\User $user */ $user = Auth::user(); $user->unreadNotifications->markAsRead(); return Redirect::back(); })->name('notifications.clear'); }); // Rota Dinâmica para Páginas Customizadas (DEVE SER SEMPRE A ÚLTIMA ROTA) Route::get('/{slug}', [PageController::class, 'show'])->name('pages.show');