diff --git a/app/Http/Controllers/Admin/AuditionController.php b/app/Http/Controllers/Admin/AuditionController.php index 808fcfc..d51cf8c 100644 --- a/app/Http/Controllers/Admin/AuditionController.php +++ b/app/Http/Controllers/Admin/AuditionController.php @@ -117,6 +117,22 @@ class AuditionController extends Controller return response()->json(['status' => 'success']); } + public function scoringGuideUpdate(Request $request) + { + + $audition = Audition::find($request->audition_id); + + if ($audition) { + $audition->update([ + 'scoring_guide_id' => $request->new_guide_id + ]); + + return response()->json(['success' => true]); + } + + return response()->json(['success' => false], 404); + } + public function destroy(Audition $audition) { if(! Auth::user()->is_admin) abort(403); diff --git a/app/Http/Controllers/Admin/ScoringGuideController.php b/app/Http/Controllers/Admin/ScoringGuideController.php index fee3fa4..e40309d 100644 --- a/app/Http/Controllers/Admin/ScoringGuideController.php +++ b/app/Http/Controllers/Admin/ScoringGuideController.php @@ -7,6 +7,7 @@ use App\Models\ScoringGuide; use App\Models\SubscoreDefinition; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\DB; use function abort; use function dd; use function request; @@ -18,7 +19,10 @@ class ScoringGuideController extends Controller public function index() { if (! Auth::user()->is_admin) abort(403); - $guides = ScoringGuide::orderBy('name')->get(); + DB::table('auditions') + ->whereNull('scoring_guide_id') + ->update(['scoring_guide_id' => 0]); + $guides = ScoringGuide::with('auditions')->orderBy('name')->get(); return view('admin.scoring.index',['guides'=>$guides]); } diff --git a/app/Models/Audition.php b/app/Models/Audition.php index eac0da0..689be7a 100644 --- a/app/Models/Audition.php +++ b/app/Models/Audition.php @@ -35,6 +35,11 @@ class Audition extends Model return $this->belongsTo(Room::class); } + public function scoringGuide(): BelongsTo + { + return $this->belongsTo(ScoringGuide::class); + } + public function dislpay_fee(): String { return '$' . number_format($this->entry_fee / 100, 2); diff --git a/app/Models/ScoringGuide.php b/app/Models/ScoringGuide.php index 97c2b7f..f32d3f1 100644 --- a/app/Models/ScoringGuide.php +++ b/app/Models/ScoringGuide.php @@ -4,9 +4,15 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasMany; class ScoringGuide extends Model { use HasFactory; protected $guarded = []; + + public function auditions(): HasMany + { + return $this->hasMany(Audition::class)->orderBy('score_order'); + } } diff --git a/database/migrations/2024_06_04_205015_ensure_room_id_0_for_unassigned_entries.php b/database/migrations/2024_06_04_205015_ensure_room_id_0_for_unassigned_entries.php index 922db69..1c28c98 100644 --- a/database/migrations/2024_06_04_205015_ensure_room_id_0_for_unassigned_entries.php +++ b/database/migrations/2024_06_04_205015_ensure_room_id_0_for_unassigned_entries.php @@ -1,6 +1,7 @@ 0, - 'name' => 'Unassigned', - 'description' => 'These auditions have no room', - ], - uniqueBy: ['id'], - update: ['name','description'] - ); + if (! Room::find(0)) { + $room = Room::create([ + 'id' => 0, + 'name' => 'No Guide Assigned' + ]); + $room->update([ + 'id' => 0 + ]); + } } /** diff --git a/database/migrations/2024_06_05_011858_add_scoring_guide_id_column_to_auditions_table.php b/database/migrations/2024_06_05_011858_add_scoring_guide_id_column_to_auditions_table.php new file mode 100644 index 0000000..c1f7640 --- /dev/null +++ b/database/migrations/2024_06_05_011858_add_scoring_guide_id_column_to_auditions_table.php @@ -0,0 +1,41 @@ +foreignIdFor(ScoringGuide::class)->nullable()->constrained()->cascadeOnUpdate()->nullOnDelete(); + }); + + if (! ScoringGuide::find(0)) { + $sg = ScoringGuide::create([ + 'id' => 0, + 'name' => 'No Guide Assigned' + ]); + $sg->update([ + 'id' => 0 + ]); + } + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('auditions', function (Blueprint $table) { + $table->dropForeignIdFor(ScoringGuide::class); + $table->dropColumn('scoring_guide_id'); + }); + } +}; diff --git a/resources/views/admin/rooms/scratch.blade.php b/resources/views/admin/rooms/scratch.blade.php index ffa5a27..1c939b6 100644 --- a/resources/views/admin/rooms/scratch.blade.php +++ b/resources/views/admin/rooms/scratch.blade.php @@ -1,46 +1,50 @@ -
attributes->merge(['class' => 'mt-2 text-sm text-gray-700']) }}>{{ $subtitle }}
@endif diff --git a/resources/views/test.blade.php b/resources/views/test.blade.php index 76e0f8e..40b0b49 100644 --- a/resources/views/test.blade.php +++ b/resources/views/test.blade.php @@ -1,8 +1,11 @@ -@php use App\Models\Audition;use App\Models\School;use App\Models\SchoolEmailDomain;use App\Models\User;use App\Settings;use Illuminate\Support\Facades\Auth;use Illuminate\Support\Facades\Session; @endphp +@php use App\Models\Audition;use App\Models\School;use App\Models\SchoolEmailDomain;use App\Models\ScoringGuide;use App\Models\User;use App\Settings;use Illuminate\Support\Facades\Auth;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Session; @endphp