Files
ntspi-app/app/Containers/Dashboard/Actions/Sveden/UpdateSvedenAction.php
T
F4ilji c9fca0bf29 feat: add Sveden update feature
- SvedenController: upload zip and extract to public/sveden
- UpdateSvedenAction: orchestrates temp file handling and extraction
- ExtractSvedenArchiveTask: validates and extracts sveden/abitur folders with security checks
- Sveden.vue: upload UI with progress indicator
- Added routes: GET/POST /dashboard/sveden
- Added quick action: Обновить Sveden
2026-06-30 16:12:16 +05:00

43 lines
991 B
PHP

<?php
namespace App\Containers\Dashboard\Actions\Sveden;
use App\Containers\Dashboard\Tasks\Sveden\ExtractSvedenArchiveTask;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Str;
class UpdateSvedenAction
{
public function __construct(
private readonly ExtractSvedenArchiveTask $extractTask,
) {}
public function run(UploadedFile $file): array
{
$tempPath = storage_path('app/temp/sveden_' . Str::random(16) . '.zip');
$this->ensureTempDirectory();
try {
$file->move(dirname($tempPath), basename($tempPath));
$result = $this->extractTask->run($tempPath);
return $result;
} finally {
if (file_exists($tempPath)) {
unlink($tempPath);
}
}
}
private function ensureTempDirectory(): void
{
$tempDir = storage_path('app/temp');
if (!is_dir($tempDir)) {
mkdir($tempDir, 0755, true);
}
}
}