From b68b84c4dd7d3ac6c1d8aaa037d6ab4d52af69ed Mon Sep 17 00:00:00 2001 From: Matt Young Date: Wed, 12 Feb 2025 18:15:27 -0600 Subject: [PATCH] Provide for switching implementation of nomination ensemble rules based on audition setting. --- .../Controllers/Admin/AuditionSettings.php | 2 +- app/Providers/AppServiceProvider.php | 9 ++-- .../NominationEnsembleServiceProvider.php | 43 +++++++++++++++++++ bootstrap/providers.php | 1 + .../views/admin/audition-settings.blade.php | 3 ++ 5 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 app/Providers/NominationEnsembleServiceProvider.php diff --git a/app/Http/Controllers/Admin/AuditionSettings.php b/app/Http/Controllers/Admin/AuditionSettings.php index b02a8be..665dd06 100644 --- a/app/Http/Controllers/Admin/AuditionSettings.php +++ b/app/Http/Controllers/Admin/AuditionSettings.php @@ -33,7 +33,7 @@ class AuditionSettings extends Controller 'payment_state' => ['required', 'max:2'], 'payment_zip' => ['required', 'min:5'], 'advanceTo' => ['nullable'], - 'nomination_ensemble_rules' => ['required', 'in:disabled,scobda'], + 'nomination_ensemble_rules' => ['required', 'in:disabled,scobda,meobda'], // Options should align with the boot method of NominationEnsembleServiceProvider ]); diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 7c22988..5211a7e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -71,10 +71,10 @@ class AppServiceProvider extends ServiceProvider $this->app->singleton(SetHeadDirector::class, SetHeadDirector::class); // Nomination Ensemble - $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); - $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class); - $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); - $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); + // $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); + // $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class); + // $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); + // $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); } /** @@ -82,7 +82,6 @@ class AppServiceProvider extends ServiceProvider */ public function boot(): void { - Entry::observe(EntryObserver::class); Audition::observe(AuditionObserver::class); Room::observe(RoomObserver::class); diff --git a/app/Providers/NominationEnsembleServiceProvider.php b/app/Providers/NominationEnsembleServiceProvider.php new file mode 100644 index 0000000..606494a --- /dev/null +++ b/app/Providers/NominationEnsembleServiceProvider.php @@ -0,0 +1,43 @@ +app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); + $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class); + $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); + $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); + } + + public function boot(): void + { + if (auditionSetting('nomination_ensemble_rules') === 'scobda') { + $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); + $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class); + $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); + $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); + } + + if (auditionSetting('nomination_ensemble_rules') === 'meobda') { + + // meobda implementation + $this->app->bind(NominationEnsembleController::class, MeobdaNominationEnsembleController::class); + } + } +} diff --git a/bootstrap/providers.php b/bootstrap/providers.php index eeeccb0..b64af49 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -6,4 +6,5 @@ return [ App\Providers\InvoiceDataServiceProvider::class, App\Providers\PrintCardActionProvider::class, Barryvdh\Debugbar\ServiceProvider::class, + App\Providers\NominationEnsembleServiceProvider::class, ]; diff --git a/resources/views/admin/audition-settings.blade.php b/resources/views/admin/audition-settings.blade.php index 70a434e..adb0651 100644 --- a/resources/views/admin/audition-settings.blade.php +++ b/resources/views/admin/audition-settings.blade.php @@ -28,6 +28,9 @@ +