feat(seeders): update FiestaFutbolInfantil seeders and tests to include new categories and menu items

This commit is contained in:
2026-08-06 14:12:58 -03:00
parent b294e5c46e
commit 7f01adab73
4 changed files with 88 additions and 42 deletions

View File

@@ -30,6 +30,11 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
}
$this->deleteExistingCatalog($tenant);
FeaturedGroup::query()->where('tenant_code', $tenant->codigo)->delete();
Category::query()
->where('tenant_code', $tenant->codigo)
->update(['categoria_id' => null]);
Category::query()->where('tenant_code', $tenant->codigo)->delete();
$event = Event::query()->updateOrCreate(
[
@@ -58,24 +63,16 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
'nombre' => 'Entradas',
'tenant_code' => $tenant->codigo,
]);
$accommodationCategory = Category::query()->firstOrCreate([
'nombre' => 'Alojamientos',
'tenant_code' => $tenant->codigo,
]);
$merchandisingCategory = Category::query()->firstOrCreate([
'nombre' => 'Merchandising',
'tenant_code' => $tenant->codigo,
]);
$foodCategory = Category::query()->firstOrCreate([
'nombre' => 'Gastronomía',
'tenant_code' => $tenant->codigo,
]);
$mealCategory = Category::query()->updateOrCreate([
'nombre' => 'Comidas',
'tenant_code' => $tenant->codigo,
], [
'categoria_id' => $foodCategory->id,
]);
$drinkCategory = Category::query()->updateOrCreate([
'nombre' => 'Bebidas',
'tenant_code' => $tenant->codigo,
], [
'categoria_id' => $foodCategory->id,
]);
$parkingCategory = Category::query()->firstOrCreate([
'nombre' => 'Estacionamiento',
'nombre' => 'Comida',
'tenant_code' => $tenant->codigo,
]);
@@ -106,12 +103,12 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
]);
$items = [
['slug' => 'hamburguesa-papa-frita', 'nombre' => 'Hamburguesa con papa frita', 'precio' => 8000, 'category_id' => $mealCategory->id],
['slug' => 'pancho', 'nombre' => 'Pancho', 'precio' => 4000, 'category_id' => $mealCategory->id],
['slug' => 'coca-cola-500ml', 'nombre' => 'Coca Cola 500ml', 'precio' => 3000, 'category_id' => $drinkCategory->id],
['slug' => 'agua-mineral-1l', 'nombre' => 'Agua Mineral 1L', 'precio' => 2500, 'category_id' => $drinkCategory->id],
['slug' => 'estacionamiento-auto', 'nombre' => 'Estacionamiento Auto', 'precio' => 5000, 'category_id' => $parkingCategory->id],
['slug' => 'estacionamiento-moto', 'nombre' => 'Estacionamiento Moto', 'precio' => 2000, 'category_id' => $parkingCategory->id],
['slug' => 'alojamiento-por-noche', 'nombre' => 'Alojamiento por noche', 'precio' => 35000, 'category_id' => $accommodationCategory->id],
['slug' => 'alojamiento-fin-de-semana', 'nombre' => 'Alojamiento fin de semana', 'precio' => 90000, 'category_id' => $accommodationCategory->id],
['slug' => 'remera-oficial', 'nombre' => 'Remera oficial', 'precio' => 18000, 'category_id' => $merchandisingCategory->id],
['slug' => 'gorra-oficial', 'nombre' => 'Gorra oficial', 'precio' => 12000, 'category_id' => $merchandisingCategory->id],
['slug' => 'hamburguesa-papa-frita', 'nombre' => 'Hamburguesa con papa frita', 'precio' => 8000, 'category_id' => $foodCategory->id],
['slug' => 'pancho', 'nombre' => 'Pancho', 'precio' => 4000, 'category_id' => $foodCategory->id],
];
$createdItems = [];
@@ -157,7 +154,7 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
'nombre' => 'Combo 2 Panchos + 2 Hamburguesas',
'descripcion' => 'Incluye 2 panchos y 2 hamburguesas con papa frita.',
'precio' => 24000,
'category_id' => $mealCategory->id,
'category_id' => $foodCategory->id,
'components' => [
[
'catalog_item_id' => $createdItems['pancho']->id,
@@ -172,9 +169,9 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
$this->seedFeaturedGroups($tenant, [
'Entradas' => $ticketCategory,
'Estacionamiento' => $parkingCategory,
'Comidas' => $mealCategory,
'Bebidas' => $drinkCategory,
'Alojamientos' => $accommodationCategory,
'Merchandising' => $merchandisingCategory,
'Comida' => $foodCategory,
]);
}
@@ -194,22 +191,20 @@ class FiestaFutbolInfantilProductSeeder extends Seeder
/** @param array<string, Category> $categories */
private function seedFeaturedGroups(Tenant $tenant, array $categories): void
{
FeaturedGroup::query()->where('tenant_code', $tenant->codigo)->delete();
$groups = [
'Entradas' => [
'product_layout' => ProductLayout::Row,
'group_layout' => GroupLayout::SimpleVertical,
],
'Estacionamiento' => [
'Alojamientos' => [
'product_layout' => ProductLayout::ColumnWithCart,
'group_layout' => GroupLayout::Simple,
],
'Comidas' => [
'Merchandising' => [
'product_layout' => ProductLayout::ColumnWithCart,
'group_layout' => GroupLayout::Simple,
],
'Bebidas' => [
'Comida' => [
'product_layout' => ProductLayout::ColumnWithCart,
'group_layout' => GroupLayout::Simple,
],

View File

@@ -71,6 +71,30 @@ class MenuSeeder extends Seeder
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/staff',
],
[
'code' => 'adminapp.fiesta-futbol-infantil.entradas',
'label' => 'Entradas',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/entradas',
],
[
'code' => 'adminapp.fiesta-futbol-infantil.alojamientos',
'label' => 'Alojamientos',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/alojamientos',
],
[
'code' => 'adminapp.fiesta-futbol-infantil.merchandising',
'label' => 'Merchandising',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/merchandising',
],
[
'code' => 'adminapp.fiesta-futbol-infantil.comida',
'label' => 'Comida',
'parent_menu_code' => 'main.adminapp',
'route' => '/admin/comidas',
],
[
'code' => 'account',
'label' => 'Mi cuenta',
@@ -222,6 +246,12 @@ class MenuSeeder extends Seeder
'sonder',
'fiesta_futbol_infantil',
];
$fiestaCategoryMenuCodes = [
'adminapp.fiesta-futbol-infantil.entradas',
'adminapp.fiesta-futbol-infantil.alojamientos',
'adminapp.fiesta-futbol-infantil.merchandising',
'adminapp.fiesta-futbol-infantil.comida',
];
$frequentlyAskedQuestions = [
[
'pregunta' => '¿Hay algún límite de compra?',
@@ -279,6 +309,10 @@ class MenuSeeder extends Seeder
$menuCodes = array_diff($menuCodes, $helpMenuCodes);
}
if ($tenant->codigo !== 'fiesta_futbol_infantil') {
$menuCodes = array_diff($menuCodes, $fiestaCategoryMenuCodes);
}
// Usar sync para asociar los menues al tenant
$tenant->menues()->sync($menuCodes);