Fix: export actions and their results in csv even when action does not have...

This commit is contained in:
2025-11-05 08:47:49 +00:00
committed by Julien Fastré
parent 9c2abb2dfa
commit ffb8183d4d
2 changed files with 31 additions and 12 deletions

View File

@@ -42,28 +42,41 @@ final readonly class SocialActionCSVExportService
$csv->insertOne($headers);
foreach ($actions as $action) {
if ($action->getGoals()->isEmpty() && $action->getResults()->isEmpty() && $action->getEvaluations()->isEmpty()) {
$hasGoals = !$action->getGoals()->isEmpty();
$hasResults = !$action->getResults()->isEmpty();
$hasEvaluations = !$action->getEvaluations()->isEmpty();
// If action has no goals, results, or evaluations, insert a single row
if (!$hasGoals && !$hasResults && !$hasEvaluations) {
$csv->insertOne($this->formatRow($action));
continue;
}
foreach ($action->getGoals() as $goal) {
if ($goal->getResults()->isEmpty()) {
$csv->insertOne($this->formatRow($action, $goal));
}
foreach ($goal->getResults() as $goalResult) {
$csv->insertOne($this->formatRow($action, $goal, $goalResult));
// Process goals and their results
if ($hasGoals) {
foreach ($action->getGoals() as $goal) {
if ($goal->getResults()->isEmpty()) {
$csv->insertOne($this->formatRow($action, $goal));
} else {
foreach ($goal->getResults() as $goalResult) {
$csv->insertOne($this->formatRow($action, $goal, $goalResult));
}
}
}
}
foreach ($action->getResults() as $result) {
if ($result->getGoals()->isEmpty()) {
// Process results that are linked to this action (regardless of whether they have goals elsewhere)
if ($hasResults && !$hasGoals) {
foreach ($action->getResults() as $result) {
$csv->insertOne($this->formatRow($action, null, null, $result));
}
}
foreach ($action->getEvaluations() as $evaluation) {
$csv->insertOne($this->formatRow($action, evaluation: $evaluation));
// Process evaluations
if ($hasEvaluations) {
foreach ($action->getEvaluations() as $evaluation) {
$csv->insertOne($this->formatRow($action, evaluation: $evaluation));
}
}
}