Files
2026-07-27 16:24:09 +07:00

94 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers\Tenant;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Tenant\IndexTenantRequest;
use App\Http\Requests\Tenant\StoreTenantRequest;
use App\Http\Requests\Tenant\UpdateTenantRequest;
use App\Http\Resources\Tenant\TenantResource;
use App\Models\Tenant;
use App\Services\Tenant\TenantService;
use Illuminate\Http\Request;
class TenantController extends ApiController
{
public function __construct(
protected TenantService $service
) {}
public function index(IndexTenantRequest $request)
{
$data = $this->service->list(
$request->validated(),
$request->user()
);
return $this->successPaginated(
$data,
TenantResource::class,
'Data Tenant berhasil diambil'
);
}
public function store(StoreTenantRequest $request)
{
$data = $this->service->create(
$request->validated()
);
return $this->created(
new TenantResource($data),
'Tenant berhasil dibuat'
);
}
public function show(Request $request, Tenant $tenant)
{
$this->authorizeTenantAccess($request, $tenant);
return $this->success(
new TenantResource($tenant),
'Detail Tenant berhasil diambil'
);
}
public function update(
UpdateTenantRequest $request,
Tenant $tenant
) {
$data = $this->service->update(
$tenant,
$request->validated()
);
return $this->updated(
new TenantResource($data),
'Tenant berhasil diupdate'
);
}
public function destroy(Tenant $tenant)
{
$this->service->delete($tenant);
return $this->deleted(
'Tenant berhasil dihapus'
);
}
private function authorizeTenantAccess(Request $request, Tenant $tenant): void
{
$user = $request->user();
if ($user->isMasterAdmin()) {
return;
}
abort_unless(
$user->userTenants()->where('tenant_id', $tenant->id)->exists(),
403
);
}
}