<?php

namespace App\Http\Controllers\Api\V1;

use App\Helpers\ApiResponse;
use App\Http\Controllers\Controller;
use App\Services\AdminService;
use Illuminate\Http\Request;

class AdminController extends Controller
{
    public function index(Request $request)
    {
        return ApiResponse::handle(function () use ($request) {
            return AdminService::getTenants($request->all());
        }, '테넌트 사용자 목록 조회');
    }

    public function store(Request $request)
    {
        return ApiResponse::handle(function () use ($request) {
            return AdminService::store($request->all());
        }, '테넌트 사용자 추가');
    }

    public function show($userNo)
    {
        return ApiResponse::handle(function () use ($userNo) {
            return AdminService::show($userNo);
        }, '테넌트 사용자 단건 조회');
    }

    public function update(Request $request, $userNo)
    {
        return ApiResponse::handle(function () use ($request, $userNo) {
            return AdminService::update($request->all(), $userNo);
        }, '테넌트 사용자 수정');
    }

    public function destroy($userNo)
    {
        return ApiResponse::handle(function () use ($userNo) {
            return AdminService::destroy($userNo);
        }, '테넌트 사용자 삭제(연결 삭제)');
    }

    public function restore($userNo)
    {
        return ApiResponse::handle(function () use ($userNo) {
            return AdminService::restore($userNo);
        }, '테넌트 사용자 삭제 복구');
    }

    public function toggle($userNo)
    {
        return ApiResponse::handle(function () use ($userNo) {
            return AdminService::toggle($userNo);
        }, '테넌트 사용자 활성/비활성');
    }

    public function attach(Request $request)
    {
        return ApiResponse::handle(function () use ($request) {
            return AdminService::attach($request->all());
        }, '테넌트 사용자 역할 부여');
    }

    public function detach(Request $request)
    {
        return ApiResponse::handle(function () use ($request) {
            return AdminService::detach($request->all());
        }, '테넌트 사용자 역할 해제');
    }

    public function reset(Request $request, $userNo)
    {
        return ApiResponse::handle(function () use ($request, $userNo) {
            return AdminService::reset($request->all(), $userNo);
        }, '테넌트 사용자 비밀번호 초기화');
    }
}
