date = $date; $this->download = $download; } /** * Execute the job. */ public function handle(): void { $command = [ sprintf('%srunpython.sh', base_path('../')), sprintf('--date=%s', $this->date->format('Y-m-d')), sprintf('--days=%d', $this->days), sprintf('--project_dir=%s', $this->download->project->download_path), ]; $process = new Process($command); $process->setTimeout(600); $process->run(); $project = $this->download->project; if (!$process->isSuccessful()) { ProjectLogger::log($project, $process->getErrorOutput()); $this->download->setStatusFailed(); return; } // Success ProjectLogger::log($project, $process->getOutput()); $this->download->setStatusSuccess(); dispatch(ProjectDownloadRDSJob::fromDate($this->download->project, $this->date, $this->days)); } public static function handleForDate(Project $project, Carbon $date) { $filename = $date->format('Y-m-d') . '.tif'; if ($project->downloads()->statusSuccess()->where(['name' => $filename])->exists()) { return new NullJob(); } $path = $project->download_path . '/merged_final_tif/' . $filename; return new self( $project->downloads()->create([ 'name' => $filename, 'path' => $path, ]), $date ); } }