<?php

/**
 * 테넌트 API 라우트 (v1)
 *
 * - 테넌트 관리
 * - 테넌트 설정
 * - 테넌트 통계 필드
 */

use App\Http\Controllers\Api\V1\TenantController;
use App\Http\Controllers\Api\V1\TenantSettingController;
use App\Http\Controllers\Api\V1\TenantStatFieldController;
use Illuminate\Support\Facades\Route;

// Tenant API
Route::prefix('tenants')->group(function () {
    Route::get('list', [TenantController::class, 'index'])->name('v1.tenant.index');          // 테넌트 목록 조회
    Route::get('/', [TenantController::class, 'show'])->name('v1.tenant.show');            // 테넌트 정보 조회
    Route::put('/', [TenantController::class, 'update'])->name('v1.tenant.update');         // 테넌트 정보 수정
    Route::post('/', [TenantController::class, 'store'])->name('v1.tenant.store');         // 테넌트 등록
    Route::delete('/', [TenantController::class, 'destroy'])->name('v1.tenant.destroy');     // 테넌트 삭제(탈퇴)
    Route::put('/restore/{tenant_id}', [TenantController::class, 'restore'])->name('v1.tenant.restore');     // 테넌트 복구
    Route::post('/logo', [TenantController::class, 'uploadLogo'])->name('v1.tenant.upload-logo');     // 로고 업로드
});

// Tenant Statistics Field API
Route::prefix('tenant-stat-fields')->group(function () {
    Route::get('/', [TenantStatFieldController::class, 'index'])->name('v1.tenant-stat-fields.index');   // 목록 조회
    Route::post('/', [TenantStatFieldController::class, 'store'])->name('v1.tenant-stat-fields.store');   // 생성
    Route::get('/{id}', [TenantStatFieldController::class, 'show'])->name('v1.tenant-stat-fields.show');     // 단건 조회
    Route::patch('/{id}', [TenantStatFieldController::class, 'update'])->name('v1.tenant-stat-fields.update'); // 수정
    Route::delete('/{id}', [TenantStatFieldController::class, 'destroy'])->name('v1.tenant-stat-fields.destroy'); // 삭제
    Route::post('/reorder', [TenantStatFieldController::class, 'reorder'])->name('v1.tenant-stat-fields.reorder'); // 정렬 변경
    Route::put('/bulk-upsert', [TenantStatFieldController::class, 'bulkUpsert'])->name('v1.tenant-stat-fields.bulk-upsert'); // 일괄 저장
});

// Tenant Settings API (테넌트별 설정)
Route::prefix('tenant-settings')->group(function () {
    Route::get('/', [TenantSettingController::class, 'index'])->name('v1.tenant-settings.index');           // 전체 설정 조회
    Route::post('/', [TenantSettingController::class, 'store'])->name('v1.tenant-settings.store');          // 설정 저장
    Route::put('/bulk', [TenantSettingController::class, 'bulkUpdate'])->name('v1.tenant-settings.bulk');   // 일괄 저장
    Route::post('/initialize', [TenantSettingController::class, 'initialize'])->name('v1.tenant-settings.initialize'); // 기본 설정 초기화
    Route::get('/{group}/{key}', [TenantSettingController::class, 'show'])->name('v1.tenant-settings.show');           // 단일 설정 조회
    Route::delete('/{group}/{key}', [TenantSettingController::class, 'destroy'])->name('v1.tenant-settings.destroy');  // 설정 삭제
});
