rofl
This commit is contained in:
parent
b052697417
commit
43ca79f650
14 changed files with 292 additions and 57 deletions
|
@ -28,7 +28,7 @@ final class DrinkTypeController extends AbstractController
|
|||
#[Route(path: '/new', name: 'app_drink_type_new', methods: ['GET', 'POST'])]
|
||||
public function new(Request $request, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$drinkType = new DrinkType('', '');
|
||||
$drinkType = new DrinkType();
|
||||
$form = $this->createForm(DrinkTypeForm::class, $drinkType);
|
||||
$form->handleRequest($request);
|
||||
|
||||
|
|
81
src/Controller/InventoryRecordController.php
Normal file
81
src/Controller/InventoryRecordController.php
Normal file
|
@ -0,0 +1,81 @@
|
|||
<?php
|
||||
|
||||
namespace App\Controller;
|
||||
|
||||
use App\Entity\InventoryRecord;
|
||||
use App\Form\InventoryRecordForm;
|
||||
use App\Repository\InventoryRecordRepository;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
|
||||
#[Route('/inventory-record')]
|
||||
final class InventoryRecordController extends AbstractController
|
||||
{
|
||||
#[Route(name: 'app_inventory_record_index', methods: ['GET'])]
|
||||
public function index(InventoryRecordRepository $inventoryRecordRepository): Response
|
||||
{
|
||||
return $this->render('inventory_record/index.html.twig', [
|
||||
'inventory_records' => $inventoryRecordRepository->findAll(),
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/new', name: 'app_inventory_record_new', methods: ['GET', 'POST'])]
|
||||
public function new(Request $request, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$inventoryRecord = new InventoryRecord();
|
||||
$form = $this->createForm(InventoryRecordForm::class, $inventoryRecord);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$entityManager->persist($inventoryRecord);
|
||||
$entityManager->flush();
|
||||
|
||||
return $this->redirectToRoute('app_inventory_record_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
||||
return $this->render('inventory_record/new.html.twig', [
|
||||
'inventory_record' => $inventoryRecord,
|
||||
'form' => $form,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/{id}', name: 'app_inventory_record_show', methods: ['GET'])]
|
||||
public function show(InventoryRecord $inventoryRecord): Response
|
||||
{
|
||||
return $this->render('inventory_record/show.html.twig', [
|
||||
'inventory_record' => $inventoryRecord,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/{id}/edit', name: 'app_inventory_record_edit', methods: ['GET', 'POST'])]
|
||||
public function edit(Request $request, InventoryRecord $inventoryRecord, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
$form = $this->createForm(InventoryRecordForm::class, $inventoryRecord);
|
||||
$form->handleRequest($request);
|
||||
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$entityManager->flush();
|
||||
|
||||
return $this->redirectToRoute('app_inventory_record_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
||||
return $this->render('inventory_record/edit.html.twig', [
|
||||
'inventory_record' => $inventoryRecord,
|
||||
'form' => $form,
|
||||
]);
|
||||
}
|
||||
|
||||
#[Route('/{id}', name: 'app_inventory_record_delete', methods: ['POST'])]
|
||||
public function delete(Request $request, InventoryRecord $inventoryRecord, EntityManagerInterface $entityManager): Response
|
||||
{
|
||||
if ($this->isCsrfTokenValid('delete'.$inventoryRecord->getId(), $request->getPayload()->getString('_token'))) {
|
||||
$entityManager->remove($inventoryRecord);
|
||||
$entityManager->flush();
|
||||
}
|
||||
|
||||
return $this->redirectToRoute('app_inventory_record_index', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
}
|
|
@ -31,18 +31,17 @@ class DrinkType
|
|||
#[ORM\OneToMany(mappedBy: 'drinkType', targetEntity: OrderItem::class)]
|
||||
private Collection $orderItems;
|
||||
|
||||
#[ORM\Column(type: 'string', length: 255, unique: true)]
|
||||
private string $name;
|
||||
#[ORM\Column(type: 'text', nullable: true)]
|
||||
private null|string $description = null;
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $desiredStock = 10;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\Column(type: 'string', length: 255, unique: true)]
|
||||
private string $name,
|
||||
#[ORM\Column(type: 'text', nullable: true)]
|
||||
private null|string $description = null,
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $desiredStock = 10,
|
||||
null|DateTimeImmutable $createdAt = null,
|
||||
null|DateTimeImmutable $updatedAt = null,
|
||||
) {
|
||||
$this->createdAt = $createdAt ?? new DateTimeImmutable();
|
||||
$this->updatedAt = $updatedAt ?? new DateTimeImmutable();
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
$this->updatedAt = new DateTimeImmutable();
|
||||
$this->inventoryRecords = new ArrayCollection();
|
||||
$this->orderItems = new ArrayCollection();
|
||||
}
|
||||
|
|
|
@ -17,19 +17,28 @@ class InventoryRecord
|
|||
#[ORM\Column(type: 'integer')]
|
||||
private null|int $id = null;
|
||||
|
||||
#[ORM\ManyToOne(targetEntity: DrinkType::class, inversedBy: 'inventoryRecords')]
|
||||
#[ORM\JoinColumn(name: 'drink_type_id', referencedColumnName: 'id', nullable: false)]
|
||||
private DrinkType $drinkType;
|
||||
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $quantity;
|
||||
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $timestamp;
|
||||
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $createdAt;
|
||||
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $updatedAt;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\ManyToOne(targetEntity: DrinkType::class, inversedBy: 'inventoryRecords')]
|
||||
#[ORM\JoinColumn(name: 'drink_type_id', referencedColumnName: 'id', nullable: false)]
|
||||
private DrinkType $drinkType,
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $quantity,
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $timestamp = new DateTimeImmutable(),
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $createdAt = new DateTimeImmutable(),
|
||||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $updatedAt = new DateTimeImmutable(),
|
||||
) {}
|
||||
) {
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
$this->updatedAt = new DateTimeImmutable();
|
||||
$this->timestamp = new DateTimeImmutable();
|
||||
}
|
||||
|
||||
public function getId(): null|int
|
||||
{
|
||||
|
|
|
@ -29,16 +29,15 @@ class Order
|
|||
#[ORM\OneToMany(mappedBy: 'order', targetEntity: OrderItem::class, cascade: ['persist', 'remove'])]
|
||||
private Collection $orderItems;
|
||||
|
||||
#[ORM\Column(nullable: false, enumType: OrderStatus::class, options: [
|
||||
'default' => OrderStatus::NEW,
|
||||
])]
|
||||
private OrderStatus $status = OrderStatus::NEW;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\Column(nullable: false, enumType: OrderStatus::class, options: [
|
||||
'default' => OrderStatus::NEW,
|
||||
])]
|
||||
private OrderStatus $status = OrderStatus::NEW,
|
||||
null|DateTimeImmutable $createdAt = null,
|
||||
null|DateTimeImmutable $updatedAt = null,
|
||||
) {
|
||||
$this->createdAt = $createdAt ?? new DateTimeImmutable();
|
||||
$this->updatedAt = $updatedAt ?? new DateTimeImmutable();
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
$this->updatedAt = new DateTimeImmutable();
|
||||
$this->orderItems = new ArrayCollection();
|
||||
}
|
||||
|
||||
|
|
|
@ -23,25 +23,21 @@ class OrderItem
|
|||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $updatedAt;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\ManyToOne(targetEntity: DrinkType::class, inversedBy: 'orderItems')]
|
||||
#[ORM\JoinColumn(name: 'drink_type_id', referencedColumnName: 'id', nullable: false)]
|
||||
private DrinkType $drinkType,
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $quantity,
|
||||
#[ORM\ManyToOne(targetEntity: Order::class, inversedBy: 'orderItems')]
|
||||
#[ORM\JoinColumn(name: 'order_id', referencedColumnName: 'id', nullable: false)]
|
||||
private null|Order $order = null,
|
||||
null|DateTimeImmutable $createdAt = null,
|
||||
null|DateTimeImmutable $updatedAt = null,
|
||||
) {
|
||||
$this->createdAt = $createdAt ?? new DateTimeImmutable();
|
||||
$this->updatedAt = $updatedAt ?? new DateTimeImmutable();
|
||||
#[ORM\ManyToOne(targetEntity: DrinkType::class, inversedBy: 'orderItems')]
|
||||
#[ORM\JoinColumn(name: 'drink_type_id', referencedColumnName: 'id', nullable: false)]
|
||||
private DrinkType $drinkType;
|
||||
|
||||
// Establish bidirectional relationship
|
||||
if ($this->order instanceof Order) {
|
||||
$this->order->addOrderItem($this);
|
||||
}
|
||||
#[ORM\Column(type: 'integer')]
|
||||
private int $quantity;
|
||||
|
||||
#[ORM\ManyToOne(targetEntity: Order::class, inversedBy: 'orderItems')]
|
||||
#[ORM\JoinColumn(name: 'order_id', referencedColumnName: 'id', nullable: false)]
|
||||
private Order $order;
|
||||
|
||||
public function __construct(
|
||||
) {
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
$this->updatedAt = new DateTimeImmutable();
|
||||
}
|
||||
|
||||
public function getId(): null|int
|
||||
|
|
|
@ -31,16 +31,16 @@ class SystemConfig
|
|||
#[ORM\Column(type: 'datetime_immutable')]
|
||||
private DateTimeImmutable $updatedAt;
|
||||
|
||||
#[ORM\Column(unique: true, enumType: SystemSettingKey::class)]
|
||||
private SystemSettingKey $key;
|
||||
|
||||
#[ORM\Column(type: 'text')]
|
||||
private string $value;
|
||||
|
||||
public function __construct(
|
||||
#[ORM\Column(unique: true, enumType: SystemSettingKey::class)]
|
||||
private SystemSettingKey $key,
|
||||
#[ORM\Column(type: 'text')]
|
||||
private string $value,
|
||||
null|DateTimeImmutable $createdAt = null,
|
||||
null|DateTimeImmutable $updatedAt = null,
|
||||
) {
|
||||
$this->createdAt = $createdAt ?? new DateTimeImmutable();
|
||||
$this->updatedAt = $updatedAt ?? new DateTimeImmutable();
|
||||
$this->createdAt = new DateTimeImmutable();
|
||||
$this->updatedAt = new DateTimeImmutable();
|
||||
}
|
||||
|
||||
public function getId(): null|int
|
||||
|
|
40
src/Form/InventoryRecordForm.php
Normal file
40
src/Form/InventoryRecordForm.php
Normal file
|
@ -0,0 +1,40 @@
|
|||
<?php
|
||||
|
||||
namespace App\Form;
|
||||
|
||||
use App\Entity\DrinkType;
|
||||
use App\Entity\InventoryRecord;
|
||||
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class InventoryRecordForm extends AbstractType
|
||||
{
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
->add('quantity')
|
||||
->add('timestamp', null, [
|
||||
'widget' => 'single_text',
|
||||
])
|
||||
->add('createdAt', null, [
|
||||
'widget' => 'single_text',
|
||||
])
|
||||
->add('updatedAt', null, [
|
||||
'widget' => 'single_text',
|
||||
])
|
||||
->add('drinkType', EntityType::class, [
|
||||
'class' => DrinkType::class,
|
||||
'choice_label' => 'id',
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
'data_class' => InventoryRecord::class,
|
||||
]);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue