Provide for switching implementation of nomination ensemble rules based on audition setting.

This commit is contained in:
Matt Young 2025-02-12 18:15:27 -06:00
parent e3373cc217
commit b68b84c4dd
5 changed files with 52 additions and 6 deletions

View File

@ -33,7 +33,7 @@ class AuditionSettings extends Controller
'payment_state' => ['required', 'max:2'], 'payment_state' => ['required', 'max:2'],
'payment_zip' => ['required', 'min:5'], 'payment_zip' => ['required', 'min:5'],
'advanceTo' => ['nullable'], '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 // Options should align with the boot method of NominationEnsembleServiceProvider
]); ]);

View File

@ -71,10 +71,10 @@ class AppServiceProvider extends ServiceProvider
$this->app->singleton(SetHeadDirector::class, SetHeadDirector::class); $this->app->singleton(SetHeadDirector::class, SetHeadDirector::class);
// Nomination Ensemble // Nomination Ensemble
$this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class); // $this->app->bind(NominationEnsembleController::class, ScobdaNominationEnsembleController::class);
$this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class); // $this->app->bind(NominationEnsembleEntryController::class, ScobdaNominationEnsembleEntryController::class);
$this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class); // $this->app->bind(NominationAdminController::class, ScobdaNominationAdminController::class);
$this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class); // $this->app->bind(NominationSeatingController::class, ScobdaNominationSeatingController::class);
} }
/** /**
@ -82,7 +82,6 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
Entry::observe(EntryObserver::class); Entry::observe(EntryObserver::class);
Audition::observe(AuditionObserver::class); Audition::observe(AuditionObserver::class);
Room::observe(RoomObserver::class); Room::observe(RoomObserver::class);

View File

@ -0,0 +1,43 @@
<?php
namespace App\Providers;
use App\Http\Controllers\NominationEnsembles\MeobdaNominationEnsembleController;
use App\Http\Controllers\NominationEnsembles\NominationAdminController;
use App\Http\Controllers\NominationEnsembles\NominationEnsembleController;
use App\Http\Controllers\NominationEnsembles\NominationEnsembleEntryController;
use App\Http\Controllers\NominationEnsembles\NominationSeatingController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationAdminController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationEnsembleEntryController;
use App\Http\Controllers\NominationEnsembles\ScobdaNominationSeatingController;
use Illuminate\Support\ServiceProvider;
use function auditionSetting;
class NominationEnsembleServiceProvider extends ServiceProvider
{
public function register(): void
{
$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);
}
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);
}
}
}

View File

@ -6,4 +6,5 @@ return [
App\Providers\InvoiceDataServiceProvider::class, App\Providers\InvoiceDataServiceProvider::class,
App\Providers\PrintCardActionProvider::class, App\Providers\PrintCardActionProvider::class,
Barryvdh\Debugbar\ServiceProvider::class, Barryvdh\Debugbar\ServiceProvider::class,
App\Providers\NominationEnsembleServiceProvider::class,
]; ];

View File

@ -28,6 +28,9 @@
<option value="scobda" {{ auditionSetting('nomination_ensemble_rules') === 'scobda' ? 'selected':'' }}> <option value="scobda" {{ auditionSetting('nomination_ensemble_rules') === 'scobda' ? 'selected':'' }}>
SCOBDA Rules SCOBDA Rules
</option> </option>
<option value="meobda" {{ auditionSetting('nomination_ensemble_rules') === 'meobda' ? 'selected':'' }}>
MEOBDA Rules
</option>
</x-form.select> </x-form.select>
</x-form.body-grid> </x-form.body-grid>
</x-layout.page-section> </x-layout.page-section>