First Commit

This commit is contained in:
marco
2026-09-01 07:49:48 -03:00
commit 28b1044038
399 changed files with 41659 additions and 0 deletions
Executable
+165
View File
@@ -0,0 +1,165 @@
<?php
declare(strict_types=1);
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\Admin\SubjectController;
use App\Http\Controllers\Admin\InsightController;
use App\Http\Controllers\Admin\TelegramController;
use App\Http\Controllers\Admin\InterestController;
use App\Http\Controllers\SuperAdmin\UserController;
use App\Http\Controllers\SuperAdmin\SystemController;
use App\Http\Controllers\LegalController;
use App\Http\Controllers\LanguageController;
use App\Http\Controllers\DashboardController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\AuthenticatedSessionController;
use App\Http\Controllers\Auth\RegisteredUserController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application.
|
*/
// Public routes
Route::get('/', function () {
return view('welcome');
})->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');
});