58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V1;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\StoreTenantRequest;
|
|
use App\Http\Requests\UpdateTenantRequest;
|
|
use App\Http\Resources\TenantResource;
|
|
use App\Models\Tenant;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
|
|
|
|
class TenantController extends Controller
|
|
{
|
|
public function index(): AnonymousResourceCollection
|
|
{
|
|
$this->authorize('viewAny', Tenant::class);
|
|
$user = request()->user();
|
|
$query = Tenant::query()->orderBy('name');
|
|
|
|
if (! ($user->is_platform_admin && $user->can('tenant.access-any'))) {
|
|
$query->whereKey($user->tenant_id);
|
|
}
|
|
|
|
return TenantResource::collection($query->paginate());
|
|
}
|
|
|
|
public function store(StoreTenantRequest $request): JsonResponse
|
|
{
|
|
$tenant = Tenant::create($request->validated());
|
|
|
|
return response()->json(['success' => true, 'message' => 'Tenant created successfully', 'data' => new TenantResource($tenant)], 201);
|
|
}
|
|
|
|
public function show(Tenant $tenant): JsonResponse
|
|
{
|
|
$this->authorize('view', $tenant);
|
|
|
|
return response()->json(['success' => true, 'message' => 'Tenant retrieved successfully', 'data' => new TenantResource($tenant)]);
|
|
}
|
|
|
|
public function update(UpdateTenantRequest $request, Tenant $tenant): JsonResponse
|
|
{
|
|
$this->authorize('update', $tenant);
|
|
$tenant->update($request->validated());
|
|
|
|
return response()->json(['success' => true, 'message' => 'Tenant updated successfully', 'data' => new TenantResource($tenant)]);
|
|
}
|
|
|
|
public function destroy(Tenant $tenant): JsonResponse
|
|
{
|
|
$this->authorize('delete', $tenant);
|
|
$tenant->delete();
|
|
|
|
return response()->json(['success' => true, 'message' => 'Tenant deleted successfully', 'data' => null]);
|
|
}
|
|
}
|