'index', 'route' => '/'], ['code' => 'product.detail', 'route' => '/product/:id'], ['code' => 'checkout', 'route' => '/checkout'], [ 'code' => 'account', 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'route' => '/mi-cuenta', ], [ 'code' => 'profile', 'parent_menu_code' => 'account', 'route' => '/mi-cuenta/datos-personales', ], [ 'code' => 'purchases', 'parent_menu_code' => 'account', 'route' => '/mi-cuenta/compras', ], [ 'code' => 'tickets', 'parent_menu_code' => 'account', 'route' => '/mi-cuenta/tickets', ], [ 'code' => 'help', 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'route' => '/ayuda', ], [ 'code' => 'help.faq', 'parent_menu_code' => 'help', 'content_type' => Menu::CONTENT_TYPE_STATIC, 'static_content_schema' => [ '*.pregunta' => 'required|string', '*.respuesta' => 'required|string', '*.is_active' => 'sometimes|boolean', ], 'route' => '/ayuda/preguntas-frecuentes', ], [ 'code' => 'help.contact', 'parent_menu_code' => 'help', 'content_type' => Menu::CONTENT_TYPE_STATIC, 'static_content_schema' => [ 'whatsapp' => 'required|array', 'whatsapp.whatsapp_url' => 'required|url', 'whatsapp.whatsapp_label' => 'required|string', 'phone' => 'required|string', 'locations' => 'required|array|min:1', 'locations.*.label' => 'required|string', 'locations.*.addresses' => 'required|array|min:1', 'locations.*.addresses.*' => 'required|array:label,address,coordinates', 'locations.*.addresses.*.label' => 'required|string', 'locations.*.addresses.*.address' => 'required|string', 'locations.*.addresses.*.coordinates' => 'required|array|size:2', 'locations.*.addresses.*.coordinates.0' => 'required|numeric|between:-90,90', 'locations.*.addresses.*.coordinates.1' => 'required|numeric|between:-180,180', 'map_locations' => 'prohibited', ], 'route' => '/ayuda/contacto', ], [ 'code' => 'help.payment-methods', 'parent_menu_code' => 'help', 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'route' => '/ayuda/medios-de-pago', ], [ 'code' => 'help.shipping', 'parent_menu_code' => 'help', 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'route' => '/ayuda/envios', ], [ 'code' => 'help.terms-and-conditions', 'parent_menu_code' => 'help', 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'route' => '/ayuda/terminos-y-condiciones', ], ]; foreach ($menus as $menuData) { $menuData = array_merge([ 'parent_menu_code' => null, 'content_type' => Menu::CONTENT_TYPE_DYNAMIC, 'static_content_schema' => null, ], $menuData); Menu::updateOrCreate(['code' => $menuData['code']], $menuData); } $tenants = Tenant::all(); $allMenus = Menu::pluck('code')->toArray(); $helpMenuCodes = [ 'help', 'help.faq', 'help.contact', 'help.payment-methods', 'help.shipping', 'help.terms-and-conditions', ]; $helpTenantCodes = [ 'sonder', 'fiesta_futbol_infantil', ]; $frequentlyAskedQuestions = [ [ 'pregunta' => '¿Hay algún límite de compra?', 'respuesta' => 'No hay un límite general de compra. La cantidad disponible depende del stock de cada producto.', 'is_active' => true, ], [ 'pregunta' => '¿Cuáles son los medios de pago disponibles?', 'respuesta' => 'Podés consultar y seleccionar los medios de pago habilitados al momento de finalizar tu compra.', 'is_active' => false, ], [ 'pregunta' => 'Necesito asesoramiento antes de comprar el producto, ¿cómo puedo hacer?', 'respuesta' => 'Nuestro equipo comercial está preparado para asesorarte, no dudes en escribirnos por WhatsApp al (0341) 6658247 de lunes a viernes de 8.30 a 20 horas. Los sábados, domingos y feriados te contestaremos lo más rápido posible.', 'is_active' => false, ], ]; $contactContent = [ 'whatsapp' => [ 'whatsapp_url' => 'https://wa.me/543412602222', 'whatsapp_label' => 'Chatea con nosotros', ], 'phone' => '+54 9 (0341) 6658247', 'locations' => [ 'rosario' => [ 'label' => 'Rosario', 'addresses' => [ [ 'label' => 'Gigante de Arroyito', 'address' => 'Av. Génova 640, Rosario', 'coordinates' => [-32.913997, -60.674567], ], [ 'label' => 'Telepagos', 'address' => 'Rioja 1150, piso 12, dpto. 3, Rosario', 'coordinates' => [-32.946820, -60.639320], ], ], ], ], ]; foreach ($tenants as $tenant) { $menuCodes = $allMenus; if ($tenant->codigo === 'sonder') { // Sonder NO tiene tickets $menuCodes = array_diff($menuCodes, ['tickets']); } else { // Los demás NO tienen product.detail $menuCodes = array_diff($menuCodes, ['product.detail']); } if (! in_array($tenant->codigo, $helpTenantCodes, true)) { $menuCodes = array_diff($menuCodes, $helpMenuCodes); } // Usar sync para asociar los menues al tenant $tenant->menues()->sync($menuCodes); if (in_array($tenant->codigo, $helpTenantCodes, true)) { $tenant->menues()->updateExistingPivot('help.faq', [ 'static_content' => $frequentlyAskedQuestions, ]); $tenant->menues()->updateExistingPivot('help.contact', [ 'static_content' => $contactContent, ]); } } } }