From 2b60501f2e5650657f79bdd40c3eb22b4132b87e Mon Sep 17 00:00:00 2001 From: NRayya <82588017+NRayya@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:44:25 +0200 Subject: [PATCH 1/2] fix: update DataCite Meta data for unpublished projects fixes #1143 --- app/Console/Commands/UpdateProjectsDOI.php | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 app/Console/Commands/UpdateProjectsDOI.php diff --git a/app/Console/Commands/UpdateProjectsDOI.php b/app/Console/Commands/UpdateProjectsDOI.php new file mode 100644 index 00000000..8025e6ed --- /dev/null +++ b/app/Console/Commands/UpdateProjectsDOI.php @@ -0,0 +1,77 @@ +doiService = $doiService; + } + + /** + * Execute the console command. + */ + public function handle() + { + // $operator takes values from + // {'>' : after a certain update date, + // '<' : before a certain update date, + // '=' : at a certain update date} + $operator = $this->argument('operator'); + $date = $this->argument('update-date'); + $date = $date ? Carbon::parse($date) : null; + + // Fetch the projects based on the date + $projects = $date ? Project::where('updated_at', $operator, $date)->get() : Project::all(); + foreach ($projects as $project) { + echo $project->identifier."\r\n"; + foreach ($project->studies as $study) { + echo $study->identifier."\r\n"; + foreach ($study->datasets as $dataset) { + echo $dataset->identifier."\r\n"; + $dataset->updateDOIMetadata($this->doiService); + $dataset->addRelatedIdentifiers($this->doiService); + } + $study->updateDOIMetadata($this->doiService); + $study->addRelatedIdentifiers($this->doiService); + } + $project->updateDOIMetadata($this->doiService); + $project->addRelatedIdentifiers($this->doiService); + } + } +} From 8b81b73bd32998e9b818718a4b5aa5d764d672a1 Mon Sep 17 00:00:00 2001 From: NRayya <82588017+NRayya@users.noreply.github.com> Date: Tue, 30 Jul 2024 14:10:04 +0200 Subject: [PATCH 2/2] enable update DataCite Meta data additionally for unpublished samples --- .../{UpdateProjectsDOI.php => UpdateDOI.php} | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) rename app/Console/Commands/{UpdateProjectsDOI.php => UpdateDOI.php} (67%) diff --git a/app/Console/Commands/UpdateProjectsDOI.php b/app/Console/Commands/UpdateDOI.php similarity index 67% rename from app/Console/Commands/UpdateProjectsDOI.php rename to app/Console/Commands/UpdateDOI.php index 8025e6ed..807aedc8 100644 --- a/app/Console/Commands/UpdateProjectsDOI.php +++ b/app/Console/Commands/UpdateDOI.php @@ -3,11 +3,12 @@ namespace App\Console\Commands; use App\Models\Project; +use App\Models\Study; use App\Services\DOI\DOIService; use Carbon\Carbon; use Illuminate\Console\Command; -class UpdateProjectsDOI extends Command +class UpdateDOI extends Command { /** * The name and signature of the console command. @@ -21,7 +22,7 @@ class UpdateProjectsDOI extends Command * * @var string */ - protected $description = 'Update DataCite DOI metadata of all the projects updated before or after a given date.'; + protected $description = 'Update DataCite DOI metadata of all the projects, studies, and datasets updated before or after a given date.'; /** * The DOI service instance. @@ -56,20 +57,24 @@ public function handle() $date = $this->argument('update-date'); $date = $date ? Carbon::parse($date) : null; - // Fetch the projects based on the date + // Fetch the projects and samples (studies) based on the date $projects = $date ? Project::where('updated_at', $operator, $date)->get() : Project::all(); + $studies = $date ? Study::where('updated_at', $operator, $date)->get() : Study::all(); + + // Cover all studies within or without projects + foreach ($studies as $study) { + echo $study->identifier."\r\n"; + foreach ($study->datasets as $dataset) { + echo $dataset->identifier."\r\n"; + $dataset->updateDOIMetadata($this->doiService); + $dataset->addRelatedIdentifiers($this->doiService); + } + $study->updateDOIMetadata($this->doiService); + $study->addRelatedIdentifiers($this->doiService); + } + foreach ($projects as $project) { echo $project->identifier."\r\n"; - foreach ($project->studies as $study) { - echo $study->identifier."\r\n"; - foreach ($study->datasets as $dataset) { - echo $dataset->identifier."\r\n"; - $dataset->updateDOIMetadata($this->doiService); - $dataset->addRelatedIdentifiers($this->doiService); - } - $study->updateDOIMetadata($this->doiService); - $study->addRelatedIdentifiers($this->doiService); - } $project->updateDOIMetadata($this->doiService); $project->addRelatedIdentifiers($this->doiService); }