diff --git a/assets/modes.js b/assets/modes.js index 01fae83..909348f 100644 --- a/assets/modes.js +++ b/assets/modes.js @@ -2,15 +2,15 @@ function initBonkersMode() { // Check if we're in bonkers mode const currentMode = document.documentElement.getAttribute('data-website-mode'); - + if (currentMode === 'bonkers') { // Apply bonkers mode immediately document.body.classList.add('bonkers-mode'); - + // Start the fabulous effects createExtraSparkles(); createSlayEffects(); - + console.log('๐ŸŒˆโœจ Bonkers mode activated! โœจ๐ŸŒˆ'); } else { // Remove bonkers mode if it was active @@ -22,16 +22,15 @@ function initBonkersMode() { function createExtraSparkles() { const currentMode = document.documentElement.getAttribute('data-website-mode'); if (currentMode !== 'bonkers') return; - + const extraEmojis = [ - '๐Ÿ’ซ', 'โญ', '๐ŸŽŠ', '๐ŸŽˆ', '๐ŸŽช', '๐ŸŽญ', '๐ŸŽจ', '๐Ÿ‘‘', '๐Ÿ’Ž', '๐Ÿ”ฅ', 'โšก', '๐Ÿ’ƒ', '๐Ÿ•บ', '๐ŸŽต', '๐ŸŽถ', '๐ŸŽค', - '๐Ÿ‘', '๐Ÿ’ฆ', '๐Ÿ˜', '๐Ÿ˜ˆ', '๐Ÿ‘…', '๐Ÿ’‹', '๐Ÿฅต', '๐Ÿ˜ณ', '๐Ÿคค', '๐Ÿ˜', '๐Ÿฅด', '๐Ÿคฏ', '๐Ÿ’•', '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’˜', - '๐Ÿ’', '๐Ÿ’ž', '๐Ÿ’Ÿ', '๐Ÿ’Œ', '๐Ÿ’', '๐Ÿ’Ž', '๐Ÿ’', '๐Ÿ’‘', '๐Ÿ’’', '๐Ÿ’“', '๐Ÿ’”', '๐Ÿ’•', '๐ŸŒถ๏ธ', '๐Ÿ†', '๐Ÿฅ’', '๐ŸŒ', - '๐ŸŽ', '๐Ÿ“', '๐Ÿ‡', '๐ŸŠ', '๐Ÿ‹', '๐ŸŒ', '๐Ÿ', '๐Ÿฅญ', '๐ŸŽ', '๐Ÿ', '๐Ÿ', '๐Ÿ’ง', '๐Ÿ’ฆ', '๐Ÿ’จ', '๐Ÿ‘€', '๐Ÿ˜‰', - '๐Ÿ˜Œ', '๐Ÿ˜', '๐Ÿฅฐ', '๐Ÿ˜˜', '๐Ÿ˜š', '๐Ÿ˜‹', '๐Ÿฅณ', '๐Ÿ˜', '๐Ÿ˜ซ', '๐Ÿ˜ฉ', '๐Ÿฅบ', '๐Ÿ˜ข', '๐Ÿ˜ก', '๐Ÿคฌ', '๐Ÿคฏ', '๐Ÿ˜ณ', - '๐Ÿฅต', '๐Ÿฅด', '๐Ÿค’', '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’™', '๐Ÿ’š', 'โค๏ธ', '๐Ÿงก', '๐Ÿ’›', '๐Ÿ’œ', '๐Ÿ–ค', '๐Ÿ’”', 'โฃ๏ธ', '๐Ÿ’•', '๐Ÿ’ž', - '๐Ÿ’“', '๐Ÿ’—', '๐Ÿ’–', '๐Ÿ’˜', '๐Ÿ’', '๐Ÿ’Ÿ', '๐Ÿ’Œ', '๐Ÿ’‹', '๐Ÿ’', '๐Ÿ’Ž', '๐Ÿ’', '๐Ÿ’‘', '๐Ÿ’’', '๐Ÿ’“', '๐Ÿ’”', '๐Ÿ’•', - '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’˜' + '๐Ÿ’ƒ', '๐Ÿ•บ', + '๐Ÿ‘', '๐Ÿ’ฆ', '๐Ÿ˜', '๐Ÿ˜ˆ', '๐Ÿ‘…', '๐Ÿ’‹', '๐Ÿฅต', '๐Ÿ˜ณ', '๐Ÿคค', '๐Ÿ˜', '๐Ÿฅด', + '๐Ÿ’•', '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’˜', '๐Ÿ’', '๐Ÿ’ž', '๐Ÿ’Ÿ', '๐Ÿ’Œ', '๐Ÿ’', '๐Ÿ’‘', + '๐Ÿ†', '๐Ÿฅ’', '๐ŸŒ', '๐Ÿ’ฆ', '๐Ÿ‘€', '๐Ÿ˜‰', '๐Ÿ˜Œ', '๐Ÿ˜', '๐Ÿฅฐ', '๐Ÿ˜˜', + '๐Ÿ˜š', '๐Ÿ˜‹', '๐Ÿ˜', '๐Ÿ˜ซ', '๐Ÿ˜ฉ', '๐Ÿฅบ', '๐Ÿฅต', '๐Ÿฅด', + '๐Ÿ’–', '๐Ÿ’—', '๐Ÿ’•', '๐Ÿ’ž', '๐Ÿ’“', '๐Ÿ’—', '๐Ÿ’–', '๐Ÿ’˜', '๐Ÿ’', + '๐Ÿ’‹', '๐Ÿ’', '๐Ÿ’‘' ]; const sparkle = document.createElement('div'); sparkle.className = 'emoji-footprint'; @@ -45,7 +44,7 @@ function createExtraSparkles() { sparkle.remove(); } }, 3000); - + // Continue creating extra sparkles while in bonkers mode const newMode = document.documentElement.getAttribute('data-website-mode'); if (newMode === 'bonkers') { @@ -57,7 +56,7 @@ function createExtraSparkles() { function createSlayEffects() { const currentMode = document.documentElement.getAttribute('data-website-mode'); if (currentMode !== 'bonkers') return; - + // Create floating "SLAY" text effects const slayWords = [ 'SLAY', 'QUEEN', 'FABULOUS', 'ICONIC', 'LEGENDARY', 'STUNNING', 'GORGEOUS', 'FLAWLESS', @@ -75,7 +74,7 @@ function createSlayEffects() { slayElement.remove(); } }, 3000); - + // Continue creating slay effects while in bonkers mode const newMode = document.documentElement.getAttribute('data-website-mode'); if (newMode === 'bonkers') { @@ -90,14 +89,14 @@ function watchModeChanges() { mutations.forEach(function(mutation) { if (mutation.type === 'attributes' && mutation.attributeName === 'data-website-mode') { const newMode = document.documentElement.getAttribute('data-website-mode'); - + if (newMode === 'bonkers') { document.body.classList.add('bonkers-mode'); - + // Start the fabulous effects createExtraSparkles(); createSlayEffects(); - + console.log('๐ŸŒˆโœจ Switched to bonkers mode! โœจ๐ŸŒˆ'); } else { document.body.classList.remove('bonkers-mode'); @@ -106,7 +105,7 @@ function watchModeChanges() { } }); }); - + // Start observing observer.observe(document.documentElement, { attributes: true, diff --git a/src/Controller/DrinkTypeBulkController.php b/src/Controller/DrinkTypeBulkController.php index f512b4a..0dc896b 100644 --- a/src/Controller/DrinkTypeBulkController.php +++ b/src/Controller/DrinkTypeBulkController.php @@ -57,6 +57,7 @@ final class DrinkTypeBulkController extends AbstractController EntityManagerInterface $entityManager ): Response { $drinkTypes = $drinkTypeRepository->findAll(); + $fromOrder = $request->query->get('from_order') === 'true'; $form = $this->createForm(BulkEditDrinkTypeWantedStockForm::class, [ 'drinkTypes' => $drinkTypes, @@ -75,12 +76,22 @@ final class DrinkTypeBulkController extends AbstractController $this->addFlash('success', 'Wanted stock levels updated successfully!'); + if ($fromOrder) { + return $this->redirectToRoute('app_order_new'); + } + return $this->redirectToRoute('app_drink_type_bulk_edit_wanted_stock'); } + // Handle skip button + if ($request->query->has('skip') && $fromOrder) { + return $this->redirectToRoute('app_order_new'); + } + return $this->render('drink_type/bulk_edit_wanted_stock.html.twig', [ 'form' => $form->createView(), 'drinkTypes' => $drinkTypes, + 'from_order' => $fromOrder, ]); } } diff --git a/src/Controller/Index.php b/src/Controller/Index.php index c0207b4..baed02a 100644 --- a/src/Controller/Index.php +++ b/src/Controller/Index.php @@ -23,7 +23,7 @@ final class Index extends AbstractController $lowStock = $filterLowStockDrinks($wanted); $orders = $orderService->getActiveOrders(); return $this->render('index.html.twig', [ - 'drinkTypes' => $lowStock, + 'drinkTypes' => $wanted, 'lowStock' => $lowStock, 'orders' => $orders, ]); diff --git a/src/Entity/Order.php b/src/Entity/Order.php index 18e8880..c0023e4 100644 --- a/src/Entity/Order.php +++ b/src/Entity/Order.php @@ -44,7 +44,6 @@ class Order $this->createdAt = new DateTimeImmutable(); $this->updatedAt = new DateTimeImmutable(); $this->orderItems = new ArrayCollection(); - $this->status = OrderStatus::NEW; } public function getId(): null|int diff --git a/src/Form/OrderForm.php b/src/Form/OrderForm.php index 8a80286..53a2624 100644 --- a/src/Form/OrderForm.php +++ b/src/Form/OrderForm.php @@ -17,10 +17,14 @@ class OrderForm extends AbstractType public function buildForm(FormBuilderInterface $builder, array $options): void { $builder - ->add('status', EnumType::class, ['class' => OrderStatus::class]) + ->add('status', EnumType::class, [ + 'class' => OrderStatus::class, + ]) ->add('orderItems', CollectionType::class, [ 'entry_type' => OrderItemType::class, - 'entry_options' => ['label' => false], + 'entry_options' => [ + 'label' => false, + ], 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false, diff --git a/templates/drink_type/bulk_edit_wanted_stock.html.twig b/templates/drink_type/bulk_edit_wanted_stock.html.twig index 01454f9..2a6fd1d 100644 --- a/templates/drink_type/bulk_edit_wanted_stock.html.twig +++ b/templates/drink_type/bulk_edit_wanted_stock.html.twig @@ -1,10 +1,15 @@ {% extends 'base.html.twig' %} -{% block title %}Bulk Edit Drink Type Wanted Stock{% endblock %} +{% block title %}{% if from_order is defined and from_order %}Update Wanted Stock Before Order{% else %}Bulk Edit Drink Type Wanted Stock{% endif %}{% endblock %} {% block body %}
-

Bulk Edit Drink Type Wanted Stock

+ {% if from_order is defined and from_order %} +

Update Wanted Stock Levels Before Creating Order

+

You can update the wanted stock levels before creating a new order, or skip this step.

+ {% else %} +

Bulk Edit Drink Type Wanted Stock

+ {% endif %} {% for message in app.flashes('success') %}