id = $id; $this->storage = Storage::disk('local'); $this->directoryPath = "contracts/$this->id"; $this->infoFilePath = "searchers/$this->id.json"; } public function execute() { // The files don't exist, so we don't have to apply S&D. if ( ! $this->storage->exists($this->directoryPath) || ! $this->storage->exists($this->infoFilePath)) { return; } try { $documentContent = $this->storage->get("$this->directoryPath/document.md"); $searchersContent = json_decode($this->storage->get($this->infoFilePath), true); $documentPath = $searchersContent['document_path']; $searchers = $searchersContent['searchers']; $this->storage->put($this->infoFilePath, json_encode($searchers[0]['content'])); $searchAndDisplace = new SearchAndDisplace($documentContent, [ 'searchers' => [ [ 'key' => $this->id, 'type' => $searchers[0]['type'], 'value' => $searchers[0]['value'], ] ], ]); $result = $searchAndDisplace->execute(); file_put_contents($documentPath, $result['content']); SDAppliedOnMarkdownDocument::dispatch($this->id); } catch (\Exception $exception) { \Illuminate\Support\Facades\Log::info('EXCEPTION: ' . $exception->getMessage()); \Illuminate\Support\Facades\Log::info('EXCEPTION: ' . $exception->getTraceAsString()); return; } finally { $this->storage->deleteDirectory($this->directoryPath); $this->storage->delete($this->infoFilePath); } } }