Files
Helpddesk/Modules/Helpdesk/Http/Controllers/HelpdeskSyncController.php
T
2026-09-02 17:08:57 +00:00

60 lines
1.6 KiB
PHP
Executable File

<?php
declare(strict_types=1);
namespace Modules\Helpdesk\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Helpdesk\Services\HelpdeskSyncService;
use Throwable;
final class HelpdeskSyncController extends Controller
{
public function status(HelpdeskSyncService $sync): JsonResponse
{
return response()->json($sync->status());
}
public function export(Request $request, HelpdeskSyncService $sync): JsonResponse
{
$settingsOnly = $request->boolean('settings_only');
$includeFiles = ! $request->boolean('without_files');
return response()->json(
$sync->snapshot(
settingsOnly: $settingsOnly,
includeFiles: $includeFiles,
)
);
}
public function import(Request $request, HelpdeskSyncService $sync): JsonResponse
{
$validated = $request->validate([
'snapshot' => ['required', 'array'],
'mirror' => ['sometimes', 'boolean'],
]);
try {
$result = $sync->importSnapshot(
$validated['snapshot'],
mirror: (bool) ($validated['mirror'] ?? false),
);
} catch (Throwable $exception) {
report($exception);
return response()->json([
'ok' => false,
'message' => $exception->getMessage(),
], 422);
}
return response()->json([
'ok' => true,
'result' => $result,
]);
}
}