Initial commit
This commit is contained in:
97
database/seeders/ContestSeeder.php
Normal file
97
database/seeders/ContestSeeder.php
Normal file
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use App\Models\Contest;
|
||||
use App\Models\ContestParameter;
|
||||
use App\Models\Band;
|
||||
use App\Models\Category;
|
||||
use App\Models\PowerCategory;
|
||||
use App\Models\EvaluationRuleSet;
|
||||
|
||||
class ContestSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
Schema::disableForeignKeyConstraints();
|
||||
DB::table('contests')->truncate();
|
||||
DB::table('contests_bands')->truncate();
|
||||
DB::table('contests_categories')->truncate();
|
||||
DB::table('contests_power_categories')->truncate();
|
||||
DB::table('contests_parameters')->truncate();
|
||||
Schema::enableForeignKeyConstraints();
|
||||
|
||||
$bands = Band::all()->pluck('id')->toArray();
|
||||
$categories = Category::all()->pluck('id')->toArray();
|
||||
$powerCategories = PowerCategory::all()->pluck('id')->toArray();
|
||||
$defaultRuleSetId = EvaluationRuleSet::where('code', 'default_vhf_compat')->value('id');
|
||||
|
||||
// základní parametry dle vzoru (Y/N -> bool)
|
||||
$baseParams = [
|
||||
'ignore_slash_part' => true,
|
||||
'ignore_third_part' => true,
|
||||
'letters_in_rst' => true,
|
||||
'discard_qso_rec_diff_call' => true,
|
||||
'discard_qso_sent_diff_call' => false,
|
||||
'discard_qso_rec_diff_rst' => true,
|
||||
'discard_qso_sent_diff_rst' => false,
|
||||
'discard_qso_rec_diff_code' => true,
|
||||
'discard_qso_sent_diff_code' => false,
|
||||
'unique_qso' => false,
|
||||
'time_tolerance' => 600,
|
||||
];
|
||||
|
||||
for ($i = 1; $i <= 2; $i++) {
|
||||
$contest = new Contest();
|
||||
|
||||
// lokalizované položky přes Spatie HasTranslations
|
||||
$contest->setTranslations('name', [
|
||||
'cs' => "VKV závod {$i}",
|
||||
'en' => "VHF Contest {$i}",
|
||||
]);
|
||||
|
||||
$contest->setTranslations('description', [
|
||||
'cs' => "Oficiální VKV závod číslo {$i}.",
|
||||
'en' => "The official VHF Contest number {$i}.",
|
||||
]);
|
||||
|
||||
// nelokalizovaná data
|
||||
$contest->evaluator = 'Český radioklub';
|
||||
$contest->email = 'crk@crk.cz';
|
||||
$contest->email2 = null;
|
||||
$contest->is_mcr = true;
|
||||
$contest->is_sixhr = $i % 2 === 0;
|
||||
$contest->is_active = $i !== 5; // poslední neaktivní
|
||||
$contest->start_time = '14:00:00';
|
||||
$contest->duration = 24;
|
||||
$contest->logs_deadline_days = 3;
|
||||
$contest->rule_set_id = $defaultRuleSetId;
|
||||
|
||||
$contest->save();
|
||||
|
||||
// navázání všech pásem
|
||||
$contest->bands()->attach($bands);
|
||||
// navázání všech kategorií
|
||||
$contest->categories()->attach($categories);
|
||||
// navázání všech výkonových kategorií
|
||||
$contest->powerCategories()->attach($powerCategories);
|
||||
|
||||
// contest parameters pro oba log typy
|
||||
foreach (['STANDARD', 'CHECK'] as $logType) {
|
||||
ContestParameter::create(array_merge(
|
||||
$baseParams,
|
||||
[
|
||||
'contest_id' => $contest->id,
|
||||
'log_type' => $logType,
|
||||
]
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user