group(function () { Route::get('/login', [AuthController::class, 'showLoginForm'])->name('login'); Route::post('/login', [AuthController::class, 'login']); Route::get('/register', [AuthController::class, 'showRegisterForm'])->name('register'); Route::post('/register', [AuthController::class, 'register']); }); // Logout (accessible to authenticated users) Route::post('/logout', [AuthController::class, 'logout'])->name('logout'); // Rutas protegidas Route::middleware(['auth'])->group(function () { // Dashboard Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); // Calendario Route::get('/calendar', [CalendarController::class, 'index'])->name('calendar'); Route::post('/calendar/day', [CalendarController::class, 'storeDay'])->name('calendar.day.store'); // Meses Route::resource('months', MonthController::class); Route::post('/months/{month}/close', [MonthController::class, 'close'])->name('months.close'); // Ventas Route::get('/sales', [SaleController::class, 'index'])->name('sales.index'); Route::get('/sales/create', [SaleController::class, 'create'])->name('sales.create'); Route::post('/sales', [SaleController::class, 'store'])->name('sales.store'); Route::get('/sales/{sale}/edit', [SaleController::class, 'edit'])->name('sales.edit'); Route::put('/sales/{sale}', [SaleController::class, 'update'])->name('sales.update'); Route::delete('/sales/{sale}', [SaleController::class, 'destroy'])->name('sales.destroy'); // Gastos Route::get('/expenses', [ExpenseController::class, 'index'])->name('expenses.index'); Route::get('/expenses/create', [ExpenseController::class, 'create'])->name('expenses.create'); Route::post('/expenses', [ExpenseController::class, 'store'])->name('expenses.store'); Route::get('/expenses/{expense}/edit', [ExpenseController::class, 'edit'])->name('expenses.edit'); Route::put('/expenses/{expense}', [ExpenseController::class, 'update'])->name('expenses.update'); Route::delete('/expenses/{expense}', [ExpenseController::class, 'destroy'])->name('expenses.destroy'); // Reportes Route::get('/reports/monthly', [ReportController::class, 'monthly'])->name('reports.monthly'); Route::get('/reports/biweekly', [ReportController::class, 'biweekly'])->name('reports.biweekly'); Route::get('/reports/yearly', [ReportController::class, 'yearly'])->name('reports.yearly'); // Telegram Route::get('/telegram/verify', [TelegramController::class, 'showVerifyPage'])->name('telegram.verify'); Route::post('/telegram/regenerate', [TelegramController::class, 'regenerateCode'])->name('telegram.regenerate'); Route::post('/telegram/unlink', [TelegramController::class, 'unlink'])->name('telegram.unlink'); // Settings Route::get('/settings', [SettingsController::class, 'index'])->name('settings.index'); Route::put('/settings', [SettingsController::class, 'update'])->name('settings.update'); }); // Webhook de Telegram (público, sin auth) Route::post('/telegram/webhook', [TelegramController::class, 'webhook'])->name('telegram.webhook'); Route::get('/telegram/setup', [TelegramController::class, 'setupWebhook'])->name('telegram.setup');