src/Controller/AdminReklamaController.php line 365

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 Symfony\Contracts\Translation\TranslatorInterface;
  6. use App\Entity\Settings;
  7. use App\Entity\Reklama;
  8. use App\Entity\Users;
  9. use App\Entity\CertyfikatesSsl;
  10. use App\Entity\SeoProject;
  11. use App\Entity\SeoProjectGroups;
  12. use App\Helpers\ReklamaHelper;
  13. use App\Managements\PayersManagement;
  14. use App\Managements\SettingsManagement;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Knp\Component\Pager\PaginatorInterface;
  17. use Symfony\Component\String\Slugger\SluggerInterface;
  18. use App\Managements\Reklama as ReklamaManagement;
  19. use Doctrine\ORM\EntityManagerInterface;
  20. use Symfony\Component\Validator\Constraints\DateTime;
  21. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  22. use App\Forms\Admin\AdminImportForm;
  23. use App\Forms\Admin\AdminSslForm;
  24. use Symfony\Component\Filesystem\Filesystem;
  25. use App\Forms\Admin\AdminReklamaServiceForm;
  26. use Symfony\Component\Form\Extension\Core\Type\TextType;
  27. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  28. use Symfony\Component\Form\Extension\Core\Type\DateType;
  29. use Symfony\Component\HttpFoundation\JsonResponse;
  30. use App\Helpers\EmailHelper;
  31. class AdminReklamaController extends AbstractController
  32. {
  33.     public function __construct(
  34.         // $activeMenuParent = 'admin_services',
  35.         TranslatorInterface $translator,
  36.         SluggerInterface $slugger,
  37.         PayersManagement $payersManagement,
  38.         EntityManagerInterface $entityManager
  39.     ) {
  40.         $this->slugger $slugger;
  41.         $this->activeMenuParent 'admin_services';
  42.         $this->incompletePayers $payersManagement->loadIncomplete();
  43.         $this->translator $translator;
  44.         $this->entityManager $entityManager;
  45.         $this->settings = array();
  46.         $this->filters = array();
  47.         $this->ordering = array();
  48.     }
  49.     /**
  50.      * @Route("/admin/reklama", name="admin_services_reklama")
  51.      */
  52.     public function index(
  53.         ReklamaManagement $ReklamaManagement,
  54.         PaginatorInterface $paginator,
  55.         ReklamaHelper $ReklamaHelper,
  56.         PayersManagement $payersManagement,
  57.         SettingsManagement $settingsManagement,
  58.         Request $request
  59.     ) {
  60.         $searchForm $this->filterForm();
  61.         $searchForm->handleRequest($request);
  62.         if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  63.             $this->filters $searchForm->getData();
  64.         }
  65.         $items $ReklamaManagement->load(null$this->filters$this->ordering);
  66.         // dd($ReklamaHelper->prepareForListing($items));
  67.         $items $paginator->paginate($ReklamaHelper->prepareForListing($items), $request->query->getInt('page'1), $settingsManagement->value('itemsPerDashboardPage'));
  68.         $clients =  $payersManagement->load(null, array(), array());
  69.         $clientsArray = array();
  70.         $clientsArray[0] = '-wybierz-';
  71.         // echo '<pre>';
  72.         // print_r($items);
  73.         // echo '</pre>';
  74.         // die();
  75.         foreach ($clients as $client) {
  76.             $clientsArray[$client->getId()] = $client->getName();
  77.         }
  78.         // Liczenie totals dla w_status (wykluczając status = 99)
  79.         $qb $this->entityManager->createQueryBuilder();
  80.         $totalRecords $qb->select('COUNT(r.id)')
  81.             ->from(Reklama::class, 'r')
  82.             ->where('r.status != 99 OR r.status IS NULL')
  83.             ->getQuery()
  84.             ->getSingleScalarResult();
  85.         $qb2 $this->entityManager->createQueryBuilder();
  86.         $activeRecords $qb2->select('COUNT(r.id)')
  87.             ->from(Reklama::class, 'r')
  88.             ->where('r.w_status = :activeStatus')
  89.             ->andWhere('r.status != 99 OR r.status IS NULL')
  90.             ->setParameter('activeStatus'1)
  91.             ->getQuery()
  92.             ->getSingleScalarResult();
  93.         return $this->render('Admin/Reklama/list.html.twig', [
  94.             'accessModules' => $_SESSION['accessModules'],
  95.             'incompletePayers' => $this->incompletePayers,
  96.             'items' => $items,
  97.             'clientsArray' => $clientsArray,
  98.             'searchForm' => $searchForm->createView(),
  99.             'activeMenuParent' => $this->activeMenuParent,
  100.             'controller_name' => 'AdminController',
  101.             'title' => 'Usługi reklamowe',
  102.             'totals' => [$activeRecords$totalRecords]
  103.         ]);
  104.     }
  105.     /**
  106.      * @Route("/admin/reklama/edytuj/{id}", name="admin_edit_service_reklama")
  107.      */
  108.     public function edit(
  109.         $id,
  110.         PayersManagement $payersManagement,
  111.         ReklamaManagement $ReklamaManagement,
  112.         Request $request
  113.     ) {
  114.         $files = array();
  115.         $item $ReklamaManagement->load($idnullnull);
  116.         $clients =  $payersManagement->load(null, array(), array());
  117.         $clientsArray[0] = array(
  118.             'id' => null,
  119.             'name' => '-wybierz-'
  120.         );
  121.         foreach ($clients as $client) {
  122.             $clientsArray[$client->getId()] = array(
  123.                 'id' => $client->getId(),
  124.                 'name' => $client->getName()
  125.             );
  126.         }
  127.         $client $payersManagement->load($item->getClient(), array(), array());
  128.         $item->setClientsArray(serialize($clientsArray));
  129.         $form $this->createForm(AdminReklamaServiceForm::class, $item);
  130.         $title 'Edycja usługi reklamy ' $item->getUrlAddress();
  131.         $form->handleRequest($request);
  132.         $vowels = array(" ""-");
  133.         if ($form->isSubmitted()) {
  134.             $item $form->getData();
  135.             $entityManager $this->getDoctrine()->getManager();
  136.             $entityManager->persist($item);
  137.             $entityManager->flush();
  138.             $this->addFlash('success'$this->translator->trans('Success updated'));
  139.             return $this->redirectToRoute('admin_services_reklama');
  140.         }
  141.         if (!is_null($item->getFiles())) {
  142.             foreach (explode(","$item->getFiles()) as $file) {
  143.                 $files[] = array(
  144.                     'path' => $file,
  145.                     'name' => str_replace("uploads/reklama/reklamafile-" $item->getId() . "-"""$file)
  146.                 );
  147.             }
  148.         }
  149.         return $this->render('Admin/Reklama/details.html.twig', [
  150.             'accessModules' => $_SESSION['accessModules'],
  151.             'files' => $files,
  152.             'incompletePayers' => $this->incompletePayers,
  153.             'title' => $title,
  154.             'activeMenuParent' => $this->activeMenuParent,
  155.             'item' => $item,
  156.             'form' => $form->createView(),
  157.         ]);
  158.     }
  159.     /**
  160.      * @Route("/admin/reklama/dodaj", name="admin_add_service_reklama")
  161.      */
  162.     public function add(
  163.         PayersManagement $payersManagement,
  164.         ReklamaManagement $ReklamaManagement,
  165.         Request $request
  166.     ) {
  167.         // if(in_array($this->activeMenuParent, $_SESSION['accessModules'])){
  168.         $files = array();
  169.         $item = new Reklama();
  170.         $clients =  $payersManagement->load(null, array(), array());
  171.         $clientsArray[0] = array(
  172.             'id' => null,
  173.             'name' => '-wybierz-'
  174.         );
  175.         foreach ($clients as $client) {
  176.             $clientsArray[$client->getId()] = array(
  177.                 'id' => $client->getId(),
  178.                 'name' => $client->getName()
  179.             );
  180.         }
  181.         $item->setClientsArray(serialize($clientsArray));
  182.         $form $this->createForm(AdminReklamaServiceForm::class, $item);
  183.         $title 'Dodawanie nowej usługi reklamy';
  184.         $form->handleRequest($request);
  185.         $vowels = array(" ""-");
  186.         if ($form->isSubmitted()) {
  187.             $item $form->getData();
  188.             $item->setCreatedDate(new \DateTime());
  189.             if ($item->getAgreementType() == 'seo') {
  190.                 /* DODAWANIE PROJEKTU SEO */
  191.                 $project = new SeoProject();
  192.                 $payer $payersManagement->load($item->getClient(), nullnull);
  193.                 $project->setDomain($item->getUrlAddress());
  194.                 $project->setPayer($payer);
  195.                 $group $this->entityManager->getRepository(SeoProjectGroups::class)->find(4);
  196.                 $project->setProjectGroup($group);
  197.                 $entityManager $this->getDoctrine()->getManager();
  198.                 $entityManager->persist($project);
  199.                 $entityManager->flush();
  200.             }
  201.             $entityManager $this->getDoctrine()->getManager();
  202.             $entityManager->persist($item);
  203.             $entityManager->flush();
  204.             mkdir($this->getParameter('uploads_reklama_directory') . $item->getId(), 0777true);
  205.             $this->addFlash('success'$this->translator->trans('Success updated'));
  206.             return $this->redirectToRoute('admin_services_reklama');
  207.         }
  208.         return $this->render('Admin/Reklama/details.html.twig', [
  209.             'accessModules' => $_SESSION['accessModules'],
  210.             'files' => $files,
  211.             'incompletePayers' => $this->incompletePayers,
  212.             'title' => $title,
  213.             'activeMenuParent' => $this->activeMenuParent,
  214.             'item' => $item,
  215.             'form' => $form->createView(),
  216.         ]);
  217.         // }else{
  218.         //     return $this->redirectToRoute($_SESSION['accessModules'][0]);
  219.         // }
  220.     }
  221.   
  222.     function filterForm($fields null)
  223.     {
  224.         $form $this->createFormBuilder();
  225.         $form $form->add('name'TextType::class, [
  226.             'required' => false,
  227.             'label' => 'Type tekst',
  228.             'attr' => [
  229.                 'style' => 'width: 200px',
  230.                 'class' => 'pull-left form-control'
  231.             ]
  232.         ]);
  233.         $form $form->add('agreementType'ChoiceType::class, [
  234.             'required' => false,
  235.             'label' => "Typ umowy",
  236.             'choices' => array(
  237.                 '-wybierz-' => null,
  238.                 'Efekt' => 'efekt',
  239.                 'Abonament + Efekt' => 'aboefekt',
  240.                 'Ryczałt' => 'rycz',
  241.                 'Abonament + userzy' => 'abouser',
  242.                 'Brak umowy' => 'brak'
  243.             ),
  244.             'attr' => ['class' => 'form-control pull-left''style' => 'width: auto']
  245.         ]);
  246.         $form $form->add('company'ChoiceType::class, [
  247.             'label' => "Wystawca",
  248.             'choices' => array(
  249.                 '-Wybierz-' => null,
  250.                 'GOT' => 'GOT',
  251.                 'JDG' => 'JDG',
  252.                 'ZOO' => 'ZOO'
  253.             ),
  254.             'attr' => ['class' => 'form-control pull-left''style' => 'width: auto']
  255.         ]);
  256.         $form $form->add('save'SubmitType::class, ['label' => 'Search''attr' => ['style' => 'margin-left: 10px;; margin-right: 10px;''class' => 'btn btn-theme pull-left']]);
  257.         $form $form->getForm();
  258.         return $form;
  259.     }
  260.     /**
  261.      * @Route("/admin/hosting/przypisz",  methods="POST")
  262.      */
  263.     function changeClient(
  264.         Request $request,
  265.         ReklamaManagement $ReklamaManagement
  266.     ) {
  267.         $requestContent json_decode($request->getContent(), true);
  268.         if ($ReklamaManagement->changeClient($requestContent['id'], $requestContent['value'])) {
  269.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  270.         } else {
  271.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  272.         }
  273.     }
  274.     /**
  275.      * @Route("/admin/reklama/uploadFile/{id}",  methods="POST")
  276.      */
  277.     function uploadFile(
  278.         $id,
  279.         Request $request,
  280.         ReklamaManagement $ReklamaManagement
  281.     ) {
  282.         $item $ReklamaManagement->load($idnullnull);
  283.         $file $request->files->get('doc');
  284.         $filename md5(uniqid()) . '.' $file->guessExtension();
  285.         $originalFilename pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
  286.         $safeFilename $this->slugger->slug($originalFilename);
  287.         $newFilename 'reklamafile-' $id '-' $safeFilename '-' uniqid() . '.' $file->guessExtension();
  288.         $filesLinks[] = 'uploads/reklama/' $newFilename;
  289.         if (
  290.             $file->move(
  291.                 $this->getParameter('uploads_reklama_directory'),
  292.                 $newFilename
  293.             )
  294.         ) {
  295.             $item->setFiles($item->getFiles() . ',' implode(","$filesLinks));
  296.             $entityManager $this->getDoctrine()->getManager();
  297.             $entityManager->persist($item);
  298.             $entityManager->flush();
  299.             return new JsonResponse(['newFilename' => str_replace('preorder-' $id '-'''$newFilename)], JsonResponse::HTTP_OK);
  300.         } else {
  301.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  302.         }
  303.     }
  304.     /**
  305.      * @Route("/admin/reklama/removeFile",  methods="POST")
  306.      */
  307.     function removeFile(
  308.         Request $request,
  309.         ReklamaManagement $ReklamaManagement
  310.     ) {
  311.         $requestContent json_decode($request->getContent(), true);
  312.         if (!$requestContent['file']) {
  313.             return new JsonResponse(['message' => $this->translator->trans('Nie można usunąć')], JsonResponse::HTTP_FORBIDDEN);
  314.         } else {
  315.             $item $ReklamaManagement->load($requestContent['id'], nullnull);
  316.             $item->setFiles(str_replace("," $requestContent['file'], ""$item->getFiles()));
  317.             $entityManager $this->getDoctrine()->getManager();
  318.             $entityManager->persist($item);
  319.             $entityManager->flush();
  320.             $filesystem = new Filesystem();
  321.             $filesystem->remove(['symlink'$requestContent['file']]);
  322.             return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  323.         }
  324.     }
  325.     /**
  326.      * @Route("/admin/reklama/usun",  methods="POST")
  327.      */
  328.     function remove(
  329.         Request $request,
  330.         ReklamaManagement $ReklamaManagement
  331.     ) {
  332.         $requestContent json_decode($request->getContent(), true);
  333.         if ($ReklamaManagement->remove($requestContent['id'])) {
  334.             return new JsonResponse(['message' => $this->translator->trans('Success removed')], JsonResponse::HTTP_OK);
  335.         } else {
  336.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  337.         }
  338.     }
  339.     /**
  340.      * @Route("/admin/reklama/zmien-kolor",  methods="POST")
  341.      */
  342.     function changeStatus(
  343.         Request $request,
  344.         ReklamaManagement $ReklamaManagement
  345.     ) {
  346.         $requestContent json_decode($request->getContent(), true);
  347.         if ($ReklamaManagement->changeStatus($requestContent['id'], $requestContent['value'])) {
  348.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  349.         } else {
  350.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  351.         }
  352.     }
  353.     /**
  354.      * @Route("/admin/reklama/usun-statusy",  methods="GET", name="admin_dump_all_service_reklama")
  355.      */
  356.     function dumpAllStatuses()
  357.     {
  358.         $items $this->entityManager->getRepository(Reklama::class)->findBy(['status' => '2']);
  359.         foreach ($items as $item) {
  360.             $item->setStatus('0');
  361.             $entityManager $this->getDoctrine()->getManager();
  362.             $entityManager->persist($item);
  363.             $entityManager->flush();
  364.         }
  365.         return $this->redirectToRoute('admin_services_reklama');
  366.     }
  367.     /**
  368.      * @Route("/admin/reklama/zmien-w_status",  methods="POST", name="admin_change_w_status_reklama")
  369.      */
  370.     function changeWStatus(
  371.         Request $request,
  372.         ReklamaManagement $ReklamaManagement
  373.     ) {
  374.         $requestContent json_decode($request->getContent(), true);
  375.         $w_status = ($requestContent['status'] == 'checked') ? 0;
  376.         $item $this->entityManager->getRepository(Reklama::class)->find($requestContent['id']);
  377.         if ($item) {
  378.             $item->setWStatus($w_status);
  379.             $entityManager $this->getDoctrine()->getManager();
  380.             $entityManager->persist($item);
  381.             $entityManager->flush();
  382.             return new JsonResponse(['message' => $this->translator->trans('Success updated')], JsonResponse::HTTP_OK);
  383.         } else {
  384.             return new JsonResponse([], JsonResponse::HTTP_CONFLICT);
  385.         }
  386.     }
  387. }