81 lines
2.4 KiB
PHP
81 lines
2.4 KiB
PHP
<?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 ScobdaNominationEnsembleAndEntrySeeder 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 = 'First Year Band';
|
|
$ensemble->entry_deadline = '2028-01-01';
|
|
$ensemble->minimum_grade = 5;
|
|
$ensemble->maximum_grade = 8;
|
|
$instruments = [
|
|
'Flute',
|
|
'Oboe',
|
|
'Bassoon',
|
|
'Clarinet',
|
|
'Bass Clarinet',
|
|
'Contra Clarinet',
|
|
'Alto Sax',
|
|
'Tenor Sax',
|
|
'Bari Sax',
|
|
'Trumpet',
|
|
'Horn',
|
|
'Trombone',
|
|
'Euphonium',
|
|
'Tuba',
|
|
'String Bass',
|
|
'Percussion',
|
|
];
|
|
$data = [
|
|
'instruments' => $instruments,
|
|
'target_size' => 100,
|
|
'max_nominations' => 10,
|
|
'rounding_direction' => 'up',
|
|
];
|
|
$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,
|
|
'optional_data' => ['shirt_size' => $faker->randomElement(['S', 'M', 'L', 'XL', '2XL'])],
|
|
]);
|
|
$n = 1;
|
|
foreach ($students as $student) {
|
|
$nomData = [
|
|
'rank' => $n,
|
|
'instrument' => $faker->randomElement($instruments),
|
|
];
|
|
NominationEnsembleEntry::create([
|
|
'student_id' => $student->id,
|
|
'nomination_ensemble_id' => $ensemble->id,
|
|
'data' => $nomData,
|
|
]);
|
|
$n++;
|
|
}
|
|
}
|
|
}
|
|
}
|