Projects/3BIT/winter-semester/IIS/xnecasr00/database/seeders/WineProductionSeeder.php
2026-04-14 19:28:46 +02:00

219 lines
7.7 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Wine;
use App\Models\Harvest;
use App\Models\WineProduction;
class WineProductionSeeder extends Seeder
{
use WithoutModelEvents;
/**
* Run the database seeds.
*/
public function run(): void
{
$wineIds = Wine::pluck('id', 'wine_name');
$harvests = Harvest::with('vineyardRow.varietyVariation.grapeVariety')
->get()
->keyBy(fn (Harvest $harvest) => ($harvest->vineyardRow?->varietyVariation->grapeVariety->variety_name ?? $harvest->vineyard_row_id) . ':' . $harvest->date->format('Y-m-d'));
$productions = [
// ========== 2024 VINTAGE WINES ==========
[
'wine_name' => 'Grüner Veltliner Young Wine',
'variety' => 'Grüner Veltliner',
'date' => '2024-09-15',
'consumed_weight' => 850.50,
'blend_percentage' => 100.00,
],
// Riesling Classic 2024 - blended from two harvests
[
'wine_name' => 'Riesling Classic',
'variety' => 'Riesling',
'date' => '2024-09-20',
'consumed_weight' => 500.00,
'blend_percentage' => 64.00,
],
[
'wine_name' => 'Riesling Classic',
'variety' => 'Riesling',
'date' => now()->subDays(18)->format('Y-m-d'),
'consumed_weight' => 280.40,
'blend_percentage' => 36.00,
],
[
'wine_name' => 'Müller Thurgau Young',
'variety' => 'Müller Thurgau',
'date' => '2024-09-10',
'consumed_weight' => 780.20,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Chardonnay Classic',
'variety' => 'Chardonnay',
'date' => now()->subDays(5)->format('Y-m-d'),
'consumed_weight' => 420.50,
'blend_percentage' => 100.00,
],
// Blaufränkisch Young 2024 - blended from two harvests
[
'wine_name' => 'Blaufränkisch Young',
'variety' => 'Blaufränkisch',
'date' => '2024-10-05',
'consumed_weight' => 650.00,
'blend_percentage' => 59.00,
],
[
'wine_name' => 'Blaufränkisch Young',
'variety' => 'Blaufränkisch',
'date' => now()->subDays(8)->format('Y-m-d'),
'consumed_weight' => 450.00,
'blend_percentage' => 41.00,
],
[
'wine_name' => 'St. Laurent New Wine',
'variety' => 'St. Laurent',
'date' => '2024-10-01',
'consumed_weight' => 600.75,
'blend_percentage' => 100.00,
],
// ========== 2023 VINTAGE WINES ==========
[
'wine_name' => 'Grüner Veltliner Cabinet',
'variety' => 'Grüner Veltliner',
'date' => '2023-09-18',
'consumed_weight' => 750.00,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Grüner Veltliner Late Harvest',
'variety' => 'Grüner Veltliner',
'date' => '2023-10-12',
'consumed_weight' => 650.50,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Müller Thurgau Cabinet',
'variety' => 'Müller Thurgau',
'date' => '2023-09-08',
'consumed_weight' => 890.75,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Chardonnay Unfiltered',
'variety' => 'Chardonnay',
'date' => '2023-09-22',
'consumed_weight' => 580.30,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Blaufränkisch Classic',
'variety' => 'Blaufränkisch',
'date' => '2023-10-08',
'consumed_weight' => 900.00,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'St. Laurent Moravian',
'variety' => 'St. Laurent',
'date' => '2023-10-02',
'consumed_weight' => 720.50,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'St. Laurent Rosé',
'variety' => 'St. Laurent',
'date' => '2023-09-28',
'consumed_weight' => 480.25,
'blend_percentage' => 100.00,
],
// ========== 2022 VINTAGE WINES ==========
[
'wine_name' => 'Grüner Veltliner Grape Selection',
'variety' => 'Grüner Veltliner',
'date' => '2022-10-20',
'consumed_weight' => 580.80,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Riesling Dry',
'variety' => 'Riesling',
'date' => '2022-10-05',
'consumed_weight' => 640.60,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'Chardonnay Barrique',
'variety' => 'Chardonnay',
'date' => '2022-09-25',
'consumed_weight' => 510.40,
'blend_percentage' => 100.00,
],
// Blaufränkisch Reserve 2022 - premium blend from single harvest
[
'wine_name' => 'Blaufränkisch Reserve',
'variety' => 'Blaufränkisch',
'date' => '2022-10-12',
'consumed_weight' => 680.75,
'blend_percentage' => 100.00,
],
[
'wine_name' => 'St. Laurent Barrique',
'variety' => 'St. Laurent',
'date' => '2022-10-05',
'consumed_weight' => 620.90,
'blend_percentage' => 100.00,
],
// ========== 2021 VINTAGE WINES ==========
[
'wine_name' => 'Riesling Berry Selection',
'variety' => 'Riesling',
'date' => '2021-11-08',
'consumed_weight' => 420.50,
'blend_percentage' => 100.00,
],
// ========== 2020 VINTAGE WINES ==========
[
'wine_name' => 'Blaufränkisch Archive',
'variety' => 'Blaufränkisch',
'date' => '2020-10-18',
'consumed_weight' => 550.00,
'blend_percentage' => 100.00,
],
];
foreach ($productions as $production) {
$wineId = $wineIds[$production['wine_name']] ?? null;
$harvestKey = $production['variety'] . ':' . $production['date'];
$harvest = $harvests[$harvestKey] ?? null;
if (! $wineId || ! $harvest) {
continue;
}
WineProduction::updateOrCreate(
[
'wine_id' => $wineId,
'harvest_id' => $harvest->id,
],
[
'consumed_weight' => $production['consumed_weight'],
'blend_percentage' => $production['blend_percentage'],
]
);
}
if ($this->command) {
$this->command->info('✓ Created ' . count($productions) . ' wine production records');
}
}
}