src/Controller/Web/CustomerController.php line 92

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Web;
  3. use App\Entity\Customer;
  4. use App\Entity\User;
  5. use App\Form\CustomerType;
  6. use App\Repository\CustomerRepository;
  7. use App\Repository\UserRepository;
  8. use App\Services\GeneratorService;
  9. use Doctrine\ORM\ORMException;
  10. use GuzzleHttp\Exception\GuzzleException;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\JsonResponse;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. class CustomerController extends AbstractController
  18. {
  19.     private UserRepository $userRepository;
  20.     private CustomerRepository $customerRepository;
  21.     private GeneratorService $generatorService;
  22.     /**
  23.      * @param UserRepository $userRepository
  24.      * @param CustomerRepository $customerRepository
  25.      * @param GeneratorService $generatorService
  26.      */
  27.     public function __construct(
  28.         UserRepository $userRepository,
  29.         CustomerRepository $customerRepository,
  30.         GeneratorService $generatorService
  31.     ) {
  32.         $this->userRepository $userRepository;
  33.         $this->customerRepository $customerRepository;
  34.         $this->generatorService $generatorService;
  35.     }
  36.     /**
  37.      * @Route("/generator/add-new-customer", name="add_new_customer", options={"expose"=true})
  38.      * @param Request $request
  39.      * @return RedirectResponse|Response
  40.      * @throws ORMException
  41.      * @throws GuzzleException
  42.      */
  43.     public function addNewCustomer(Request $request): RedirectResponse|Response
  44.     {
  45.         /** @var User $user */
  46.         $user $this->getUser();
  47.         $allUsers $this->userRepository->findAllEnableUsers();
  48.         $customer = new Customer();
  49.         $form $this->createForm(
  50.             CustomerType::class,
  51.             $customer,
  52.             [
  53.                 'method' => 'POST',
  54.                 'user' => $allUsers
  55.             ]
  56.         );
  57.         $form->handleRequest($request);
  58.         if ($form->isSubmitted() && $form->isValid()) {
  59.             $customer $form->getData();
  60.             $customer->setCreatedAt(new \DateTime());
  61.             $customer->setEFakture($this->generatorService->isUserOnEfakture($customer->getPib()));
  62.             $this->customerRepository->save($customer);
  63.             $this->addFlash('success''Uspešno ste dodali korisnika.');
  64.             return $this->redirect($this->generateUrl('generator'));
  65.         }
  66.         return $this->render(
  67.             '@views/Customer/addNewCustomer.html.twig',
  68.             [
  69.                 'form'  => $form->createView(),
  70.             ]
  71.         );
  72.     }
  73.     /**
  74.      * @Route("/left-sms-messages", name="number_of_left_sms_messages", options={"expose"=true})
  75.      * @param Request $request
  76.      * @return RedirectResponse|Response
  77.      * @throws ORMException
  78.      */
  79.     public function numberOfLeftSmsMessages(Request $request)
  80.     {
  81.         /** @var User $user */
  82.         $user $this->getUser();
  83.         if ($user->getMainUser()) {
  84.             $user $user->getMainUser();
  85.         }
  86.         /** @var Customer|null $customer */
  87.         $customer $this->customerRepository->findOneBy(['user' => $user]);
  88.         return new JsonResponse([
  89.             'success' => true,
  90.             'leftSms' => $customer?->getNumberOfLeftMessages() ?? 0,
  91.         ]);
  92.     }
  93. }