Skip to content

Commit

Permalink
- [x] Fix completeness calculation on listing page
Browse files Browse the repository at this point in the history
  • Loading branch information
PG-Momik committed Jan 28, 2025
1 parent 75e695c commit 78d1589
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 25 deletions.
12 changes: 10 additions & 2 deletions app/Console/Commands/RefreshActivityElementCompleteness.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
use Exception;
use Illuminate\Console\Command;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB;

/**
Expand Down Expand Up @@ -52,15 +53,22 @@ public function handle(): void
$methodName = dashesToCamelCase('is_' . $element . '_element_completed');

if (method_exists($elementCompleteService, $methodName)) {
$elementStatus[$element] = $elementCompleteService->$methodName($activity);
if ($element === 'reporting_org') {
$organization = $activity->organization;
$elementStatus[$element] = Arr::get($organization, 'element_status.reporting_org', false);
} else {
$elementStatus[$element] = $elementCompleteService->$methodName($activity);
}
}
}

$elementStatus['result'] = $elementCompleteService->isResultElementCompleted($activity);
$elementStatus['transactions'] = $elementCompleteService->isTransactionsElementCompleted($activity);

$complete_percentage = $elementCompleteService->calculateCompletePercentage($elementStatus);

$activity->timestamps = false;
$activity->updateQuietly(['element_status' => $elementStatus]);
$activity->updateQuietly(['element_status' => $elementStatus, 'complete_percentage' => $complete_percentage]);

$this->info("Completed for activity: $activity->id");
$this->info('---------------------------------------');
Expand Down
15 changes: 6 additions & 9 deletions app/IATI/Services/Activity/ActivityService.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,17 +85,14 @@ public function getPaginatedActivities(int $page, array $queryParams): Collectio
$page
);

$orgReportingOrgStatus = Arr::get(\auth()->user()->organization, 'element_status.reporting_org', false);

foreach ($activities as $idx => $activity) {
$activities[$idx]['default_title_narrative'] = $activity->default_title_narrative;
$activity->setAttribute(
'coreCompleted',
isCoreElementCompleted(
array_merge(
['reporting_org' => $activity->organization->reporting_org_element_completed],
$activity->element_status
)
)
);
$elementStatus = $activity->element_status;
$elementStatus['reporting_org'] = $orgReportingOrgStatus;

$activity->setAttribute('coreCompleted', isCoreElementCompleted($elementStatus));
}

return $activities;
Expand Down
12 changes: 8 additions & 4 deletions app/IATI/Services/ElementCompleteService.php
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ public function isSectorElementCompleted($activity): bool

foreach ($activity->sector as $sector) {
$sectorVocab = Arr::get($sector, 'sector_vocabulary') ?? null;
$codeKey = $this->getSectorCodeKeyBasedOnVocab($sectorVocab);
$codeKey = $this->getSectorCodeKeyBasedOnVocab((string) $sectorVocab);

if ($this->isEmptyValue(Arr::get($sector, $codeKey))) {
return false;
Expand All @@ -397,7 +397,7 @@ public function isSectorElementCompletedInTransaction(Activity $activity): bool
foreach (Arr::get($transaction, 'transaction.sector', []) as $sector) {
if (!is_array_value_empty($sector)) {
$sectorVocab = Arr::get($sector, 'sector_vocabulary') ?? null;
$codeKey = $this->getSectorCodeKeyBasedOnVocab($sectorVocab);
$codeKey = $this->getSectorCodeKeyBasedOnVocab((string) $sectorVocab);

if ($this->isEmptyValue(Arr::get($sector, $codeKey))) {
return false;
Expand Down Expand Up @@ -1214,7 +1214,11 @@ public function refreshElementStatus($activity): void
$methodName = dashesToCamelCase('is_' . $attribute . '_element_completed');

if (is_callable([$this, $methodName])) {
$elementStatus[$attribute] = call_user_func([$this, $methodName], $activity);
if ($attribute === 'reporting_org') {
$elementStatus[$attribute] = Arr::get(auth()->user()->organization, 'element_status.reporting_org', false);
} else {
$elementStatus[$attribute] = call_user_func([$this, $methodName], $activity);
}
}
}

Expand Down Expand Up @@ -1320,7 +1324,7 @@ public function refreshDeprecationStatusMap($activity): void
*/
public function isEmptyValue($value): bool
{
return trim($value ?? '') === '';
return $value === null || (is_string($value) && trim($value) === '');
}

/**
Expand Down
2 changes: 0 additions & 2 deletions app/Observers/TransactionObserver.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ public function __construct()
*/
public function updateActivityElementStatus($transaction, bool $changeUpdatedAt = true): void
{
logger('transaction observer called');
$activityObj = $transaction->activity;
$elementStatus = $activityObj->element_status;

Expand Down Expand Up @@ -113,7 +112,6 @@ public function created(Transaction $transaction): void
*/
public function updated(Transaction $transaction): void
{
logger('ypdated call jula');
$this->updateActivityElementStatus($transaction);
$this->resetActivityStatus($transaction);
$this->setTransactionDefaultValues($transaction);
Expand Down
16 changes: 8 additions & 8 deletions public/mix-manifest.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"/js/app.js": "/js/app.js?id=389584d278afd9afe8aada34baecb35d",
"/js/script.js": "/js/script.js?id=5022c99737e05b78f00088f76a8a0f9f",
"/js/webportal-script.js": "/js/webportal-script.js?id=1bcae4271c042a8b79b241f34a1653fc",
"/js/formbuilder.js": "/js/formbuilder.js?id=61b98dc742ffedfa84ee6995cd9691c5",
"/manifest.js": "/manifest.js?id=3ed1124c8f4dcb98acc36de67cb80349",
"/css/webportal-app.css": "/css/webportal-app.css?id=af8ac750f9e32cd730d74440f0aa1c0a",
"/css/app.css": "/css/app.css?id=49c20c5d30e48e7ad9788f2521851589",
"/js/vendor.js": "/js/vendor.js?id=1d9dc84f31934bcf90e4083803feee6b"
"/js/app.js": "/js/app.js",
"/js/script.js": "/js/script.js",
"/js/webportal-script.js": "/js/webportal-script.js",
"/js/formbuilder.js": "/js/formbuilder.js",
"/manifest.js": "/manifest.js",
"/css/webportal-app.css": "/css/webportal-app.css",
"/css/app.css": "/css/app.css",
"/js/vendor.js": "/js/vendor.js"
}

0 comments on commit 78d1589

Please sign in to comment.