65 lines
1.5 KiB
PHP
65 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Tenant;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Validation\Rule;
|
|
|
|
class TenantController extends Controller
|
|
{
|
|
public function index(): JsonResponse
|
|
{
|
|
return response()->json(Tenant::query()->latest()->get());
|
|
}
|
|
|
|
public function store(Request $request): JsonResponse
|
|
{
|
|
$validated = $request->validate($this->rules());
|
|
|
|
$tenant = Tenant::create($validated);
|
|
|
|
return response()->json($tenant, 201);
|
|
}
|
|
|
|
public function show(Tenant $tenant): JsonResponse
|
|
{
|
|
return response()->json($tenant);
|
|
}
|
|
|
|
public function update(Request $request, Tenant $tenant): JsonResponse
|
|
{
|
|
$validated = $request->validate($this->rules($tenant->id));
|
|
|
|
$tenant->update($validated);
|
|
|
|
return response()->json($tenant);
|
|
}
|
|
|
|
public function destroy(Tenant $tenant): Response
|
|
{
|
|
$tenant->delete();
|
|
|
|
return response()->noContent();
|
|
}
|
|
|
|
/**
|
|
* @return array<string, mixed>
|
|
*/
|
|
protected function rules(?int $tenantId = null): array
|
|
{
|
|
return [
|
|
'codigo' => [
|
|
'required',
|
|
'string',
|
|
'max:255',
|
|
Rule::unique('tenants', 'codigo')->ignore($tenantId),
|
|
],
|
|
'nombre' => ['required', 'string', 'max:255'],
|
|
'dominio' => ['nullable', 'string', 'max:255'],
|
|
];
|
|
}
|
|
}
|