Seeder for MEOBDA nomination rules
This commit is contained in:
parent
d7da1d4b7f
commit
2e5b9384f8
|
|
@ -0,0 +1,78 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\NominationEnsemble;
|
||||
use App\Models\NominationEnsembleEntry;
|
||||
use App\Models\School;
|
||||
use App\Models\Student;
|
||||
use Faker\Factory as Faker;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class MeobdaNominationEnsembleAndEntrySeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
// Clear existing nomination ensembles and nominations
|
||||
DB::statement('SET FOREIGN_KEY_CHECKS=0;');
|
||||
DB::table('nomination_ensemble_entries')->truncate();
|
||||
DB::table('nomination_ensembles')->truncate();
|
||||
DB::statement('SET FOREIGN_KEY_CHECKS=1;');
|
||||
|
||||
// Create First Year Ensemble
|
||||
$ensemble = new NominationEnsemble();
|
||||
$ensemble->name = 'Fake Band';
|
||||
$ensemble->entry_deadline = '2028-01-01';
|
||||
$ensemble->minimum_grade = 5;
|
||||
$ensemble->maximum_grade = 8;
|
||||
$instrumentNames = [
|
||||
'Flute',
|
||||
'Oboe',
|
||||
'Bassoon',
|
||||
'Clarinet',
|
||||
'Bass Clarinet',
|
||||
'Contra Clarinet',
|
||||
'Alto Sax',
|
||||
'Tenor Sax',
|
||||
'Bari Sax',
|
||||
'Trumpet',
|
||||
'Horn',
|
||||
'Trombone',
|
||||
'Euphonium',
|
||||
'Tuba',
|
||||
'String Bass',
|
||||
'Percussion',
|
||||
];
|
||||
foreach ($instrumentNames as $name) {
|
||||
$instruments[] = [
|
||||
'name' => $name,
|
||||
'max' => null,
|
||||
];
|
||||
}
|
||||
$data = [
|
||||
'instruments' => $instruments,
|
||||
'max_nominations' => 8,
|
||||
'split_names' => ['Fake Red', 'Fake Black'],
|
||||
];
|
||||
$ensemble->data = $data;
|
||||
$ensemble->save();
|
||||
|
||||
// Fill the nominations table
|
||||
$faker = Faker::create();
|
||||
$schools = School::all();
|
||||
foreach ($schools as $school) {
|
||||
$students = Student::factory()->count(10)->create(['school_id' => $school->id, 'grade' => 5]);
|
||||
foreach ($students as $student) {
|
||||
$nomData = [
|
||||
'instrument' => $faker->randomElement($instrumentNames),
|
||||
];
|
||||
NominationEnsembleEntry::create([
|
||||
'student_id' => $student->id,
|
||||
'nomination_ensemble_id' => $ensemble->id,
|
||||
'data' => $nomData,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue