/** * @param string $fileType * * @return ImportJob */ public function create(string $fileType) : ImportJob { $count = 0; $fileType = strtolower($fileType); $keys = array_keys(config('firefly.import_formats')); if (!in_array($fileType, $keys)) { throw new FireflyException(sprintf('Cannot use type "%s" for import job.', $fileType)); } while ($count < 30) { $key = Str::random(12); $existing = $this->findByKey($key); if (is_null($existing->id)) { $importJob = new ImportJob(); $importJob->user()->associate($this->user); $importJob->file_type = $fileType; $importJob->key = Str::random(12); $importJob->status = 'import_status_never_started'; $importJob->extended_status = ['total_steps' => 0, 'steps_done' => 0, 'import_count' => 0, 'importTag' => 0, 'errors' => []]; $importJob->save(); // breaks the loop: return $importJob; } $count++; } return new ImportJob(); }