This commit is contained in:
lubiana 2025-06-14 23:13:20 +02:00
parent d7a61f6d0e
commit bb42015d74
Signed by: lubiana
SSH key fingerprint: SHA256:vW1EA0fRR3Fw+dD/sM0K+x3Il2gSry6YRYHqOeQwrfk
7 changed files with 59 additions and 27 deletions

View file

@ -24,14 +24,13 @@ function createExtraSparkles() {
if (currentMode !== 'bonkers') return;
const extraEmojis = [
'💫', '⭐', '🎊', '🎈', '🎪', '🎭', '🎨', '👑', '💎', '🔥', '⚡', '💃', '🕺', '🎵', '🎶', '🎤',
'🍑', '💦', '😏', '😈', '👅', '💋', '🥵', '😳', '🤤', '😍', '🥴', '🤯', '💕', '💖', '💗', '💘',
'💝', '💞', '💟', '💌', '💍', '💎', '💏', '💑', '💒', '💓', '💔', '💕', '🌶️', '🍆', '🥒', '🍌',
'🍎', '🍓', '🍇', '🍊', '🍋', '🍌', '🍍', '🥭', '🍎', '🍏', '🍐', '💧', '💦', '💨', '👀', '😉',
'😌', '😍', '🥰', '😘', '😚', '😋', '🥳', '😏', '😫', '😩', '🥺', '😢', '😡', '🤬', '🤯', '😳',
'🥵', '🥴', '🤒', '💖', '💗', '💙', '💚', '❤️', '🧡', '💛', '💜', '🖤', '💔', '❣️', '💕', '💞',
'💓', '💗', '💖', '💘', '💝', '💟', '💌', '💋', '💍', '💎', '💏', '💑', '💒', '💓', '💔', '💕',
'💖', '💗', '💘'
'💃', '🕺',
'🍑', '💦', '😏', '😈', '👅', '💋', '🥵', '😳', '🤤', '😍', '🥴',
'💕', '💖', '💗', '💘', '💝', '💞', '💟', '💌', '💏', '💑',
'🍆', '🥒', '🍌', '💦', '👀', '😉', '😌', '😍', '🥰', '😘',
'😚', '😋', '😏', '😫', '😩', '🥺', '🥵', '🥴',
'💖', '💗', '💕', '💞', '💓', '💗', '💖', '💘', '💝',
'💋', '💏', '💑'
];
const sparkle = document.createElement('div');
sparkle.className = 'emoji-footprint';

View file

@ -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,
]);
}
}

View file

@ -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,
]);

View file

@ -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

View file

@ -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,

View file

@ -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 %}
<div class="container mt-4">
<h1>Bulk Edit Drink Type Wanted Stock</h1>
{% if from_order is defined and from_order %}
<h1>Update Wanted Stock Levels Before Creating Order</h1>
<p class="lead">You can update the wanted stock levels before creating a new order, or skip this step.</p>
{% else %}
<h1>Bulk Edit Drink Type Wanted Stock</h1>
{% endif %}
{% for message in app.flashes('success') %}
<div class="alert alert-success alert-dismissible fade show" role="alert">
@ -42,6 +47,9 @@
<div class="mt-3">
{{ form_widget(form.save) }}
{% if from_order is defined and from_order %}
<a href="{{ path('app_drink_type_bulk_edit_wanted_stock', {'from_order': 'true', 'skip': 'true'}) }}" class="btn btn-secondary">Skip and Create Order</a>
{% endif %}
</div>
{{ form_end(form) }}

View file

@ -16,8 +16,19 @@
<li>{{ drinkType.name }} ({{ drinkType.currentStock }} / {{ drinkType.wantedStock }})</li>
{% endfor %}
</ul>
{% if orders != [] %}
<a href="{{ path('app_order_new') }}" class="btn btn-primary">Create New Order</a>
{% if orders == [] %}
<a href="{{ path('app_drink_type_bulk_edit_wanted_stock', {'from_order': 'true'}) }}" class="btn btn-primary">Create New Order</a>
{% else %}
<p>There are already orders planned:</p>
<ul>
{% for order in orders %}
<li>
<a href="{{ path("app_order_show", {'id': order.id}) }}">
{{ order.id }} - {{ order.status.value }}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>