src/Controller/NewOrderController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\DisassembledDevice;
  4. use App\Entity\Order;
  5. use App\Repository\DeviceModelRepository;
  6. use App\Repository\DeviceRepository;
  7. use App\Repository\DisassemledDeviceRepository;
  8. use App\Repository\OrderRepository;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Uid\Uuid;
  14. class NewOrderController extends AbstractController
  15. {
  16.     private DeviceModelRepository $deviceModelRepository;
  17.     private OrderRepository $orderRepository;
  18.     private DisassemledDeviceRepository $dissasemledDeviceRepository;
  19.     private DeviceRepository $deviceRepository;
  20.     /**
  21.      * @param DeviceModelRepository $deviceModelRepository
  22.      */
  23.     public function __construct(
  24.         DeviceModelRepository $deviceModelRepository,
  25.         OrderRepository $orderRepository,
  26.         DisassemledDeviceRepository $disassemledDeviceRepository,
  27.         DeviceRepository $deviceRepository
  28.     ) {
  29.         $this->deviceModelRepository $deviceModelRepository;
  30.         $this->orderRepository $orderRepository;
  31.         $this->dissasemledDeviceRepository $disassemledDeviceRepository;
  32.         $this->deviceRepository $deviceRepository;
  33.     }
  34.     /**
  35.      * @Route("/new/order", name="new_order")
  36.      */
  37.     public function index(Request $request): Response
  38.     {
  39.         if ($request->getMethod() === 'POST') {
  40.             $form $request->request->get('form');
  41.             $orderDate = new \DateTimeImmutable($form['orderDate']);
  42.             $orderAddress $form['orderAddress'];
  43.             $orderNumber $form['orderNumber'];
  44.             $disassembledDeviceTypeIds $form['disassembledDeviceTypeId'] ?? [];
  45.             $disassembledSerialNumbers $form['disassembledSerialNumber'] ?? [];
  46.             $assembledIds $form['assembledId'] ?? [];
  47.             $disassembledDevices = [];
  48.             foreach ($disassembledDeviceTypeIds as $key => $disassembledDeviceTypeId) {
  49.                 $deviceModel $this->deviceModelRepository->findOneById(Uuid::fromString($disassembledDeviceTypeId));
  50.                 $disassembledDevices[] = [
  51.                     'name' => $deviceModel->getName(),
  52.                     'indeks' => $deviceModel->getIndeks(),
  53.                     'serialNumber' => $disassembledSerialNumbers[$key]
  54.                 ];
  55.                 $this->dissasemledDeviceRepository->save(
  56.                     new DisassembledDevice(
  57.                         Uuid::fromString($disassembledDeviceTypeId),
  58.                         $disassembledSerialNumbers[$key],
  59.                         $orderDate
  60.                     )
  61.                 );
  62.             }
  63.             $assembled = [];
  64.             $engineer '';
  65.             foreach ($assembledIds as $assembledId) {
  66.                 $this->deviceRepository->assembled(
  67.                     Uuid::fromString($assembledId),
  68.                     $orderDate,
  69.                     $orderNumber
  70.                 );
  71.                 $device $this->deviceRepository->findDeviceById(Uuid::fromString($assembledId));
  72.                 if (empty($engineer) && !empty($device['engineer'])) {
  73.                     $engineer $device['engineer'];
  74.                 }
  75.                 $assembled[] = [
  76.                     'name' => $device['name'],
  77.                     'indeks' => $device['indeks'],
  78.                     'serialNumber' => $device['serial_number']
  79.                 ];
  80.             }
  81.             $order = new Order();
  82.             $order->setOrderDate($orderDate);
  83.             $order->setAddress(mb_strtoupper($orderAddress));
  84.             $order->setOrderNumber(mb_strtoupper($orderNumber));
  85.             $order->setDisassembled($disassembledDevices);
  86.             $order->setAssembled($assembled);
  87.             $order->setEngineer($engineer);
  88.             $order->setCreatedBy($this->getUser()->getFullName());
  89.             $this->orderRepository->save($order);
  90.         }
  91.         return $this->render('new_order/index.html.twig', [
  92.             'workday' => (new \DateTime('-1 weekday'))->format('Y-m-d'),
  93.             'devicesModel' => $this->deviceModelRepository->findAll()
  94.         ]);
  95.     }
  96. }