diff --git a/src/Commands/Seat/Filters/Update.php b/src/Commands/Seat/Filters/Update.php new file mode 100644 index 000000000..e371efda0 --- /dev/null +++ b/src/Commands/Seat/Filters/Update.php @@ -0,0 +1,57 @@ +onQueue('high'); + $this->line('Scheduled character filter updates for all characters!'); + } +} diff --git a/src/Jobs/UpdateCharacterFilters.php b/src/Jobs/UpdateCharacterFilters.php new file mode 100644 index 000000000..d9ad3347f --- /dev/null +++ b/src/Jobs/UpdateCharacterFilters.php @@ -0,0 +1,55 @@ +character)); + } +} diff --git a/src/Observers/CharacterAffiliationObserver.php b/src/Observers/CharacterAffiliationObserver.php deleted file mode 100644 index 116179fa5..000000000 --- a/src/Observers/CharacterAffiliationObserver.php +++ /dev/null @@ -1,64 +0,0 @@ -fireCharacterFilterEvent($affiliation); - } - - /** - * @param \Seat\Eveapi\Models\Character\CharacterAffiliation $affiliation - */ - public function updated(CharacterAffiliation $affiliation) - { - $this->fireCharacterFilterEvent($affiliation); - } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - // CharacterAffiliation links to UniverseName instead of CharacterInfo - return CharacterInfo::find($fired_model->character_id); - } -} diff --git a/src/Observers/CharacterAssetObserver.php b/src/Observers/CharacterAssetObserver.php deleted file mode 100644 index 67f2b9f15..000000000 --- a/src/Observers/CharacterAssetObserver.php +++ /dev/null @@ -1,71 +0,0 @@ -fireCharacterFilterEvent($asset); - } - - /** - * @param \Seat\Eveapi\Models\Assets\CharacterAsset $asset - */ - public function updated(CharacterAsset $asset) - { - $this->fireCharacterFilterEvent($asset); - } - - /** - * @param \Seat\Eveapi\Models\Assets\CharacterAsset $asset - */ - public function deleted(CharacterAsset $asset) - { - $this->fireCharacterFilterEvent($asset); - } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - return $fired_model->character; - } -} diff --git a/src/Observers/CharacterRoleObserver.php b/src/Observers/CharacterRoleObserver.php index 688f6f9b1..41fb4c431 100644 --- a/src/Observers/CharacterRoleObserver.php +++ b/src/Observers/CharacterRoleObserver.php @@ -23,27 +23,22 @@ namespace Seat\Web\Observers; use Exception; -use Illuminate\Database\Eloquent\Model; use Seat\Eveapi\Bus\Corporation; -use Seat\Eveapi\Models\Character\CharacterInfo; use Seat\Eveapi\Models\Character\CharacterRole; use Seat\Eveapi\Models\RefreshToken; -use Seat\Web\Models\User; /** * Class CharacterRoleObserver. * * @package Seat\Web\Observers */ -class CharacterRoleObserver extends AbstractCharacterFilterObserver +class CharacterRoleObserver { /** * @param \Seat\Eveapi\Models\Character\CharacterRole $role */ public function created(CharacterRole $role) { - $this->fireCharacterFilterEvent($role); - // in case the created role is not a Director role, ignore if ($role->role != 'Director') return; @@ -62,31 +57,4 @@ public function created(CharacterRole $role) logger()->error($e->getMessage()); } } - - /** - * @param \Seat\Eveapi\Models\Character\CharacterRole $role - */ - public function updated(CharacterRole $role) - { - $this->fireCharacterFilterEvent($role); - } - - /** - * @param \Seat\Eveapi\Models\Character\CharacterRole $role - */ - public function deleted(CharacterRole $role) - { - $this->fireCharacterFilterEvent($role); - } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - return $fired_model->character; - } } diff --git a/src/Observers/CharacterSkillObserver.php b/src/Observers/CharacterSkillObserver.php deleted file mode 100644 index f3c7e1820..000000000 --- a/src/Observers/CharacterSkillObserver.php +++ /dev/null @@ -1,84 +0,0 @@ -fireCharacterFilterEvent($skill); - } - - /** - * @param \Seat\Eveapi\Models\Character\CharacterSkill $skill - */ - public function updated(CharacterSkill $skill) - { - $this->fireCharacterFilterEvent($skill); - } - - /** - * @param \Seat\Eveapi\Models\Character\CharacterSkill $skill - */ - public function deleted(CharacterSkill $skill) - { - $this->fireCharacterFilterEvent($skill); - } - - /** - * {@inheritdoc} - */ - protected function findRelatedUser(Model $fired_model): ?User - { - // retrieve user related to the character affiliation - return User::with('squads') - ->standard() - ->whereHas('characters', function ($query) use ($fired_model) { - $query->where('character_infos.character_id', $fired_model->character_id); - })->first(); - } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - return $fired_model->character; - } -} diff --git a/src/Observers/CharacterTitleObserver.php b/src/Observers/CharacterTitleObserver.php deleted file mode 100644 index d01b033fd..000000000 --- a/src/Observers/CharacterTitleObserver.php +++ /dev/null @@ -1,71 +0,0 @@ -fireCharacterFilterEvent($title); - } - - /** - * @param \Seat\Eveapi\Models\Assets\CharacterAsset $asset - */ - public function updated(CharacterTitle $title) - { - $this->fireCharacterFilterEvent($title); - } - - /** - * @param \Seat\Eveapi\Models\Assets\CharacterAsset $asset - */ - public function deleted(CharacterTitle $title) - { - $this->fireCharacterFilterEvent($title); - } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - return CharacterInfo::find($fired_model->character_id); - } -} diff --git a/src/Observers/RefreshTokenObserver.php b/src/Observers/RefreshTokenObserver.php index 901e91bef..1cd581baa 100644 --- a/src/Observers/RefreshTokenObserver.php +++ b/src/Observers/RefreshTokenObserver.php @@ -23,18 +23,15 @@ namespace Seat\Web\Observers; use Exception; -use Illuminate\Database\Eloquent\Model; use Seat\Eveapi\Bus\Character; -use Seat\Eveapi\Models\Character\CharacterInfo; use Seat\Eveapi\Models\RefreshToken; -use Seat\Web\Models\User; /** * Class RefreshTokenObserver. * * @package Seat\Web\Observers */ -class RefreshTokenObserver extends AbstractCharacterFilterObserver +class RefreshTokenObserver { /** * @param \Seat\Eveapi\Models\RefreshToken $token @@ -44,41 +41,6 @@ public function created(RefreshToken $token) try { $job = new Character($token->character_id, $token); $job->fire(); - - // enqueue squads update - $this->fireCharacterFilterEvent($token); - } catch (Exception $e) { - logger()->error($e->getMessage()); - } - } - - /** - * @param \Seat\Eveapi\Models\RefreshToken $token - */ - public function updated(RefreshToken $token) - { - try { - $this->fireCharacterFilterEvent($token); - } catch (Exception $e) { - logger()->error($e->getMessage()); - } - } - - /** - * @param \Seat\Eveapi\Models\RefreshToken $token - */ - public function softDeleted(RefreshToken $token) - { - $this->deleted($token); - } - - /** - * @param \Seat\Eveapi\Models\RefreshToken $token - */ - public function deleted(RefreshToken $token) - { - try { - $this->fireCharacterFilterEvent($token); } catch (Exception $e) { logger()->error($e->getMessage()); } @@ -92,22 +54,8 @@ public function restored(RefreshToken $token) try { $job = new Character($token->character_id, $token); $job->fire(); - - // enqueue squads update - $this->fireCharacterFilterEvent($token); } catch (Exception $e) { logger()->error($e->getMessage()); } } - - /** - * Return the User owning the model which fired the catch event. - * - * @param \Illuminate\Database\Eloquent\Model $fired_model The model which fired the catch event - * @return ?CharacterInfo The character that is affected by this update - */ - protected function findRelatedCharacter(Model $fired_model): ?CharacterInfo - { - return $fired_model->character; - } } diff --git a/src/WebServiceProvider.php b/src/WebServiceProvider.php index e503a832e..ba3b9aee1 100644 --- a/src/WebServiceProvider.php +++ b/src/WebServiceProvider.php @@ -32,16 +32,13 @@ use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Validator; use Laravel\Horizon\Horizon; -use Seat\Eveapi\Models\Assets\CharacterAsset; -use Seat\Eveapi\Models\Character\CharacterAffiliation; use Seat\Eveapi\Models\Character\CharacterRole; -use Seat\Eveapi\Models\Character\CharacterSkill; use Seat\Eveapi\Models\RefreshToken; -use Seat\Eveapi\Pivot\Character\CharacterTitle; use Seat\Services\AbstractSeatPlugin; use Seat\Services\Settings\Profile; use Seat\Services\Settings\Seat; -use Seat\Web\Commands\Seat\Admin\Login as AdminLogin; +use Seat\Web\Commands\Seat\Admin\Login as AdminLoginCommand; +use Seat\Web\Commands\Seat\Filters\Update as FilterUpdateCommand; use Seat\Web\Database\Seeders\ScheduleSeeder; use Seat\Web\Events\Attempt; use Seat\Web\Events\CharacterFilterDataUpdate; @@ -62,15 +59,12 @@ use Seat\Web\Http\Middleware\Locale; use Seat\Web\Http\Middleware\RegistrationAllowed; use Seat\Web\Http\Middleware\Requirements; +use Seat\Web\Listeners\CharacterBatchProcessed; use Seat\Web\Listeners\CharacterFilterDataUpdatedSquads; use Seat\Web\Listeners\CharacterFilterDataUpdatedTokens; use Seat\Web\Models\Squads\SquadMember; use Seat\Web\Models\Squads\SquadRole; -use Seat\Web\Observers\CharacterAffiliationObserver; -use Seat\Web\Observers\CharacterAssetObserver; use Seat\Web\Observers\CharacterRoleObserver; -use Seat\Web\Observers\CharacterSkillObserver; -use Seat\Web\Observers\CharacterTitleObserver; use Seat\Web\Observers\RefreshTokenObserver; use Seat\Web\Observers\SquadMemberObserver; use Seat\Web\Observers\SquadRoleObserver; @@ -302,6 +296,7 @@ private function add_events() // Custom Events Event::listen('security.log', SecLog::class); + Event::listen(\Seat\Eveapi\Events\CharacterBatchProcessed::class, CharacterBatchProcessed::class); Event::listen(CharacterFilterDataUpdate::class, CharacterFilterDataUpdatedSquads::class); Event::listen(CharacterFilterDataUpdate::class, CharacterFilterDataUpdatedTokens::class); @@ -310,10 +305,6 @@ private function add_events() RefreshToken::observe(RefreshTokenObserver::class); // Squads Events - CharacterAffiliation::observe(CharacterAffiliationObserver::class); - CharacterAsset::observe(CharacterAssetObserver::class); - CharacterSkill::observe(CharacterSkillObserver::class); - CharacterTitle::observe(CharacterTitleObserver::class); SquadMember::observe(SquadMemberObserver::class); SquadRole::observe(SquadRoleObserver::class); } @@ -422,7 +413,8 @@ private function register_services() private function addCommands() { $this->commands([ - AdminLogin::class, + AdminLoginCommand::class, + FilterUpdateCommand::class, ]); } diff --git a/src/database/seeders/ScheduleSeeder.php b/src/database/seeders/ScheduleSeeder.php index 8db64b1fb..cc9f2d842 100644 --- a/src/database/seeders/ScheduleSeeder.php +++ b/src/database/seeders/ScheduleSeeder.php @@ -47,6 +47,14 @@ public function getSchedules(): array 'ping_before' => null, 'ping_after' => null, ], + [ + 'command' => 'seat:filters:update', + 'expression' => sprintf('%d * * * *', rand(0, 59)), + 'allow_overlap' => false, + 'allow_maintenance' => false, + 'ping_before' => null, + 'ping_after' => null, + ], ]; }