<?php

use Illuminate\Support\Facades\Route;

/**
 * Laravel 12変更点：ルート定義の書き方が変更
 * Laravel 5.7: Route::get('url', 'Controller@method') の形式
 * Laravel 12: Route::get('url', [Controller::class, 'method']) の形式
 */

// ホームページのリダイレクト
Route::get('/', function () {
    return redirect()->route('home');
});

// ログイン関連ルート（ゲストユーザー専用）
// Laravel 12変更点：ミドルウェアをルートで直接指定
Route::middleware('guest')->group(function () {
    // ログインフォーム表示
    Route::get('login', [App\Http\Controllers\Auth\LoginController::class, 'showLoginForm'])->name('login');
    // ログイン処理
    Route::post('login', [App\Http\Controllers\Auth\LoginController::class, 'login']);
});

// ログアウトルート（認証済みユーザー専用）
Route::get('logout', [App\Http\Controllers\Auth\LoginController::class, 'logout'])->middleware('auth');

// パスワードリセット機能（一時的にリダイレクト - 後で実装予定）
// Laravel 12移行時の一時対応：forgot_passwordルートエラー回避
Route::get('forgotPassword', function() {
    return redirect()->route('login')->with('info', 'パスワードリセット機能は現在準備中です。');
})->name('forgot_password');

// 保護されたルート（認証済みユーザー専用）
// Laravel 12変更点：middleware()をコントローラーではなくルートで指定
Route::middleware('auth')->group(function () {
    // ダッシュボード（ホーム画面）
    Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
    
    // Laravel 12 移行時の一時的な占位符路由
    // 他の開発者が継続して開発できるように、エラーを防ぐための仮ルート定義
    // 実装完了後は各機能の正式なルートに置き換える予定
    
    // 利用者マスタ管理機能（仮ルート）
    Route::match(['get', 'post'], '/users', function() {
        return view('admin.placeholder', ['title' => '利用者マスタ', 'feature' => 'users']);
    })->name('users');
    
    Route::match(['get', 'post'], '/users/add', function() {
        return view('admin.placeholder', ['title' => '利用者追加', 'feature' => 'users']);
    })->name('user_add');
    
    Route::match(['get', 'post'], '/users/edit/{seq}', function($seq) {
        return view('admin.placeholder', ['title' => '利用者編集', 'feature' => 'users', 'id' => $seq]);
    })->name('user_edit')->where(['seq' => '[0-9]+']);
    
    Route::match(['get', 'post'], '/users/info/{seq}', function($seq) {
        return view('admin.placeholder', ['title' => '利用者詳細', 'feature' => 'users', 'id' => $seq]);
    })->name('user_info')->where(['seq' => '[0-9]+']);
    
    Route::match(['get', 'post'], '/users/delete', function() {
        return redirect()->route('users')->with('info', '削除機能は現在実装中です。');
    })->name('users_delete');
    
    Route::match(['get', 'post'], '/users/import', function() {
        return redirect()->route('users')->with('info', 'インポート機能は現在実装中です。');
    })->name('users_import');
    
    Route::get('/users/export', function() {
        return redirect()->route('users')->with('info', 'エクスポート機能は現在実装中です。');
    })->name('users_export');
    
    // その他の管理機能の仮ルート（必要に応じて追加）
    Route::match(['get', 'post'], '/regular_contracts', function() {
        return view('admin.placeholder', ['title' => '定期契約管理', 'feature' => 'regular_contracts']);
    })->name('regular_contracts');
    
    Route::match(['get', 'post'], '/parks', function() {
        return view('admin.placeholder', ['title' => '駐輪場管理', 'feature' => 'parks']);
    })->name('parks');
    
    Route::match(['get', 'post'], '/opes', function() {
        return view('admin.placeholder', ['title' => 'オペレータ管理', 'feature' => 'opes']);
    })->name('opes');
    
    // 区画別利用率状況機能
    // Laravel 12変更点：配列形式でのコントローラー指定
    // Laravel 5.7: 'Admin\UsingStatusController@index' 形式を使用していた
    Route::get('/using_status', [App\Http\Controllers\Admin\UsingStatusController::class, 'index'])->name('using_status');
    Route::post('/using_status', [App\Http\Controllers\Admin\UsingStatusController::class, 'index'])->name('using_status');
    
    // 区画別利用率状況 - 将来拡張用API・エクスポート機能
    // Laravel 12対応：RESTful API エンドポイント
    Route::get('/using_status/api', [App\Http\Controllers\Admin\UsingStatusController::class, 'apiGetUtilization'])->name('using_status.api');
    Route::get('/using_status/export', [App\Http\Controllers\Admin\UsingStatusController::class, 'exportCsv'])->name('using_status.export');
});
