Skip to content

Commit

Permalink
address feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamiras committed Feb 23, 2025
1 parent 364184f commit 2c83044
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 40 deletions.
25 changes: 4 additions & 21 deletions app/Filament/Resources/AchievementResource/Pages/Edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
use App\Filament\Enums\ImageUploadType;
use App\Filament\Resources\AchievementResource;
use App\Models\Achievement;
use App\Models\EventAchievement;
use App\Platform\Actions\SyncEventAchievementMetadataAction;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
use Illuminate\Database\Eloquent\Model;
Expand Down Expand Up @@ -63,26 +63,9 @@ protected function handleRecordUpdate(Model $record, array $data): Model
{
$record->fill($data);

// copy the updated badge/title/description to any active event achievements referencing it.
if ($record->isDirty('BadgeName')
|| $record->isDirty('Title')
|| $record->isDirty('Description')) {

/** @var Achievement $achievement */
$achievement = $record;

$eventAchievements = EventAchievement::with(['achievement'])
->where('source_achievement_id', $achievement->id)
->active()
->get();

foreach ($eventAchievements as $eventAchievement) {
$eventAchievement->achievement->BadgeName = $achievement->BadgeName;
$eventAchievement->achievement->Title = $achievement->Title;
$eventAchievement->achievement->Description = $achievement->Description;
$eventAchievement->achievement->save();
}
}
/** @var Achievement $achievement */
$achievement = $record;
(new SyncEventAchievementMetadataAction())->execute($achievement);

$record->save();

Expand Down
22 changes: 3 additions & 19 deletions app/Helpers/database/achievement.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
use App\Community\Enums\ArticleType;
use App\Enums\Permissions;
use App\Models\Achievement;
use App\Models\EventAchievement;
use App\Models\User;
use App\Platform\Actions\SyncAchievementSetOrderColumnsFromDisplayOrdersAction;
use App\Platform\Actions\SyncEventAchievementMetadataAction;
use App\Platform\Actions\UpsertTriggerVersionAction;
use App\Platform\Enums\AchievementAuthorTask;
use App\Platform\Enums\AchievementFlag;
Expand Down Expand Up @@ -392,6 +392,8 @@ function UploadNewAchievement(
if ($achievement->isDirty()) {
CauserResolver::setCauser($author);

(new SyncEventAchievementMetadataAction())->execute($achievement);

$achievement->DateModified = now();
$achievement->save();

Expand Down Expand Up @@ -449,24 +451,6 @@ function UploadNewAchievement(
);
}
}

// copy the updated badge/title/description to any active event achievements referencing it.
if (in_array('badge', $fields)
|| in_array('title', $fields)
|| in_array('description', $fields)) {

$eventAchievements = EventAchievement::with(['achievement'])
->where('source_achievement_id', $achievement->id)
->active()
->get();

foreach ($eventAchievements as $eventAchievement) {
$eventAchievement->achievement->BadgeName = $badge;
$eventAchievement->achievement->Title = $title;
$eventAchievement->achievement->Description = $desc;
$eventAchievement->achievement->save();
}
}
}

return true;
Expand Down
35 changes: 35 additions & 0 deletions app/Platform/Actions/SyncEventAchievementMetadataAction.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php

declare(strict_types=1);

namespace App\Platform\Actions;

use App\Models\Achievement;
use App\Models\EventAchievement;

class SyncEventAchievementMetadataAction
{
/* Syncs metadata from an achievement to any event achievements
* referencing the achievement.
* NOTE: This logic relies on passing a dirty achievement (modified but not yet saved).
*/
public function execute(Achievement $achievement): void
{
if ($achievement->isDirty('BadgeName')
|| $achievement->isDirty('Title')
|| $achievement->isDirty('Description')) {

$eventAchievements = EventAchievement::with(['achievement'])
->where('source_achievement_id', $achievement->id)
->active()
->get();

foreach ($eventAchievements as $eventAchievement) {
$eventAchievement->achievement->BadgeName = $achievement->BadgeName;
$eventAchievement->achievement->Title = $achievement->Title;
$eventAchievement->achievement->Description = $achievement->Description;
$eventAchievement->achievement->save();
}
}
}
}

0 comments on commit 2c83044

Please sign in to comment.