middleware('can:content-import'); } /** * Show the view to start a new import, and also list out the existing * in progress imports that are visible to the user. */ public function start(Request $request) { // TODO - Test visibility access for listed items $imports = $this->imports->getVisibleImports(); $this->setPageTitle(trans('entities.import')); return view('exports.import', [ 'imports' => $imports, 'zipErrors' => session()->pull('validation_errors') ?? [], ]); } /** * Upload, validate and store an import file. */ public function upload(Request $request) { $this->validate($request, [ 'file' => ['required', ...AttachmentService::getFileValidationRules()] ]); $file = $request->file('file'); try { $import = $this->imports->storeFromUpload($file); } catch (ZipValidationException $exception) { session()->flash('validation_errors', $exception->errors); return redirect('/import'); } $this->logActivity(ActivityType::IMPORT_CREATE, $import); return redirect($import->getUrl()); } /** * Show a pending import, with a form to allow progressing * with the import process. */ public function show(int $id) { // TODO - Test visibility access $import = $this->imports->findVisible($id); $this->setPageTitle(trans('entities.import_continue')); return view('exports.import-show', [ 'import' => $import, ]); } /** * Delete an active pending import from the filesystem and database. */ public function delete(int $id) { // TODO - Test visibility access $import = $this->imports->findVisible($id); $this->imports->deleteImport($import); $this->logActivity(ActivityType::IMPORT_DELETE, $import); return redirect('/import'); } }