diff --git a/laravel_app/app/Jobs/ProjectDownloadTiffJob.php b/laravel_app/app/Jobs/ProjectDownloadTiffJob.php index 3a5f862..4e78cee 100644 --- a/laravel_app/app/Jobs/ProjectDownloadTiffJob.php +++ b/laravel_app/app/Jobs/ProjectDownloadTiffJob.php @@ -24,7 +24,7 @@ class ProjectDownloadTiffJob implements ShouldQueue /** * Create a new job instance. */ - public function __construct(ProjectDownload $download, Carbon $date,) + public function __construct(ProjectDownload $download, Carbon $date) { $this->date = $date; $this->download = $download; diff --git a/laravel_app/app/Models/Project.php b/laravel_app/app/Models/Project.php index 3af9cdd..b6ab522 100644 --- a/laravel_app/app/Models/Project.php +++ b/laravel_app/app/Models/Project.php @@ -20,6 +20,10 @@ class Project extends Model { use HasFactory; + protected $casts = [ + 'min_harvest_date' => 'date' + ]; + protected $fillable = [ 'name', 'mail_template', @@ -30,12 +34,16 @@ class Project extends Model 'download_path', 'pivot_json_path', 'span_json_path', - 'harvest_json_path' + 'harvest_json_path', + 'min_harvest_date' ]; public static function saveWithFormData(mixed $formData) { $uniqueIdentifier = ['id' => $formData['id'] ?? null]; + /** + * @var Project $project + */ $project = Project::updateOrCreate($uniqueIdentifier, $formData); $baseFrom = 'livewire-tmp/'; $baseTo = $project->download_path.'/Data/'; @@ -49,7 +57,9 @@ public static function saveWithFormData(mixed $formData) } if ($formData['harvest_file']) { Storage::copy($baseFrom.$formData['harvest_file']['tmpFilename'],$baseTo.'harvest.'.$formData['harvest_file']['extension']); - $project->update(['harvest_json_path' => $baseTo.'harvest.'.$formData['harvest_file']['extension']]); + if($project->update(['harvest_json_path' => $baseTo.'harvest.'.$formData['harvest_file']['extension']])) { + $project->setMinHarvestDate(); + } } } private function upsertMailRecipients($formData) @@ -333,14 +343,14 @@ public function getMosaicsFor(Carbon $endDate, int $offset= 7): array ->toArray(); } - public function missingDownloadsInHarvestFile() + public function setMinHarvestDate():bool { if(!$this->harvest_json_path){ - return; + return false; } - $dates = $this->downloads->map(fn($d)=>$d->date)->sort(); + return $this->update(['min_harvest_date'=> $this->getMinimumDateFromHarvestExcelFile()->format('Y-m-d')]); } - private function getMinimumDateFromHarvestExcelFile() + private function getMinimumDateFromHarvestExcelFile():Carbon { $value = Storage::disk('local')->path($this->harvest_json_path); $data = Excel::toCollection(new \App\Imports\ExcelFileImport(),$value);