src/Controller/AcceptanceOfDeliveryController.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Delivery;
  4. use App\Entity\Device;
  5. use App\Repository\DeliveryRepository;
  6. use App\Repository\DeviceModelRepository;
  7. use App\Repository\DeviceRepository;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Uid\Uuid;
  16. class AcceptanceOfDeliveryController extends AbstractController
  17. {
  18.     private DeviceModelRepository $deviceModelRepository;
  19.     private DeliveryRepository $deliveryRepository;
  20.     private DeviceRepository $deviceRepository;
  21.     /**
  22.      * @param DeviceModelRepository $deviceModelRepository
  23.      */
  24.     public function __construct(
  25.         DeviceModelRepository $deviceModelRepository,
  26.         DeliveryRepository $deliveryRepository,
  27.         DeviceRepository $deviceRepository
  28.     ) {
  29.         $this->deviceModelRepository $deviceModelRepository;
  30.         $this->deliveryRepository $deliveryRepository;
  31.         $this->deviceRepository $deviceRepository;
  32.     }
  33.     /**
  34.      * @Route("/acceptance/of/delivery", name="acceptance_of_delivery")
  35.      */
  36.     public function index(Request $request): Response
  37.     {
  38.         if ($request->getMethod() === 'POST') {
  39.             $form $request->request->get('form');
  40.             $deviceType $form['deviceType'];
  41.             $deliveryDate $form['deliveryDate'];
  42.             $deliveryNumber $form['deliveryNumber'];
  43.             $deviceSerialNumbers $form['devicesSerialNumber'];
  44.             $delivery = new Delivery(
  45.                 $deviceTypeId Uuid::fromString($deviceType),
  46.                 $deliveryNumber ?? 'brak numeru dostawy',
  47.                 new \DateTimeImmutable($deliveryDate)
  48.             );
  49.             $delivery->addDevice($deviceSerialNumbers);
  50.             $devices = [];
  51.             foreach ($deviceSerialNumbers as $deviceSerialNumber) {
  52.                 if ($this->deviceRepository->findDeviceBySerialNumber($deviceSerialNumber) === null) {
  53.                     $devices[] = new Device(
  54.                         $deviceTypeId,
  55.                         $deviceSerialNumber
  56.                     );
  57.                 }
  58.             }
  59.             $this->deliveryRepository->save($delivery);
  60.             $this->deviceRepository->saveArray($devices);
  61.         }
  62.         return $this->render('acceptance_of_delivery/index.html.twig', [
  63.             'controller_name' => 'AcceptanceOfDeliveryController',
  64.             'devicesModel' => $this->deviceModelRepository->findActiveAll(),
  65.         ]);
  66.     }
  67. }