- Use cases: FindAllIncoSheets & FindIncoSheet (filters, pagination, short projection) - Presentation: controllers, FormRequests with scalar validation, DTOs (camelCase) - Ports & Adapters: IncoSheetDirectory & EloquentIncoSheetDirectory - Tests: Pest 4 unit, integration, OpenAPI spectator conformance, dynamic arch tests - Docs: updated Bruno collection and OpenAPI spec
63 lines
1.9 KiB
PHP
63 lines
1.9 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use Infra\Database\Models\IncoCompo;
|
|
use Infra\Database\Models\IncoSheet;
|
|
|
|
final class IncoSheetSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Seed IncoSheet entries (paired with IncoCompo when available, or standalone).
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$sheetDataList = [
|
|
[
|
|
'id' => '1',
|
|
'compo_id' => '1',
|
|
'name' => 'Poulet Rôti 1kg',
|
|
'label' => 'Poulet Rôti aux Herbes',
|
|
],
|
|
[
|
|
'id' => '2',
|
|
'compo_id' => '2',
|
|
'name' => 'Salade Niçoise 300g',
|
|
'label' => 'Salade Niçoise',
|
|
],
|
|
[
|
|
'id' => '3',
|
|
'compo_id' => '3',
|
|
'name' => 'Lasagnes Bolognaise 400g',
|
|
'label' => 'Lasagnes Bolognaise',
|
|
],
|
|
[
|
|
'id' => '4',
|
|
'compo_id' => null,
|
|
'name' => 'Pain de Mie Brut 500g',
|
|
'label' => 'Pain de Mie Nature',
|
|
],
|
|
];
|
|
|
|
foreach ($sheetDataList as $data) {
|
|
if (! IncoSheet::query()->where('id', $data['id'])->exists()) {
|
|
IncoSheet::factory()->create([
|
|
'id' => $data['id'],
|
|
'compo_id' => $data['compo_id'],
|
|
'name' => $data['name'],
|
|
'label' => $data['label'],
|
|
]);
|
|
}
|
|
|
|
if ($data['compo_id'] !== null && ! IncoCompo::query()->where('id', $data['compo_id'])->exists()) {
|
|
IncoCompo::factory()->create([
|
|
'id' => $data['compo_id'],
|
|
'id_inco' => $data['compo_id'],
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
}
|