From 2220d2a5c48dd6341b166f8931b849099f43c36d Mon Sep 17 00:00:00 2001 From: Dan Tang Date: Tue, 4 Aug 2026 16:17:14 +0100 Subject: [PATCH] add one-time command program to add farm details as entity_values records of the root entity of a submission --- app/Console/Commands/AddFarmDetails.php | 65 +++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 app/Console/Commands/AddFarmDetails.php diff --git a/app/Console/Commands/AddFarmDetails.php b/app/Console/Commands/AddFarmDetails.php new file mode 100644 index 00000000..8059ef1b --- /dev/null +++ b/app/Console/Commands/AddFarmDetails.php @@ -0,0 +1,65 @@ +farms')->with('rootEntity'); + + if ($submissionId = $this->argument('submission')) { + $query->where('id', $submissionId); + } + + $submissions = $query->get(); + + $this->info("Found {$submissions->count()} submission(s) with a farms node."); + + foreach ($submissions as $submission) { + $this->info("Processing submission {$submission->id}..."); + + if (! $submission->rootEntity) { + $this->warn("Submission {$submission->id}: no root entity found, skipping."); + + continue; + } + + $farmAttributes = collect($submission->content['farms']) + ->filter(fn ($value) => $value !== null && $value !== '' && ! is_array($value)); + + foreach ($farmAttributes as $name => $value) { + // $this->info($name . ' => ' . $value); + EntityValue::updateOrCreate( + ['entity_id' => $submission->rootEntity->id, 'dataset_variable_name' => $name], + ['value' => $value], + ); + } + + $this->info("Submission {$submission->id}: wrote {$farmAttributes->count()} attribute(s) to entity {$submission->rootEntity->id}."); + } + + $this->comment("Done. Processed {$submissions->count()} submission(s)."); + } +}