name('home'); Route::get('language/{locale}', [LanguageController::class, 'switch'])->name('language.switch'); // Legal routes Route::prefix('legal')->name('legal.')->group(function () { Route::get('/terms', [LegalController::class, 'terms'])->name('terms'); Route::get('/privacy', [LegalController::class, 'privacy'])->name('privacy'); Route::get('/cookies', [LegalController::class, 'cookies'])->name('cookies'); Route::post('/accept', [LegalController::class, 'accept'])->name('accept'); Route::get('/history', [LegalController::class, 'history'])->name('history'); Route::post('/cookie-banner/accept', [LegalController::class, 'acceptCookieBanner'])->name('cookie-banner.accept'); }); // Guest routes Route::middleware(['web', 'guest'])->group(function () { Route::get('login', [AuthenticatedSessionController::class, 'create'])->name('login'); Route::post('login', [AuthenticatedSessionController::class, 'store']); Route::get('register', [RegisteredUserController::class, 'create'])->name('register'); Route::post('register', [RegisteredUserController::class, 'store']); }); // Authenticated routes Route::middleware('auth')->group(function () { Route::post('logout', [AuthenticatedSessionController::class, 'destroy'])->name('logout'); // Dashboard Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); Route::get('/dashboard/chat', [\App\Http\Controllers\ChatController::class, 'index'])->name('chat.index'); Route::post('/dashboard/chat', [\App\Http\Controllers\ChatController::class, 'store'])->name('chat.store'); Route::delete('/dashboard/chat', [\App\Http\Controllers\ChatController::class, 'destroy'])->name('chat.destroy'); Route::get('/notifications', [\App\Http\Controllers\NotificationController::class, 'index'])->name('notifications.index'); Route::post('/notifications/{notification}/read', [\App\Http\Controllers\NotificationController::class, 'markAsRead'])->name('notifications.read'); Route::post('/notifications/read-all', [\App\Http\Controllers\NotificationController::class, 'markAllAsRead'])->name('notifications.read-all'); // Profile routes Route::middleware('verified')->group(function () { Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update'); Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy'); }); }); // Admin routes (for authenticated users with admin or superadmin role) Route::middleware(['auth', 'verified', 'role:admin|superadmin']) ->prefix('admin') ->name('admin.') ->group(function () { // Subjects Route::get('/subjects', [SubjectController::class, 'index'])->name('subjects.index'); Route::post('/subjects', [SubjectController::class, 'store'])->name('subjects.store'); Route::post('/subjects/{subject}/subscribe', [SubjectController::class, 'subscribe'])->name('subjects.subscribe'); Route::put('/subjects/{subject}', [SubjectController::class, 'update'])->name('subjects.update'); Route::delete('/subjects/{subject}', [SubjectController::class, 'destroy'])->name('subjects.destroy'); Route::post('/subjects/{userSubject}/toggle', [SubjectController::class, 'toggle'])->name('subjects.toggle'); Route::put('/subjects/{userSubject}/schedule', [SubjectController::class, 'updateSchedule'])->name('subjects.schedule'); Route::delete('/subjects/{userSubject}/unsubscribe', [SubjectController::class, 'unsubscribe'])->name('subjects.unsubscribe'); Route::post('/subjects/{subject}/send-insight', [SubjectController::class, 'sendInsight'])->name('subjects.send-insight'); Route::post('/subjects/{subject}/send-introduction', [SubjectController::class, 'sendIntroduction'])->name('subjects.send-introduction'); Route::post('/subjects/generate-ai', [SubjectController::class, 'generateAiSubject'])->name('subjects.generateAi'); // Insights Route::get('/insights', [InsightController::class, 'index'])->name('insights.index'); Route::post('/insights', [InsightController::class, 'store'])->name('insights.store'); Route::post('/insights/generate', [InsightController::class, 'generate'])->name('insights.generate'); Route::post('/insights/{insight}/translate', [InsightController::class, 'translate'])->name('insights.translate'); Route::delete('/insights/{insight}', [InsightController::class, 'destroy'])->name('insights.destroy'); // Telegram Route::get('/telegram', [TelegramController::class, 'index'])->name('telegram.index'); Route::post('/telegram/connect', [TelegramController::class, 'connect'])->name('telegram.connect'); Route::post('/telegram/test', [TelegramController::class, 'test'])->name('telegram.test'); Route::post('/telegram/disconnect', [TelegramController::class, 'disconnect'])->name('telegram.disconnect'); // Billing Route::get('/billing', [\App\Http\Controllers\Admin\BillingController::class, 'index'])->name('billing.index'); Route::post('/billing/subscribe/{plan}', [\App\Http\Controllers\Admin\BillingController::class, 'subscribe'])->name('billing.subscribe'); Route::get('/billing/invoices/{invoice}/download', [\App\Http\Controllers\Admin\BillingController::class, 'downloadInvoice'])->name('billing.invoices.download'); Route::get('/billing/notifications', [\App\Http\Controllers\Admin\BillingController::class, 'notifications'])->name('billing.notifications'); Route::post('/billing/notifications/{notification}/read', [\App\Http\Controllers\Admin\BillingController::class, 'markNotificationRead'])->name('billing.notifications.read'); Route::post('/billing/notifications/read-all', [\App\Http\Controllers\Admin\BillingController::class, 'markAllNotificationsRead'])->name('billing.notifications.read-all'); // Custom Subjects (PDF) Route::get('/custom-subjects', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'index'])->name('custom-subjects.index'); Route::post('/custom-subjects', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'store'])->name('custom-subjects.store'); Route::get('/custom-subjects/{customSubject}', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'show'])->name('custom-subjects.show'); Route::get('/custom-subjects/{customSubject}/edit', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'edit'])->name('custom-subjects.edit'); Route::put('/custom-subjects/{customSubject}', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'update'])->name('custom-subjects.update'); Route::post('/custom-subjects/{customSubject}/ask', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'ask'])->name('custom-subjects.ask'); Route::delete('/custom-subjects/{customSubject}', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'destroy'])->name('custom-subjects.destroy'); Route::delete('/custom-subjects/{customSubject}/questions/{question}', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'destroyQuestion'])->name('custom-subjects.questions.destroy'); Route::post('/custom-subjects/{customSubject}/questions/{question}/translate', [\App\Http\Controllers\Admin\CustomSubjectController::class, 'translateQuestion'])->name('custom-subjects.questions.translate'); // Interests Route::get('/interests', [InterestController::class, 'index'])->name('interests.index'); Route::post('/interests', [InterestController::class, 'store'])->name('interests.store'); Route::delete('/interests/{userInterest}', [InterestController::class, 'destroy'])->name('interests.destroy'); Route::post('/interests/generate-suggestions', [InterestController::class, 'generateSuggestions'])->name('interests.generateSuggestions'); Route::post('/interests/create-subject', [InterestController::class, 'createSubjectFromSuggestion'])->name('interests.createSubject'); }); // SuperAdmin routes Route::middleware(['auth', 'verified', 'role:superadmin']) ->prefix('superadmin') ->name('superadmin.') ->group(function () { // User management Route::get('/users', [UserController::class, 'index'])->name('users.index'); Route::post('/users/{user}/approve', [UserController::class, 'approve'])->name('users.approve'); Route::post('/users/{user}/reject', [UserController::class, 'reject'])->name('users.reject'); Route::post('/users/{user}/toggle-active', [UserController::class, 'toggleActive'])->name('users.toggle-active'); Route::post('/users/{user}/verify-email', [UserController::class, 'verifyEmail'])->name('users.verify-email'); Route::get('/users/{user}/edit', [UserController::class, 'edit'])->name('users.edit'); Route::put('/users/{user}', [UserController::class, 'update'])->name('users.update'); Route::delete('/users/{user}', [UserController::class, 'destroy'])->name('users.destroy'); // Billing management Route::get('/billing', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'index'])->name('billing.index'); Route::post('/billing/plans', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'storePlan'])->name('billing.plans.store'); Route::put('/billing/plans/{plan}', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'updatePlan'])->name('billing.plans.update'); Route::post('/billing/subscriptions/{subscription}/approve', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'approvePayment'])->name('billing.approve'); Route::post('/billing/subscriptions/{subscription}/cancel', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'cancelSubscription'])->name('billing.cancel'); Route::get('/billing/invoices', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'invoices'])->name('billing.invoices'); Route::get('/billing/invoices/{invoice}/download', [\App\Http\Controllers\SuperAdmin\BillingController::class, 'downloadInvoice'])->name('billing.invoices.download'); // System management Route::get('/system', [SystemController::class, 'index'])->name('system.index'); Route::post('/system/subjects', [SystemController::class, 'createSubject'])->name('system.subjects.store'); Route::post('/system/subjects/generate-ai', [SystemController::class, 'generateAiSubject'])->name('system.subjects.generateAi'); Route::put('/system/subjects/{subject}', [SystemController::class, 'updateSubject'])->name('system.subjects.update'); Route::delete('/system/subjects/{subject}', [SystemController::class, 'destroySubject'])->name('system.subjects.destroy'); Route::post('/system/ai-settings', [SystemController::class, 'updateAiSettings'])->name('system.ai-settings.update'); Route::post('/system/chat-settings', [SystemController::class, 'updateChatSettings'])->name('system.chat-settings.update'); });