src/Controller/AdminInvoicesController.php line 1207

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use App\Forms\Admin\AdminUserForm;
  6. use App\Helpers\InvoicesHelper;
  7. use App\Helpers\PreordersHelper;
  8. use App\Helpers\EmailHelper;
  9. use Symfony\Component\Validator\Constraints\File;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  13. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  14. use Symfony\Component\Form\Extension\Core\Type\DateType;
  15. use Symfony\Component\Form\Extension\Core\Type\UrlType;
  16. use Symfony\Component\Filesystem\Filesystem;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  19. use Symfony\Component\HttpFoundation\JsonResponse;
  20. use App\Entity\Invoices;
  21. use App\Entity\InvoicesPayers;
  22. use App\Entity\Reminders;
  23. use Symfony\Component\String\Slugger\SluggerInterface;
  24. use Knp\Component\Pager\PaginatorInterface;
  25. use App\Managements\SettingsManagement;
  26. use Symfony\Contracts\Translation\TranslatorInterface;
  27. use App\Managements\InvoicesManagement;
  28. use App\Forms\Admin\AdminInvoiceForm;
  29. use Doctrine\ORM\EntityManagerInterface;
  30. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  31. use Doctrine\DBAL\Driver\Connection;
  32. use App\Entity\Users;
  33. use App\Managements\PreordersManagement;
  34. use App\Managements\Logs as LogsManagement;
  35. use App\Helpers\Logs as LogsHelper;
  36. use App\Managements\PayersManagement;
  37. class AdminInvoicesController extends AbstractController
  38. {
  39.     /**
  40.      * @var EntityManagerInterface
  41.      */
  42.     private $entityManager;
  43.     public function __construct(
  44.         SluggerInterface $slugger,
  45.         EntityManagerInterface $entityManager,
  46.         TokenStorageInterface $tokenStorage,
  47.         TranslatorInterface $translator,
  48.         PayersManagement $payersManagement,
  49.         // $activeMenuParent = 'admin_invoices'
  50.     ) {
  51.         $this->slugger $slugger;
  52.         $this->translator $translator;
  53.         $this->tokenStorage $tokenStorage;
  54.         $this->entityManager $entityManager;
  55.         $this->activeMenuParent 'admin_invoices';
  56.         $this->ordering = array();
  57.         $this->filters = array();
  58.         $this->incompletePayers $payersManagement->loadIncomplete();
  59.         (!isset($_SESSION['accessModules'])) ? $_SESSION['accessModules'] = [] : '';
  60.     }
  61.     /**
  62.      * @Route("/admin/faktury-old", name="admin_invoices_old")
  63.      */
  64.     public function old_index(
  65.         InvoicesManagement $invoicesManagement,
  66.         SettingsManagement $settingsManagement,
  67.         InvoicesHelper $invoicesHelper,
  68.         EmailHelper $emailHelper,
  69.         PaginatorInterface $paginator,
  70.         Request $request
  71.     ) {
  72.         if ($this->getUser()) {
  73.             $access $this->getDoctrine()->getRepository(Users::class)->findOneBy(array("email" => $this->getUser()->getEmail()))->getAccessModules();
  74.             $_SESSION['accessModules'] = explode(","$access);
  75.         }
  76.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  77.             $summary 0;
  78.             $title 'Lista faktur';
  79.             $searchForm $this->invoicesFilterForm();
  80.             $searchForm->handleRequest($request);
  81.             if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  82.                 $this->filters $searchForm->getData();
  83.             }
  84.             $this->filters['status'] = 'active';
  85.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  86.             // dd($items);
  87.             //UPDATE `invoices` SET `number_int`=REPLACE(`number`, '/','') WHERE `number_int` IS NULL;
  88.             $items $invoicesHelper->prepareForListing($items);
  89.             foreach ($items as $item) {
  90.                 $summary $summary $item['value'];
  91.             }
  92.             // dump($items);
  93.             $items $paginator->paginate($items$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  94.             $this->filters['deadline'] = 1;
  95.             $this->filters['sorting'] = 'deadline';
  96.             $items1 $invoicesManagement->load(null$this->filters$this->ordering);
  97.             $items1 $invoicesHelper->prepareForListing($items1);
  98.             $items1 $paginator->paginate($items1$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  99.             $this->filters = array();
  100.             return $this->render('Admin/Invoices/list.html.twig', [
  101.                 'accessModules' => $_SESSION['accessModules'],
  102.                 'incompletePayers' => $this->incompletePayers,
  103.                 'title' => $title,
  104.                 'activeMenuParent' => $this->activeMenuParent,
  105.                 'searchForm' => $searchForm->createView(),
  106.                 'items' => $items,
  107.                 'items1' => $items1,
  108.                 'summary' => $summary
  109.             ]);
  110.         } else {
  111.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  112.         }
  113.     }
  114.     /**
  115.      * @Route("/admin/faktury", name="admin_invoices")
  116.      */
  117.     public function index(
  118.         InvoicesManagement $invoicesManagement,
  119.         SettingsManagement $settingsManagement,
  120.         InvoicesHelper $invoicesHelper,
  121.         EmailHelper $emailHelper,
  122.         PaginatorInterface $paginator,
  123.         Request $request
  124.     ) {
  125.         if ($this->getUser()) {
  126.             $access $this->getDoctrine()->getRepository(Users::class)->findOneBy(array("email" => $this->getUser()->getEmail()))->getAccessModules();
  127.             $_SESSION['accessModules'] = explode(","$access);
  128.         }
  129.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  130.             $summary 0;
  131.             $title 'Lista faktur';
  132.             $searchForm $this->invoicesFilterForm();
  133.             $searchForm->handleRequest($request);
  134.             if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  135.                 $this->filters $searchForm->getData();
  136.             }
  137.             $this->filters['status'] = 'active';
  138.             $this->filters['opcjonalne'] = false;
  139.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  140.             // dd($items);
  141.             //UPDATE `invoices` SET `number_int`=REPLACE(`number`, '/','') WHERE `number_int` IS NULL;
  142.             $items $invoicesHelper->prepareForListing2($items);
  143.             foreach ($items as $item) {
  144.                 $summary $summary $item['value'];
  145.             }
  146.             dump($items);
  147.             $items $paginator->paginate($items$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  148.             $this->filters['deadline'] = 1;
  149.             $this->filters['sorting'] = 'deadline';
  150.             $items1 $invoicesManagement->load(null$this->filters$this->ordering);
  151.             $items1 $invoicesHelper->prepareForListing2($items1);
  152.             $items1 $paginator->paginate($items1$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  153.             $this->filters = array();
  154.             return $this->render('Admin/Invoices/listing.html.twig', [
  155.                 'accessModules' => $_SESSION['accessModules'],
  156.                 'incompletePayers' => $this->incompletePayers,
  157.                 'title' => $title,
  158.                 'activeMenuParent' => $this->activeMenuParent,
  159.                 'searchForm' => $searchForm->createView(),
  160.                 'items' => $items,
  161.                 'items1' => $items1,
  162.                 'summary' => $summary
  163.             ]);
  164.         } else {
  165.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  166.         }
  167.     }
  168.     /**
  169.      * @Route("/admin/faktury-opcjonalne", name="admin_invoices_opt")
  170.      */
  171.     public function index_opt(
  172.         InvoicesManagement $invoicesManagement,
  173.         SettingsManagement $settingsManagement,
  174.         InvoicesHelper $invoicesHelper,
  175.         EmailHelper $emailHelper,
  176.         PaginatorInterface $paginator,
  177.         Request $request
  178.     ) {
  179.         if ($this->getUser()) {
  180.             $access $this->getDoctrine()->getRepository(Users::class)->findOneBy(array("email" => $this->getUser()->getEmail()))->getAccessModules();
  181.             $_SESSION['accessModules'] = explode(","$access);
  182.         }
  183.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  184.             $summary 0;
  185.             $title 'Lista faktur opcjonalnych';
  186.             $searchForm $this->invoicesFilterForm();
  187.             $searchForm->handleRequest($request);
  188.             if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  189.                 $this->filters $searchForm->getData();
  190.             }
  191.             $this->filters['status'] = 'active';
  192.             $this->filters['opcjonalne'] = true;
  193.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  194.             // dd($items);
  195.             //UPDATE `invoices` SET `number_int`=REPLACE(`number`, '/','') WHERE `number_int` IS NULL;
  196.             $items $invoicesHelper->prepareForListing2($items);
  197.             foreach ($items as $item) {
  198.                 $summary $summary $item['value'];
  199.             }
  200.             // dump($items);
  201.             $items $paginator->paginate($items$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  202.             $this->filters['deadline'] = 1;
  203.             $this->filters['sorting'] = 'deadline';
  204.             $items1 $invoicesManagement->load(null$this->filters$this->ordering);
  205.             $items1 $invoicesHelper->prepareForListing2($items1);
  206.             $items1 $paginator->paginate($items1$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  207.             $this->filters = array();
  208.             return $this->render('Admin/Invoices/listing.html.twig', [
  209.                 'accessModules' => $_SESSION['accessModules'],
  210.                 'incompletePayers' => $this->incompletePayers,
  211.                 'title' => $title,
  212.                 'activeMenuParent' => $this->activeMenuParent,
  213.                 'searchForm' => $searchForm->createView(),
  214.                 'items' => $items,
  215.                 'items1' => $items1,
  216.                 'summary' => $summary
  217.             ]);
  218.         } else {
  219.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  220.         }
  221.     }
  222.     /**
  223.      * @Route("/admin/faktury/subiekt", name="admin_subiekt_invoices")
  224.      */
  225.     public function subiekt(
  226.         InvoicesManagement $invoicesManagement,
  227.         SettingsManagement $settingsManagement,
  228.         InvoicesHelper $invoicesHelper,
  229.         EmailHelper $emailHelper,
  230.         PaginatorInterface $paginator,
  231.         Request $request
  232.     ) {
  233.         if ($this->getUser()) {
  234.             $access $this->getDoctrine()->getRepository(Users::class)->findOneBy(array("email" => $this->getUser()->getEmail()))->getAccessModules();
  235.             $_SESSION['accessModules'] = explode(","$access);
  236.         }
  237.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  238.             $summary 0;
  239.             $title 'Faktury z importu Subiekt';
  240.             $searchForm $this->invoicesFilterForm2();
  241.             $searchForm->handleRequest($request);
  242.             if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  243.                 $this->filters $searchForm->getData();
  244.             }
  245.             $this->filters['status'] = 'subiekt';
  246.             $this->filters['sorting'] = 'number';
  247.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  248.             $items $invoicesHelper->prepareForListing($items);
  249.             foreach ($items as $item) {
  250.                 $summary $summary $item['value'];
  251.             }
  252.             $items $paginator->paginate($items$request->query->getInt('page'1), 100);
  253.             $this->filters['deadline'] = 1;
  254.             $this->filters['sorting'] = 'deadline';
  255.             $items1 $invoicesManagement->load(null$this->filters$this->ordering);
  256.             $items1 $invoicesHelper->prepareForListing($items1);
  257.             $items1 $paginator->paginate($items1$request->query->getInt('page'1), 100);
  258.             $this->filters = array();
  259.             return $this->render('Admin/Invoices/subiekt-list.html.twig', [ 
  260.                 'accessModules' => $_SESSION['accessModules'],
  261.                 'source' => 'subiekt',
  262.                 'incompletePayers' => $this->incompletePayers,
  263.                 'title' => $title,
  264.                 'activeMenuParent' => $this->activeMenuParent,
  265.                 'searchForm' => $searchForm->createView(),
  266.                 'items' => $items,
  267.                 'items1' => $items1,
  268.                 'summary' => $summary
  269.             ]);
  270.         } else {
  271.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  272.         }
  273.     }
  274.     /**
  275.      * @Route("/admin/faktury/fakturownia", name="admin_fakturownia_invoices")
  276.      */
  277.     public function fakturownia(
  278.         InvoicesManagement $invoicesManagement,
  279.         SettingsManagement $settingsManagement,
  280.         InvoicesHelper $invoicesHelper,
  281.         EmailHelper $emailHelper,
  282.         PaginatorInterface $paginator,
  283.         Request $request
  284.     ) {
  285.         if ($this->getUser()) {
  286.             $access $this->getDoctrine()->getRepository(Users::class)->findOneBy(array("email" => $this->getUser()->getEmail()))->getAccessModules();
  287.             $_SESSION['accessModules'] = explode(","$access);
  288.         }
  289.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  290.             $summary 0;
  291.             $title 'Faktury z importu Fakturownia';
  292.             $searchForm $this->invoicesFilterForm2();
  293.             $searchForm->handleRequest($request);
  294.             if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  295.                 $this->filters $searchForm->getData();
  296.             }
  297.             $this->filters['status'] = 'fakturownia';
  298.             $this->filters['sorting'] = 'number';
  299.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  300.             $items $invoicesHelper->prepareForListing($items);
  301.             foreach ($items as $item) {
  302.                 $summary $summary $item['value'];
  303.             }
  304.             $items $paginator->paginate($items$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  305.             $this->filters['deadline'] = 1;
  306.             $this->filters['sorting'] = 'deadline';
  307.             $items1 $invoicesManagement->load(null$this->filters$this->ordering);
  308.             $items1 $invoicesHelper->prepareForListing($items1);
  309.             $items1 $paginator->paginate($items1$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  310.             $this->filtedrs = array();
  311.             return $this->render('Admin/Invoices/subiekt-list.html.twig', [
  312.                 'accessModules' => $_SESSION['accessModules'],
  313.                 'source' => 'fakturownia',
  314.                 'incompletePayers' => $this->incompletePayers,
  315.                 'title' => $title,
  316.                 'activeMenuParent' => $this->activeMenuParent,
  317.                 'searchForm' => $searchForm->createView(),
  318.                 'items' => $items,
  319.                 'items1' => $items1,
  320.                 'summary' => $summary
  321.             ]);
  322.         } else {
  323.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  324.         }
  325.     }
  326.     /**
  327.      * @Route("/admin/prognozy", name="admin_forecasts")
  328.      */
  329.     public function forecasts(
  330.         InvoicesManagement $invoicesManagement,
  331.         SettingsManagement $settingsManagement,
  332.         PreordersManagement $preordersManagement,
  333.         InvoicesHelper $invoicesHelper,
  334.         PreordersHelper $preordersHelper,
  335.         PaginatorInterface $paginator,
  336.         Request $request
  337.     ) {
  338.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  339.             $title 'Prognozy';
  340.             $items $invoicesManagement->load(null$this->filters$this->ordering);
  341.             $items $invoicesHelper->prepareForecastsForListing($items);
  342.             $total $preorders_total $forecast_sum 0.00;
  343.             $sum $preorders_sum 0;
  344.             foreach ($items as $item) {
  345.                 $total $total $item['value'];
  346.                 $sum++;
  347.             }
  348.             $preorders $preordersManagement->load(null, array("status" => 'active'), $this->ordering);
  349.             $preorders $preordersHelper->prepareForecastsForListing($preorders);
  350.             foreach ($preorders as $forecast_nr => $forecast) {
  351.                 $forecast_sum 0.00;
  352.                 // dump($forecast);
  353.                 foreach ($forecast as $trans) {
  354.                     $value = @$this->toFloat(($trans));
  355.                     $forecast_sum $forecast_sum $value;
  356.                     $preorders_total $preorders_total $value;
  357.                     $preorders_sum++;
  358.                 }
  359.                 $preorders[$forecast_nr] = number_format($forecast_sum2','' ');
  360.             }
  361.             // die();
  362.             $preorders_total number_format($preorders_total2','' ');
  363.             // dump($preorders);die();
  364.             $items $paginator->paginate($items$request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  365.             return $this->render('Admin/Invoices/forecasts.html.twig', [
  366.                 'accessModules' => $_SESSION['accessModules'],
  367.                 'incompletePayers' => $this->incompletePayers,
  368.                 'title' => $title,
  369.                 'activeMenuParent' => $this->activeMenuParent,
  370.                 'items' => $items,
  371.                 'total' => $total,
  372.                 'sum' => $sum,
  373.                 'preorders' => $preorders,
  374.                 'preorders_total' => $preorders_total,
  375.                 'preorders_sum' => $preorders_sum
  376.             ]);
  377.         } else {
  378.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  379.         }
  380.     }
  381.     private function toFloat($number)
  382.     {
  383.         $floated 0.00;
  384.         $value str_replace(' '''$number);
  385.         // dump($value);
  386.         $value preg_replace('/\s+/'''$value);
  387.         // dump($value);
  388.         $value str_replace(',''.'$value);
  389.         // dump($value);
  390.         // $value = number_format($value, 2, '.', '');
  391.         $floated += $value;
  392.         return $floated;
  393.     }
  394.     /**
  395.      * @Route("/admin/faktury/edytuj/{id}", name="admin_edit_invoice")
  396.      */
  397.     public function edit(
  398.         $id,
  399.         InvoicesManagement $invoicesManagement,
  400.         LogsManagement $logsManagement,
  401.         InvoicesHelper $invoicesHelper,
  402.         Request $request
  403.     ) {
  404.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  405.             $item $invoicesManagement->load($idnullnull);
  406.             if ($item->getStatus() == 'fakturownia') {
  407.                 $urlredirect 'admin_fakturownia_invoices';
  408.             }
  409.             if ($item->getStatus() == 'subiekt') {
  410.                 $urlredirect 'admin_subiekt_invoices';
  411.             }
  412.             if ($item->getStatus() == 'active') {
  413.                 $urlredirect 'admin_invoices';
  414.             }
  415.             $title 'Faktura ' $item->getNumber();
  416.             $form $this->createForm(AdminInvoiceForm::class, $item);
  417.             $form->handleRequest($request);
  418.             if ($form->isSubmitted() && $form->isValid()) {
  419.                 $service '';
  420.                 $item $form->getData();
  421.                 $item->setStatus($item->getStatus());
  422.                 $item->setNumberInt(intval(str_replace('/'''$item->getNumber())));
  423.                 if ($item->getPozycjonowanie() == 1) {
  424.                     $service .= 'Pozycjonowanie, ';
  425.                 }
  426.                 if ($item->getGads() == 1) {
  427.                     $service .= 'Google Ads, ';
  428.                 }
  429.                 if ($item->getFads() == 1) {
  430.                     $service .= 'Facebook Ads, ';
  431.                 }
  432.                 if ($item->getOpinie() == 1) {
  433.                     $service .= 'Opinie, ';
  434.                 }
  435.                 if ($item->getReklama() == 1) {
  436.                     $service .= 'Działania reklamowe, ';
  437.                 }
  438.                 if ($item->getDomena() == 1) {
  439.                     $service .= 'Domena, ';
  440.                 }
  441.                 if ($item->getHosting() == 1) {
  442.                     $service .= 'Hosting, ';
  443.                 }
  444.                 if ($item->getSslt() == 1) {
  445.                     $service .= 'SSL, ';
  446.                 }
  447.                 if ($item->getRata() == 1) {
  448.                     $service .= 'WWW Rata, ';
  449.                 }
  450.                 if ($item->getPrototyp() == 1) {
  451.                     $service .= 'WWW Prototyp, ';
  452.                 }
  453.                 if ($item->getGrafika() == 1) {
  454.                     $service .= 'WWW Grafika, ';
  455.                 }
  456.                 if ($item->getProgramowanie() == 1) {
  457.                     $service .= 'WWW Programowanie, ';
  458.                 }
  459.                 if ($item->isPraceProgramistyczne() == 1) {
  460.                     $service .= 'Prace Programistyczne, ';
  461.                 }
  462.                 if ($item->getAktualizacja() == 1) {
  463.                     $service .= 'Aktualizacja, ';
  464.                 }
  465.                 if ($item->getOpieka() == 1) {
  466.                     $service .= 'Opieka, ';
  467.                 }
  468.                 if ($item->isOpiekaWizytowka() == 1) {
  469.                     $service .= 'Opieka nad wizytówką, ';
  470.                 }
  471.                 if ($item->getArchiwizacja() == 1) {
  472.                     $service .= 'Archiwizacja, ';
  473.                 }
  474.                 if ($item->getId() >= 715) {
  475.                     $item->setService($service);
  476.                 }
  477.                 $item->setGrossValue(str_replace(',''.'$item->getGrossValue()));
  478.                 // dump($item);
  479.                 // die();
  480.                 $item->setCustomerPrio($item->getCustomerPrio());
  481.                 $item->setCreatedDate(new \DateTime());
  482.                 ('active');
  483.                 if (!is_null($item->getClient())) {
  484.                     $oldPayer $this->getDoctrine()->getRepository(InvoicesPayers::class)->FindOneBy(array('invoice' => $item));
  485.                     $this->entityManager->remove($oldPayer);
  486.                     $this->entityManager->flush();
  487.                     $payer $invoicesManagement->loadPayer($item->getClient(), nullnull);
  488.                     $clientData = array(
  489.                         "name" => $payer->getName(),
  490.                         "email" => $payer->getEmail(),
  491.                         "phone" => $payer->getPhone(),
  492.                         "notify" => $payer->getNotify(),
  493.                         "description" => $payer->getDescription(),
  494.                         "invoice" => $item
  495.                     );
  496.                     $invoicesManagement->createPayer($clientData);
  497.                 }
  498.                 $entityManager $this->getDoctrine()->getManager();
  499.                 $entityManager->persist($item);
  500.                 $entityManager->flush();
  501.                 $this->addFlash('success'$this->translator->trans('Success updated'));
  502.                 $item $invoicesHelper->prepareInvoiceDetails($item);
  503.                 $data = array(
  504.                     "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  505.                     "path" => $request->getPathInfo(),
  506.                     "action" => "Edycja faktury - [" $item['symbol'] . "]" $item['number'],
  507.                     "ip" => $request->getClientIp()
  508.                 );
  509.                 $logsManagement->createPanelEntry($data);
  510.                 return $this->redirectToRoute($urlredirect);
  511.             }
  512.             $item $invoicesHelper->prepareInvoiceDetails($item);
  513.             $reminds = array();
  514.             // if(isset($item['payer'])){
  515.             $reminders $this->getDoctrine()->getRepository(Reminders::class)->FindBy(array('client' => $item['payer']->getId()));
  516.             foreach ($reminders as $remind) {
  517.                 $name "SMS";
  518.                 if ($remind->getType() == "2") {
  519.                     $name "E-mail";
  520.                 }
  521.                 $reminds[] = array(
  522.                     'createdDate' => date_format($remind->getCreatedDate(), 'd-m-Y'),
  523.                     'name' => $name
  524.                 );
  525.             }
  526.             // }
  527.             return $this->render('Admin/Invoices/details.html.twig', [
  528.                 'accessModules' => $_SESSION['accessModules'],
  529.                 'incompletePayers' => $this->incompletePayers,
  530.                 'title' => $title,
  531.                 'activeMenuParent' => $this->activeMenuParent,
  532.                 'item' => $item,
  533.                 'reminders' => $reminds,
  534.                 'form' => $form->createView(),
  535.             ]);
  536.         } else {
  537.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  538.         }
  539.     }
  540.     /**
  541.      * @Route("/admin/faktury/klonuj/{id}", name="admin_clone_invoice")
  542.      */
  543.     public function clone(
  544.         $id,
  545.         InvoicesManagement $invoicesManagement,
  546.         LogsManagement $logsManagement,
  547.         InvoicesHelper $invoicesHelper,
  548.         Request $request
  549.     ) {
  550.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  551.             $origin $invoicesManagement->load($idnullnull);
  552.             $item = new Invoices();
  553.             $item->setId(null);
  554.             $item->setNumber($origin->getNumber() . '-Kopia');
  555.             $item->setStatus('active');
  556.             $item->setCustomerPrio($origin->getCustomerPrio());
  557.             $item->setCreatedDate(new \DateTime());
  558.             $item->setBillDate($origin->getBillDate());
  559.             $item->setDueDate($origin->getDueDate());
  560.             $item->setForecast($origin->getForecast());
  561.             $item->setCompany($origin->getCompany());
  562.             $item->setDeadlineNote($origin->getDeadlineNote());
  563.             $item->setService($origin->getService());
  564.             $item->setGrossValue($origin->getGrossValue());
  565.             $item->setType($origin->getType());
  566.             $entityManager $this->getDoctrine()->getManager();
  567.             $entityManager->persist($item);
  568.             $entityManager->flush();
  569.             foreach ($origin->getPayer() as $payer) {
  570.                 $payer $invoicesManagement->loadInvoicePayer($payer->getId(), nullnull);
  571.                 $clientData = array(
  572.                     "name" => $payer->getName(),
  573.                     "email" => $payer->getEmail(),
  574.                     "phone" => $payer->getPhone(),
  575.                     "notify" => $payer->getNotify(),
  576.                     "description" => $payer->getDescription(),
  577.                     "invoice" => $item
  578.                 );
  579.                 $invoicesManagement->createPayer($clientData);
  580.             }
  581.             $item $invoicesHelper->prepareInvoiceDetails($item);
  582.             $data = array(
  583.                 "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  584.                 "path" => $request->getPathInfo(),
  585.                 "action" => "Sklonowanie faktury ID - " $origin->getId() . " do pozycji - [" $item['symbol'] . "]" $item['number'],
  586.                 "ip" => $request->getClientIp()
  587.             );
  588.             $logsManagement->createPanelEntry($data);
  589.             return $this->redirectToRoute('admin_invoices');
  590.         } else {
  591.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  592.         }
  593.     }
  594.     /**
  595.      * @Route("/admin/faktury/dodaj", name="admin_add_invoice")
  596.      */
  597.     public function add(
  598.         InvoicesManagement $invoicesManagement,
  599.         InvoicesHelper $invoicesHelper,
  600.         LogsManagement $logsManagement,
  601.         Request $request
  602.     ) {
  603.         if (in_array($this->activeMenuParent$_SESSION['accessModules'])) {
  604.             $title "Dodaj fakturę";
  605.             $item = new Invoices();
  606.             $item->setNumber(date_format(new \DateTime(), '/m/Y'));
  607.             $item->setBillDate(new \DateTime());
  608.             $date date_format($item->getBillDate(), 'd-m-Y');
  609.             $billDate date('d-m-Y'strtotime($date ' + 7 days'));
  610.             $item->setDueDate(new \DateTime($billDate));
  611.             $form $this->createForm(AdminInvoiceForm::class, $item);
  612.             $form->handleRequest($request);
  613.             if ($form->isSubmitted() && $form->isValid()) {
  614.                 $service '';
  615.                 $item $form->getData();
  616.                 if ($item->getPozycjonowanie() == 1) {
  617.                     $service .= 'Pozycjonowanie, ';
  618.                 }
  619.                 if ($item->getGads() == 1) {
  620.                     $service .= 'Google Ads, ';
  621.                 }
  622.                 if ($item->getFads() == 1) {
  623.                     $service .= 'Facebook Ads, ';
  624.                 }
  625.                 if ($item->getOpinie() == 1) {
  626.                     $service .= 'Opinie, ';
  627.                 }
  628.                 if ($item->getReklama() == 1) {
  629.                     $service .= 'Działania reklamowe, ';
  630.                 }
  631.                 if ($item->getDomena() == 1) {
  632.                     $service .= 'Domena, ';
  633.                 }
  634.                 if ($item->getHosting() == 1) {
  635.                     $service .= 'Hosting, ';
  636.                 }
  637.                 if ($item->getSslt() == 1) {
  638.                     $service .= 'SSL, ';
  639.                 }
  640.                 if ($item->getRata() == 1) {
  641.                     $service .= 'WWW Rata, ';
  642.                 }
  643.                 if ($item->getPrototyp() == 1) {
  644.                     $service .= 'WWW Prototyp, ';
  645.                 }
  646.                 if ($item->getGrafika() == 1) {
  647.                     $service .= 'WWW Grafika, ';
  648.                 }
  649.                 if ($item->getProgramowanie() == 1) {
  650.                     $service .= 'WWW Programowanie, ';
  651.                 }
  652.                 if ($item->isPraceProgramistyczne() == 1) {
  653.                     $service .= 'Prace Programistyczne, ';
  654.                 }
  655.                 if ($item->getAktualizacja() == 1) {
  656.                     $service .= 'Aktualizacja, ';
  657.                 }
  658.                 if ($item->getOpieka() == 1) {
  659.                     $service .= 'Opieka, ';
  660.                 }
  661.                 if ($item->isOpiekaWizytowka() == 1) {
  662.                     $service .= 'Opieka nad wizytówką, ';
  663.                 }
  664.                 if ($item->getArchiwizacja() == 1) {
  665.                     $service .= 'Archiwizacja, ';
  666.                 }
  667.                 if ($item->getLogo() == 1) {
  668.                     $service .= 'Logo, ';
  669.                 }
  670.                 if ($item->getIdentyfikacja() == 1) {
  671.                     $service .= 'Identyfikacja, ';
  672.                 }
  673.                 if ($item->getPgraficzne() == 1) {
  674.                     $service .= 'Projekty graficzne, ';
  675.                 }
  676.                 if ($item->getInne() == 1) {
  677.                     $service .= 'Inne, ';
  678.                 }
  679.                 $item->setService($service);
  680.                 $item->setNumberInt(intval(str_replace('/'''$item->getNumber())));
  681.                 $item->setStatus('active');
  682.                 $item->setCustomerPrio('neutral');
  683.                 $item->setCreatedDate(new \DateTime());
  684.                 $entityManager $this->getDoctrine()->getManager();
  685.                 $entityManager->persist($item);
  686.                 $entityManager->flush();
  687.                 $clientntity $invoicesManagement->loadPayer(intVal($item->getClient()), array(), array());
  688.                 $clientData = array(
  689.                     "name" => $clientntity->getName(),
  690.                     "email" => $clientntity->getEmail(),
  691.                     "phone" => $clientntity->getPhone(),
  692.                     "notify" => $clientntity->getNotify(),
  693.                     "description" => $clientntity->getDescription(),
  694.                     "invoice" => $item
  695.                 );
  696.                 $taxnumber = ($request->request->all()['taxnumber']) ? $request->request->all()['taxnumber'] : '';
  697.                 ($taxnumber) ? $clientData['tax_number'] = $taxnumber '';
  698.                 $invoicesManagement->createPayer($clientData);
  699.                 //$item = $invoicesHelper->prepareInvoiceDetails($item);
  700.                 $data = array(
  701.                     "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  702.                     "path" => $request->getPathInfo(),
  703.                     "action" => "Utworzenie faktury ID - " $item->getId(),
  704.                     "ip" => $request->getClientIp()
  705.                 );
  706.                 $logsManagement->createPanelEntry($data);
  707.                 $this->addFlash('success'$this->translator->trans('Success created'));
  708.                 return $this->redirectToRoute('admin_invoices');
  709.             }
  710.             // die();
  711.             return $this->render('Admin/Invoices/add.html.twig', [
  712.                 'accessModules' => $_SESSION['accessModules'],
  713.                 'incompletePayers' => $this->incompletePayers,
  714.                 'title' => $title,
  715.                 'activeMenuParent' => $this->activeMenuParent,
  716.                 'item' => $item,
  717.                 'form' => $form->createView(),
  718.             ]);
  719.         } else {
  720.             return $this->redirectToRoute($_SESSION['accessModules'][0]);
  721.         }
  722.     }
  723.     function invoicesFilterForm2($fields null)
  724.     {
  725.         $form $this->createFormBuilder();
  726.         $form $form->add('name'TextType::class, [
  727.             'required' => false,
  728.             'label' => 'Type tekst',
  729.             'label_attr' => ['class' => 'form-label'],
  730.             'attr' => [
  731.                 'style' => 'height: 50px',
  732.                 'class' => 'form-control pull-left'
  733.             ]
  734.         ]);
  735.         $form $form->add('forecast'ChoiceType::class, [
  736.             'label' => "Prognoza",
  737.             'choices' => array(
  738.                 'Wszystkie' => null,
  739.                 '0 dni - nie zapłacą' => 0,
  740.                 '1 dni - zapłacone' => 1,
  741.                 '3 dni' => 3,
  742.                 '7 dni' => 7,
  743.                 '10 dni' => 10,
  744.                 '14 dni' => 14,
  745.                 '21 dni' => 21,
  746.                 '30 dni - w kolejnym miesiącu' => 30,
  747.                 '60 dni - status niepewny' => 60,
  748.                 // 'Nie uwzględniaj' => 111,
  749.                 'Opcjonalne' => 888,
  750.                 'Nie przypominaj' => 999
  751.             ),
  752.             'attr' => [
  753.                 'style' => 'height: 50px',
  754.                 'class' => 'form-control'
  755.             ]
  756.         ]);
  757.         $form $form->add('company'ChoiceType::class, [
  758.             'label' => "Wystawca",
  759.             'choices' => array(
  760.                 '-Wybierz-' => null,
  761.                 'GOT' => 'GOT',
  762.                 'JDG' => 'JDG',
  763.                 'ZOO' => 'ZOO'
  764.             ),
  765.             'attr' => [
  766.                 'style' => 'height: 50px',
  767.                 'class' => 'form-control'
  768.             ]
  769.         ]);
  770.         $form $form->add('type'ChoiceType::class, [
  771.             'label' => 'Typ',
  772.             'choices' => [
  773.                 '-Wybierz-' => null,
  774.                 'PROFORMA' => 1,
  775.                 'FVAT' => 2,
  776.                 'NOTA KSIĘGOWA' => 3,
  777.                 'GOTÓWKA' => 4
  778.             ],
  779.             'attr' => [
  780.                 'style' => 'height: 50px',
  781.                 'class' => 'form-control select2'
  782.             ]
  783.         ]);
  784.         $form $form->add('dateFrom'DateType::class, [
  785.             'label' => 'Od',
  786.             'widget' => 'single_text',
  787.             'required' => false,
  788.             'format' => 'yyyy-MM-dd',
  789.             'attr' => [
  790.                 // 'value' => date_format(new \DateTime(), 'Y-m-d'),
  791.                 'class' => 'form-control'
  792.             ]
  793.         ]);
  794.         $form $form->add('dateTo'DateType::class, [
  795.             'label' => 'Do',
  796.             'widget' => 'single_text',
  797.             'required' => false,
  798.             'format' => 'yyyy-MM-dd',
  799.             'attr' => [
  800.                 'class' => 'form-control'
  801.             ]
  802.         ]);
  803.         // $form = $form->add('got', CheckboxType::class, [
  804.         //     'label'    => 'GOT',
  805.         //     'required' => false,
  806.         //     'attr' => ['class' => 'basicBox']
  807.         // ]);
  808.         // $form = $form->add('jdg', CheckboxType::class, [
  809.         //     'label'    => 'JDG',
  810.         //     'required' => false,
  811.         //     'attr' => ['class' => 'basicBox']
  812.         // ]);
  813.         // $form = $form->add('zoo', CheckboxType::class, [
  814.         //     'label'    => 'ZOO',
  815.         //     'required' => false,
  816.         //     'attr' => ['class' => 'basicBox']
  817.         // ]);
  818.         $form $form->add('sorting'ChoiceType::class, [
  819.             'label' => "Sortowanie",
  820.             'choices' => array(
  821.                 'Klient A-Z' => 'client',
  822.                 'Numer 1-N' => 'number'
  823.             ),
  824.             'attr' => [
  825.                 'style' => 'height: 50px',
  826.                 'class' => 'form-control'
  827.             ]
  828.         ]);
  829.         $form $form->add('save'SubmitType::class, [
  830.             'label' => 'Search',
  831.             'attr' => [
  832.                 'style' => 'height: 50px',
  833.                 'class' => 'btn btn-theme w-100'
  834.             ]
  835.         ]);
  836.         $form $form->getForm();
  837.         return $form;
  838.     }
  839.     function getForecasts()
  840.     {
  841.         $response = [
  842.             'Wszystkie' => null,
  843.             '0 dni - nie zapłacą' => 0,
  844.             '1 dni - zapłacone' => 1,
  845.             '3 dni' => 3,
  846.             '7 dni' => 7,
  847.             '10 dni' => 10,
  848.             '14 dni' => 14,
  849.             '21 dni' => 21,
  850.             '30 dni - w kolejnym miesiącu' => 30,
  851.             '60 dni - status niepewny' => 60,
  852.             // 'Nie uwzględniaj' => 111,
  853.             'Opcjonalne' => 888,
  854.             'Nie przypominaj' => 999
  855.         ];
  856.         return $response;
  857.     }
  858.     function invoicesFilterForm($fields null)
  859.     {
  860.         $form $this->createFormBuilder();
  861.         $form $form->add('name'TextType::class, [
  862.             'required' => false,
  863.             'label' => 'Type tekst',
  864.             'label_attr' => ['class' => 'form-label'],
  865.             'attr' => [
  866.                 'style' => 'height: 50px',
  867.                 'class' => 'form-control pull-left'
  868.             ]
  869.         ]);
  870.         $form $form->add('forecast'ChoiceType::class, [
  871.             'label' => "Prognoza",
  872.             'choices' => $this->getForecasts(),
  873.             'attr' => [
  874.                 'style' => 'height: 50px',
  875.                 'class' => 'form-select'
  876.             ]
  877.         ]);
  878.         $form $form->add('company'ChoiceType::class, [
  879.             'label' => "Wystawca",
  880.             'choices' => array(
  881.                 '-Wybierz-' => null,
  882.                 'GOT' => 'GOT',
  883.                 'JDG' => 'JDG',
  884.                 'ZOO' => 'ZOO'
  885.             ),
  886.             'attr' => [
  887.                 'style' => 'height: 50px',
  888.                 'class' => 'form-select'
  889.             ]
  890.         ]);
  891.         $form $form->add('type'ChoiceType::class, [
  892.             'label' => 'Typ',
  893.             'choices' => [
  894.                 '-Wybierz-' => null,
  895.                 'PROFORMA' => 1,
  896.                 'FVAT' => 2,
  897.                 'NOTA KSIĘGOWA' => 3,
  898.                 'GOTÓWKA' => 4
  899.             ],
  900.             'attr' => [
  901.                 'style' => 'height: 50px',
  902.                 'class' => 'form-select select2'
  903.             ]
  904.         ]);
  905.         $form $form->add('dateFrom'DateType::class, [
  906.             'label' => 'Od',
  907.             'widget' => 'single_text',
  908.             'required' => false,
  909.             'format' => 'yyyy-MM-dd',
  910.             'attr' => [
  911.                 'style' => 'height: 50px',
  912.                 'class' => 'mt-2 form-control'
  913.             ]
  914.         ]);
  915.         $form $form->add('dateTo'DateType::class, [
  916.             'label' => 'Do',
  917.             'widget' => 'single_text',
  918.             'required' => false,
  919.             'format' => 'yyyy-MM-dd',
  920.             'attr' => [
  921.                 'style' => 'height: 50px',
  922.                 'class' => 'mt-2 form-control'
  923.             ]
  924.         ]);
  925.         $form $form->add('sorting'ChoiceType::class, [
  926.             'label' => "Sortowanie",
  927.             'choices' => array(
  928.                 'Klient A-Z' => 'client',
  929.                 'Numer 1-N' => 'number'
  930.             ),
  931.             'attr' => [
  932.                 'style' => 'height: 50px',
  933.                 'class' => 'form-select'
  934.             ]
  935.         ]);
  936.         $form $form->add('save'SubmitType::class, [
  937.             'label' => 'Search',
  938.             'attr' => [
  939.                 'style' => 'height: 50px',
  940.                 'class' => 'btn btn-theme w-100'
  941.             ]
  942.         ]);
  943.         $form $form->getForm();
  944.         return $form;
  945.     }
  946.     /**
  947.      * @Route("/admin/faktury/usun",  methods="POST")
  948.      */
  949.     function remove(
  950.         Request $request,
  951.         LogsManagement $logsManagement,
  952.         InvoicesManagement $invoicesManagement
  953.     ) {
  954.         $requestContent json_decode($request->getContent(), true);
  955.         if (isset($requestContent['source'])) {
  956.             if ($invoicesManagement->removAllFrom($requestContent['source'])) {
  957.                 return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  958.             } else {
  959.                 return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  960.             }
  961.         } else {
  962.             if ($invoicesManagement->remove($requestContent['id'])) {
  963.                 $data = array(
  964.                     "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  965.                     "path" => $request->getPathInfo(),
  966.                     "action" => "Kasowanie faktury ID - " $requestContent['id'],
  967.                     "ip" => $request->getClientIp()
  968.                 );
  969.                 $logsManagement->createPanelEntry($data);
  970.                 return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  971.             } else {
  972.                 return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  973.             }
  974.         }
  975.     }
  976.     /**
  977.      * @Route("/admin/faktury/akceptuj",  methods="POST")
  978.      */
  979.     function accept(
  980.         Request $request,
  981.         LogsManagement $logsManagement,
  982.         InvoicesManagement $invoicesManagement
  983.     ) {
  984.         $requestContent json_decode($request->getContent(), true);
  985.         if ($invoicesManagement->accept($requestContent['id'])) {
  986.             $data = array(
  987.                 "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  988.                 "path" => $request->getPathInfo(),
  989.                 "action" => "Akceptacja faktury ID - " $requestContent['id'],
  990.                 "ip" => $request->getClientIp()
  991.             );
  992.             $logsManagement->createPanelEntry($data);
  993.             return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  994.         } else {
  995.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  996.         }
  997.     }
  998.     /**
  999.      * @Route("/admin/faktury/prognozuj",  methods="POST")
  1000.      */
  1001.     function changeForecast(
  1002.         Request $request,
  1003.         LogsManagement $logsManagement,
  1004.         InvoicesManagement $invoicesManagement
  1005.     ) {
  1006.         $requestContent json_decode($request->getContent(), true);
  1007.         if ($invoicesManagement->changeForecast($requestContent['id'], $requestContent['value'])) {
  1008.             $data = array(
  1009.                 "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  1010.                 "path" => $request->getPathInfo(),
  1011.                 "action" => "Zmiana prognozy dla faktury ID - " $requestContent['id'],
  1012.                 "ip" => $request->getClientIp()
  1013.             );
  1014.             $logsManagement->createPanelEntry($data);
  1015.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  1016.         } else {
  1017.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  1018.         }
  1019.     }
  1020.     /**
  1021.      * @Route("/admin/faktury/zmien-wystawce",  methods="POST")
  1022.      */
  1023.     function changeCompany(
  1024.         Request $request,
  1025.         LogsManagement $logsManagement,
  1026.         InvoicesManagement $invoicesManagement
  1027.     ) {
  1028.         $requestContent json_decode($request->getContent(), true);
  1029.         if ($invoicesManagement->changeCompany($requestContent['id'], $requestContent['value'])) {
  1030.             $data = array(
  1031.                 "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  1032.                 "path" => $request->getPathInfo(),
  1033.                 "action" => "Zmiana wystawcy dla faktury ID - " $requestContent['id'],
  1034.                 "ip" => $request->getClientIp()
  1035.             );
  1036.             $logsManagement->createPanelEntry($data);
  1037.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  1038.         } else {
  1039.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  1040.         }
  1041.     }
  1042.     /**
  1043.      * @Route("/admin/faktury/add-position",  methods="POST")
  1044.      */
  1045.     function addPosition(
  1046.         Request $request,
  1047.         InvoicesManagement $invoicesManagement
  1048.     ) {
  1049.         $requestContent json_decode($request->getContent(), true);
  1050.         if ($invoicesManagement->addPosition($requestContent['id'], $requestContent['name'], $requestContent['deadline'])) {
  1051.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  1052.         } else {
  1053.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  1054.         }
  1055.     }
  1056.     /**
  1057.      * @Route("/admin/faktury/remove-position",  methods="POST")
  1058.      */
  1059.     function removePosition(
  1060.         Request $request,
  1061.         InvoicesManagement $invoicesManagement
  1062.     ) {
  1063.         $requestContent json_decode($request->getContent(), true);
  1064.         if ($invoicesManagement->removePosition($requestContent['id'])) {
  1065.             return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  1066.         } else {
  1067.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  1068.         }
  1069.     }
  1070.     /**
  1071.      * @Route("/admin/faktury/zmien-kolor",  methods="POST")
  1072.      */
  1073.     function changeCustomerPrio(
  1074.         Request $request,
  1075.         LogsManagement $logsManagement,
  1076.         InvoicesManagement $invoicesManagement
  1077.     ) {
  1078.         $requestContent json_decode($request->getContent(), true);
  1079.         if ($invoicesManagement->changeCustomerPrio($requestContent['id'], $requestContent['value'])) {
  1080.             $data = array(
  1081.                 "user" => $this->tokenStorage->getToken()->getUser()->getEmail(),
  1082.                 "path" => $request->getPathInfo(),
  1083.                 "action" => "Zmiana koloru dla faktury ID - " $requestContent['id'],
  1084.                 "ip" => $request->getClientIp()
  1085.             );
  1086.             $logsManagement->createPanelEntry($data);
  1087.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  1088.         } else {
  1089.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  1090.         }
  1091.     }
  1092.     /**
  1093.      * @Route("/admin/invoice/check-num",  methods="POST")
  1094.      */
  1095.     function checkNum(
  1096.         Request $request,
  1097.         InvoicesManagement $invoicesManagement
  1098.     ) {
  1099.         $requestContent json_decode($request->getContent(), true);
  1100.         $this->filters = array("number" => $requestContent['number'], "company" => $requestContent['company']);
  1101.         $item $invoicesManagement->load(null$this->filters$this->ordering);
  1102.         if (empty($item)) {
  1103.             return new JsonResponse(['isset' => false], JsonResponse::HTTP_OK);
  1104.         } else {
  1105.             return new JsonResponse(['isset' => true], JsonResponse::HTTP_OK);
  1106.         }
  1107.     }
  1108.     /**
  1109.      * @Route("/admin/faktury/ponaglenie1",  methods="POST")
  1110.      */
  1111.     function notify1(
  1112.         Request $request,
  1113.         InvoicesHelper $invoicesHelper,
  1114.         InvoicesManagement $invoicesManagement
  1115.     ) {
  1116.         $requestContent json_decode($request->getContent(), true);
  1117.         $invoice $invoicesManagement->load($requestContent['id'], array(), array());
  1118.         $invoice $invoicesHelper->prepareInvoiceDetails($invoice);
  1119.         $tel =  $invoice['payer']->getPhone();
  1120.         // $tel =  '602850051'; 
  1121.         // dump($tel);
  1122.         // die();
  1123.         // $tel =  '727964646';
  1124.         $value $invoice['grossValue'];
  1125.         $invoiceNumber $invoice['number'];
  1126.         if ($invoice['type'] == "4") {
  1127.             $invoiceNumber $invoice['service'];
  1128.             $item "usługi";
  1129.         } else {
  1130.             $invoiceNumber $invoice['number'];
  1131.             $item "dokumentu";
  1132.         }
  1133.         $config = new \Doctrine\DBAL\Configuration();
  1134.         $connectionParams = array(
  1135.             'dbname' => 'gdbsmeskom31',
  1136.             'user' => 'dbguser24911',
  1137.             'password' => '4zkwNhjM',
  1138.             'host' => 'mysql1.smeskom.pl',
  1139.             'driver' => 'pdo_mysql',
  1140.             'charset' => 'utf8mb4'
  1141.         );
  1142.         if ($tel != '' && !is_null($tel)) {
  1143.             $conn \Doctrine\DBAL\DriverManager::getConnection($connectionParams$config);
  1144.             $sql "INSERT INTO sms_out (send_after, msisdn, body) VALUES('', '" $tel "', 'Przypominamy o opłaceniu " $item " " $invoiceNumber " na kwotę " $value " zł netto. Prosimy o uregulowanie należności. Pozdrawamy serdecznie FREELINE.')";
  1145.             try {
  1146.                 $conn->query($sql);
  1147.                 $remind = new Reminders();
  1148.                 $remind->setCreatedDate(new \DateTime());
  1149.                 $remind->setType('1');
  1150.                 $remind->setClient($invoice['payer']->getId());
  1151.                 $entityManager $this->getDoctrine()->getManager();
  1152.                 $entityManager->persist($remind);
  1153.                 $entityManager->flush();
  1154.             } catch (FileException $e) {
  1155.             }
  1156.             $invoicesManagement->setSum($requestContent['id'], $invoice['smsSum'] + 11);
  1157.             return new JsonResponse(['message' => $this->translator->trans('Success sended SMS')], JsonResponse::HTTP_OK);
  1158.         } else {
  1159.             return new JsonResponse(['message' => $this->translator->trans('Empty phone number')], JsonResponse::HTTP_OK);
  1160.         }
  1161.     }
  1162.     /**
  1163.      * @Route("/admin/faktury/ponaglenie2",  methods="POST")
  1164.      */
  1165.     function notify2(
  1166.         Request $request,
  1167.         InvoicesHelper $invoicesHelper,
  1168.         InvoicesManagement $invoicesManagement,
  1169.         EmailHelper $emailHelper
  1170.     ) {
  1171.         $template "notify2";
  1172.         $requestContent json_decode($request->getContent(), true);
  1173.         $invoice $invoicesManagement->load($requestContent['id'], array(), array());
  1174.         $invoice $invoicesHelper->prepareInvoiceDetails($invoice);
  1175.         $value $invoice['grossValue'];
  1176.         if ($invoice['type'] == "4") {
  1177.             $invoiceNumber $invoice['service'];
  1178.             $template "notify2g";
  1179.         } else {
  1180.             $invoiceNumber $invoice['number'];
  1181.         }
  1182.         $clientEmail $invoice['payer']->getEmail();
  1183.         // $clientEmail = 'piotr@freeline.pl,piotr.ostrzyzek@gmail.com';
  1184.         // $clientEmail = 'marek.szmit@freeline.pl';
  1185.         $formData = array(
  1186.             'invoiceNumber' => $invoiceNumber,
  1187.             'invoiceTotal' => $value,
  1188.             'clientName' => 'Paweł',
  1189.             'clientEmail' => $clientEmail,
  1190.             'subject' => 'WAŻNE - upłynął termin płatności dokumentu | Freeline',
  1191.             'fromEmail' => 'Rozliczenia | Freeline Agencja Interaktywna <rozliczenia@freeline.pl>',
  1192.             'bcc' => 'ponaglenia@freeline.pl'
  1193.         );
  1194.         try {
  1195.             $emailHelper->sendEmail($formData$template);
  1196.             $remind = new Reminders();
  1197.             $remind->setCreatedDate(new \DateTime());
  1198.             ('active');
  1199.             $remind->setType('2');
  1200.             $remind->setClient($invoice['payer']->getId());
  1201.             $entityManager $this->getDoctrine()->getManager();
  1202.             $entityManager->persist($remind);
  1203.             $entityManager->flush();
  1204.         } catch (FileException $e) {
  1205.         }
  1206.         $invoicesManagement->setSum($requestContent['id'], $invoice['emailSum'] + 12);
  1207.         return new JsonResponse(['message' => $this->translator->trans('Success sended E-mail')], JsonResponse::HTTP_OK);
  1208.     }
  1209.         /**
  1210.      * @Route("/admin/faktury/usun-statusy",  methods="GET", name="admin_dump_all_invoices")
  1211.      */
  1212.     function dumpAllStatuses()
  1213.     {
  1214.         $items $this->entityManager->getRepository(Invoices::class)->findBy(['customerPrio' => 'niebieski']);
  1215.         foreach ($items as $item) {
  1216.             $item->setCustomerPrio('neutralny');
  1217.             $entityManager $this->getDoctrine()->getManager();
  1218.             $entityManager->persist($item);
  1219.             $entityManager->flush();
  1220.         }
  1221.         return $this->redirectToRoute('admin_invoices');
  1222.     }
  1223. }