!20 add username to order and item

This commit is contained in:
lubiana 2024-06-27 23:33:32 +02:00
parent 9d81464fd8
commit 511f12f10f
No known key found for this signature in database
12 changed files with 147 additions and 24 deletions

View file

@ -4,6 +4,7 @@ namespace App\Controller;
use App\Form\UserNameFormType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
@ -13,21 +14,34 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
final class HomeController extends AbstractController
{
public const string DEFAULT_USERNAME = 'nobody';
#[Route('/', name: 'home')]
public function home(UrlGeneratorInterface $router): Response
{
return new RedirectResponse($router->generate('app_food_order_index'));
}
public function usernameForm(Request $request): Response
#[Route('/username', name: 'username')]
public function usernameForm(Request $request, UrlGeneratorInterface $router): Response
{
$username = $request->cookies->get('username', self::DEFAULT_USERNAME);
$form = $this->createForm(UsernameFormType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$username = $form->getData()['username'] ?? self::DEFAULT_USERNAME;
if ($username === '') {}
$response = new RedirectResponse($router->generate('app_food_order_index'));
if ($username === self::DEFAULT_USERNAME || $username === '') {
$response->headers->clearCookie('username');
return $response;
}
$response->headers->setCookie(new Cookie('username', $username));
return $response;
}
$username = $request->cookies->get('username', self::DEFAULT_USERNAME);
$form->setData([
'username' => $username,
]);
return $this->render('username.html.twig', [
'form' => $form,
]);
}
}

View file

@ -34,6 +34,11 @@ class FoodOrder
#[ORM\OneToMany(targetEntity: OrderItem::class, mappedBy: 'foodOrder', orphanRemoval: true)]
private Collection $orderItems;
#[ORM\Column(length: 255, options: [
'default' => 'nobody',
])]
private string|null $createdBy = 'nobody';
public function __construct()
{
$this->orderItems = new ArrayCollection;
@ -117,4 +122,16 @@ class FoodOrder
return $this;
}
public function getCreatedBy(): string|null
{
return $this->createdBy;
}
public function setCreatedBy(string $createdBy): static
{
$this->createdBy = $createdBy;
return $this;
}
}

View file

@ -31,6 +31,11 @@ class OrderItem
#[ORM\JoinColumn(nullable: false)]
private MenuItem|null $menuItem = null;
#[ORM\Column(length: 255, options: [
'default' => 'nobody',
])]
private string|null $createdBy = 'nobody';
public function getId(): Ulid|null
{
return $this->id;
@ -83,4 +88,16 @@ class OrderItem
return $this;
}
public function getCreatedBy(): string|null
{
return $this->createdBy;
}
public function setCreatedBy(string $createdBy): static
{
$this->createdBy = $createdBy;
return $this;
}
}

View file

@ -14,7 +14,9 @@ final class OrderItemType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name')
->add(child: 'name', options: [
'data' => $options['name'] ?? '',
])
->add('extras')
;
}

View file

@ -1,20 +1,25 @@
<?php
<?php declare(strict_types=1);
namespace App\Form;
use Override;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class UserNameFormType extends AbstractType
final class UserNameFormType extends AbstractType
{
#[Override]
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('username')
->add(child: 'username', options: [
'required' => false,
])
;
}
#[Override]
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([