<?php

namespace App\Http\Controllers;

use App\Services\TenantService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\View\View;

class TenantController extends Controller
{
    public function __construct(
        private readonly TenantService $tenantService
    ) {}

    /**
     * 테넌트 목록 (Blade 화면)
     */
    public function index(Request $request): View|Response
    {
        // HTMX 요청 시 전체 페이지 리로드 (스크립트 실행 필요)
        if ($request->header('HX-Request')) {
            return response('', 200)->header('HX-Redirect', route('tenants.index'));
        }

        return view('tenants.index');
    }

    /**
     * 테넌트 생성 화면
     */
    public function create(): View
    {
        return view('tenants.create');
    }

    /**
     * 테넌트 수정 화면
     */
    public function edit(int $id): View
    {
        $tenant = $this->tenantService->getTenantById($id);

        if (! $tenant) {
            abort(404, '테넌트를 찾을 수 없습니다.');
        }

        return view('tenants.edit', compact('tenant'));
    }

    /**
     * 테넌트 전환 (기존 기능 유지)
     */
    public function switch(Request $request)
    {
        $tenantId = $request->input('tenant_id');

        if ($tenantId === 'all') {
            // "전체 보기" 대신 사용자의 HQ 테넌트로 설정
            $hqTenant = auth()->user()->getHQTenant();
            if ($hqTenant) {
                $request->session()->put('selected_tenant_id', $hqTenant->id);
            }
        } else {
            $request->session()->put('selected_tenant_id', $tenantId);
        }

        return redirect()->back();
    }
}
