src/Controller/DomenyController.php line 247

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  7. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  8. class DomenyController extends AbstractController {
  9.     /**
  10.      * Zasób deaktuwyje domenę.
  11.      * @Route ("/deactivate-domain/{domainId}", name="deactivate-domain", methods={"POST"})
  12.      * @isGranted("ROLE_ADMIN")
  13.      * @param \Doctrine\ORM\EntityManagerInterface $EM
  14.      * @param int $domainId
  15.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  16.      */
  17.     public function deactivateDomain (\Doctrine\ORM\EntityManagerInterface $EMint $domainId): \Symfony\Component\HttpFoundation\JsonResponse {
  18.         $domena $EM->getRepository(\App\Entity\HRDDomain::class)->find ($domainId);
  19.         if ($domena) {
  20.             $EM->persist($domena);
  21.             $domena->setDeactivation(new \DateTime ());
  22.             $EM->flush ();
  23.             return new \Symfony\Component\HttpFoundation\JsonResponse([ "success" => true ]);
  24.         }
  25.         return new \Symfony\Component\HttpFoundation\JsonResponse([ "success" => false ]);
  26.     }
  27.     
  28.     /**
  29.      * Zasób aktuwyje domenę.
  30.      * @Route ("/activate-domain/{domainId}", name="activate-domain", methods={"POST"})
  31.      * @isGranted("ROLE_ADMIN")
  32.      * @param \Doctrine\ORM\EntityManagerInterface $EM
  33.      * @param int $domainId
  34.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  35.      */
  36.     public function activateDomain (\Doctrine\ORM\EntityManagerInterface $EMint $domainId): \Symfony\Component\HttpFoundation\JsonResponse {
  37.         $domena $EM->getRepository(\App\Entity\HRDDomain::class)->find ($domainId);
  38.         if ($domena) {
  39.             $EM->persist($domena);
  40.             $domena->setDeactivation(null);
  41.             $EM->flush ();
  42.             return new \Symfony\Component\HttpFoundation\JsonResponse([ "success" => true ]);
  43.         }
  44.         return new \Symfony\Component\HttpFoundation\JsonResponse([ "success" => false ]);
  45.     }
  46.     
  47.     /**
  48.      * Zasób wyświetla listę wygasajacych domen w okresie $dni dni.
  49.      * @isGranted("ROLE_ADMIN")
  50.      * @Route ("/wygasajace-domeny/{dni}", name="wygasajace-domeny", methods={"GET"})
  51.      * @param \Doctrine\ORM\EntityManagerInterface $EM
  52.      * @param int $dni
  53.      * @return Response
  54.      */
  55.     public function wygasajaceDomeny (\Doctrine\ORM\EntityManagerInterface $EMint $dni 30): Response {
  56.         return $this->render ("wygasajace_domeny.html.twig", [ "dni" => $dni"EM" => $EM"domains" => $EM->getRepository (\App\Entity\HRDDomain::class)->findAllToExDateDays ($dni) ]);
  57.     }
  58.     
  59.     /**
  60.      * Funkcja dokonuje odnowienia domeny w HRD
  61.      * @Route ("/manuallyReNewDomain", name="manually-reNew-domain", methods={"POST"})
  62.      * @isGranted("ROLE_ADMIN")
  63.      * @param \Doctrine\ORM\EntityManager $EM
  64.      * @param \Symfony\Component\BrowserKit\Request $zadanie
  65.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  66.      */
  67.     public function manuallyReNewDomain (\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie, \App\Service\TPAYLogger $logger): \Symfony\Component\HttpFoundation\JsonResponse {
  68.         $domena = new \App\Entity\HRDDomain();
  69.         $domena $EM->getRepository(\App\Entity\HRDDomain::class)->find (intval ($zadanie->get ("id")));
  70.         if ($domena) {
  71.             $HRD = \HRDBase\Api\HRDApi::getInstance([
  72.                         "apiHash" => $EM->getRepository(\App\Entity\Conf::class)->peek("hash"),
  73.                         "apiLogin" => $EM->getRepository(\App\Entity\Conf::class)->peek("login"),
  74.                         "apiPass" => $EM->getRepository(\App\Entity\conf::class)->peek("pass")
  75.             ]);
  76.             $HRDTOKEN $HRD->getToken();
  77.             if ($HRDTOKEN) {
  78.                 if ($domena->reNew($EM$HRD1$logger)) {
  79.                     return new \Symfony\Component\HttpFoundation\JsonResponse([ "status" => true ]);
  80.                 } else {
  81.                     $logger->log("Nie udało się odnbowić domeny " $domena->getName());
  82.                     return new \Symfony\Component\HttpFoundation\JsonResponse([ "status" => false ]);
  83.                 }
  84.             } else {
  85.                 $logger->log("Nie udało się zalogować do HRD.");
  86.                 return new \Symfony\Component\HttpFoundation\JsonResponse([ "status" => false ]);
  87.             }
  88.         } else {
  89.             return new \Symfony\Component\HttpFoundation\JsonResponse([ "status" => false ]);
  90.         }
  91.     }
  92.     
  93.     /**
  94.      * Funkcja tworzy nowy dokument na podstawie listy domen, usuwa domeny z ich bieżących proform na odnowienie i ewentualnie puste proformy
  95.      * @Route ("/manuallyReNewDomains-createNewDocument", name="manually-reNew-domains-create-doc", methods={"POST"})
  96.      * @isGranted("ROLE_ADMIN")
  97.      * @param \Doctrine\ORM\EntityManagerInterface $EM
  98.      * @param \Symfony\Component\HttpFoundation\Request $zadanie
  99.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  100.      */
  101.     public function manuallyReNewDomainsCreateDoc (\Doctrine\ORM\EntityManagerInterface $EM, \Symfony\Component\HttpFoundation\Request $zadanie): \Symfony\Component\HttpFoundation\JsonResponse {
  102.         $domainsList = [];
  103.         foreach ($zadanie->get ("domains") as $domainId) {
  104.             $domainsList [] = $EM->getRepository(\App\Entity\HRDDomain::class)->find (intval ($domainId));
  105.         }
  106.         $domain = new \App\Entity\HRDDomain();
  107.         foreach ($domainsList as $domain) {
  108.             $currentDoc $domain->getCurrentDocument($EM);
  109.             if ($currentDoc != null) {
  110.                 if ($currentDoc->getPozycje()->count() == 1) {
  111.                     $EM->remove($currentDoc);
  112.                     $EM->flush ();
  113.                 } else {
  114.                     $pozycja = new \App\Entity\PozycjaDokumentu();
  115.                     $out false;
  116.                     foreach ($currentDoc->getPozycje() as $pozycja) {
  117.                         if (($pozycja->getRodzaj() == \App\Entity\PozycjaDokumentu::prOdnowienieDomenyDwaLata) || ($pozycja->getRodzaj() == \App\Entity\PozycjaDokumentu::prOdnowienieDomenyRok) || ($pozycja->getRodzaj() == \App\Entity\PozycjaDokumentu::prOdnowienieDomenyTrzyLata)) {
  118.                             if ($pozycja->getDomena() == $domain->getName()) {
  119.                                 $EM->persist($currentDoc);
  120.                                 $currentDoc->setNetto($currentDoc->getNetto() - $pozycja->getWartoscnetto());
  121.                                 $currentDoc->setVat($currentDoc->getVat() - $pozycja->getWartoscvat());
  122.                                 $currentDoc->setBrutto($currentDoc->getBrutto() - $pozycja->getWartoscbrutto());
  123.                                 $currentDoc->removePozycje($pozycja);
  124.                                 $EM->flush ();
  125.                                 $out true;
  126.                                 break;
  127.                             }                        
  128.                         }
  129.                         if ($out) break;
  130.                     }
  131.                 }
  132.             }
  133.         }
  134.         //$dokument = new \App\Entity\Dokument();
  135.         $dokument $EM->getRepository(\App\Entity\Dokument::class)->makeDocumentFromDomainsListForReNew ($domainsList [0]->getHRDUser ()->getUser (), intval ($zadanie->get ("documentType")), $domainsList); 
  136.         if ($zadanie->get ("payd") == "true") {
  137.             $dokument->setDozaplaty(0);
  138.             $dokument->setStatus(\App\Entity\Dokument::dsZaplacony);
  139.             $EM->persist($dokument);
  140.             $EM->flush();
  141.         }
  142.         return new \Symfony\Component\HttpFoundation\JsonResponse($_POST);
  143.     }
  144.         
  145.     /**
  146.      * Zasób wyświetla i ustawia konfigurator wyszukiwarki domen
  147.      * @Route ("/domainsConfig", name="domains-config")
  148.      * @isGranted("ROLE_ADMIN")
  149.      * @param \Symfony\Component\HttpFoundation\Request $zadanie
  150.      * @param \Doctrine\ORM\EntityManagerInterface $EM
  151.      * @return Response
  152.      */
  153.     public function domainsSearchConfig (\Symfony\Component\HttpFoundation\Request $zadanie, \Doctrine\ORM\EntityManagerInterface $EM): Response {
  154.         if ($zadanie->getMethod() == "POST") {
  155.             foreach ($zadanie->get("domeny") as $domena) {
  156.                 $KD $EM->getRepository (\App\Entity\KoncowkaDomeny::class)->find ($domena ['id']);
  157.                 if ($KD) {
  158.                     $EM->persist ($KD);
  159.                     $KD->setAktywna($domena ['active'] == "true");
  160.                     $KD->setGrupa($domena ['group']);
  161.                     $KD->setPierwsze($domena ['first'] == "true");
  162.                     $EM->flush ();
  163.                 }
  164.             }
  165.             return new Response ("OK");
  166.         }
  167.         $KD = new \App\Entity\KoncowkaDomeny();
  168.         $koncowkiDomen $EM->getRepository(\App\Entity\KoncowkaDomeny::class)->findAll ();
  169.         $groups = [];
  170.         foreach ($koncowkiDomen as $KD) {
  171.             $index = -1;
  172.             foreach ($groups as $N => $G) {
  173.                 if ($G ['grupa'] == $KD->getGrupa()) {
  174.                     $index $N;
  175.                     break;
  176.                 }
  177.             }
  178.             if ($index == -1) {
  179.                 $NI = [ "grupa" => $KD->getGrupa(), "pierwsze" => [], "drugie" => [], "priorytet" => $KD->getPriorytet() ];
  180.                 if ($KD->getPierwsze()) {
  181.                     $NI ['pierwsze'][] = $KD;
  182.                 } else {
  183.                     $NI ['drugie'][] = $KD;
  184.                 }
  185.                 $groups [] = $NI;
  186.             } else {
  187.                 if ($KD->getPierwsze()) {
  188.                     $groups [$index]['pierwsze'][] = $KD;
  189.                 } else {
  190.                     $groups [$index]['drugie'][] = $KD;
  191.                 }
  192.             }
  193.         }        
  194.         usort ($groups, function ($a$b) {
  195.             if ($a ['priorytet'] == $b ['priorytet']) {
  196.                 return 0;
  197.             } elseif ($a ['priorytet'] < $b ['priorytet']) {
  198.                 return -1;
  199.             } else {
  200.                 return 1;
  201.             }
  202.         });
  203.         return $this->render("domain-search-config.html.twig", [
  204.             "groups" => $groups,
  205.             "colwidth" => ((count ($groups) == 0) ? intval (12 count ($groups)))
  206.         ]);
  207.     }
  208.         
  209.     /**
  210.      * Zasób wyświetla listę domen klienta
  211.      * @Route("/mojeDomeny", name="my-domains")
  212.      * @IsGranted("ROLE_USER");
  213.      * @return Response
  214.      */
  215.     public function myDomainsList (): Response {
  216.         $domains = [];
  217.         foreach ($this->getUser()->getCSA () as $CSA) {            
  218.             foreach ($CSA->getHRDDomains() as $domain) {
  219.                 $domains [] = $domain;
  220.             }
  221.         }
  222.         usort ($domains, function ($a$b) {
  223.             if ($a->getExDate()->getTimestamp() < $b->getExDate()->getTimestamp()) {
  224.                 return -1;
  225.             } elseif ($a->getExDate()->getTimestamp() > $b->getExDate()->getTimestamp()) {
  226.                 return 1;
  227.             } else {
  228.                 return 0;
  229.             }
  230.         });
  231.         
  232.         return $this->render ("domains-list.html.twig", [
  233.             "domains" => $domains
  234.         ]);
  235.     }
  236.     
  237.     /**
  238.      * @Route("/domeny", name="domain-search")
  239.      * @param \Symfony\Component\HttpFoundation\Request $zadanie
  240.      * @param \Doctrine\ORM\EntityManagerInterface $em
  241.      * @return Response
  242.      */
  243.     public function index(\Symfony\Component\HttpFoundation\Request $zadanie, \Doctrine\ORM\EntityManagerInterface $em): Response {
  244.         if ($this->getUser ()) {
  245.             if (count ($this->getUser ()->getCsa ()) == 0) {
  246.                 return $this->render ("wyszukiwarka-domen-brak-csa.html.twig");
  247.             }
  248.         }
  249.         $domainName $zadanie->get ("domena");
  250.         if ($domainName == "") {
  251.             return $this->render('wyszukiwarka-domen.html.twig', [
  252.                 'domena' => $domainName,
  253.                 'domeny' => [],
  254.                 'message' => "Proszę podać poszukiwana nazwę domeny."
  255.             ]);
  256.         } else {
  257.             $baseDomain $em->getRepository(\App\Entity\KoncowkaDomeny::class)->findBaseDomain($domainName);
  258.             if ($baseDomain) {
  259.                 //Jest zapytanie o konkretna domenę
  260.                 $subDomain substr($domainName0strlen($domainName) - strlen($baseDomain->getNazwa()));
  261.             } else {
  262.                 //Jest zapytanie ogólne
  263.                 $subDomain $domainName;
  264.             }
  265.             if ($subDomain [strlen($subDomain) - 1] == ".")
  266.                 $subDomain substr($subDomain0strlen($subDomain) - 1);
  267.             if (strpos($subDomain".") !== false) {
  268.                 return $this->render('wyszukiwarka-domen.html.twig', [
  269.                     'domena' => $domainName,
  270.                     'domeny' => [],
  271.                     'message' => "Nazwa właściwa domeny nie może zawierać znaku \".\"."
  272.                 ]);
  273.             }
  274.             $domeny $em->getRepository(\App\Entity\KoncowkaDomeny::class)->getInGroups();
  275.             $vat floatval ($em->getRepository(\App\Entity\Conf::class)->peek ("domains_vat")) / 100 1;
  276.             foreach ($domeny as &$d) {
  277.                 foreach ($d ['pierwsze'] as &$p) {                    
  278.                     $p = [ "nazwa" => $subDomain "." $p->getNazwa (), "netto" => ($p->getCennik () ? $p->getCennik()->getRejestracja() : 0), "brutto" => ($p->getCennik () ? round ($p->getCennik()->getRejestracja() * $vat2) : 0) ];
  279.                 }
  280.                 foreach ($d ['drugie'] as &$p) {
  281.                     $p = [ "nazwa" => $subDomain "." $p->getNazwa (), "netto" => ($p->getCennik () ? $p->getCennik()->getRejestracja() : 0), "brutto" => ($p->getCennik () ? round ($p->getCennik()->getRejestracja() * $vat2) : 0) ];
  282.                 }
  283.             }
  284.             if ($baseDomain) {
  285.                 return $this->render('wyszukiwarka-domen.html.twig', [
  286.                     'poszukiwane' => $baseDomain->getNazwa (),
  287.                     'domena' => $zadanie->get("domena"),
  288.                     'domeny' => $domeny
  289.                 ]);                
  290.             } else {
  291.                 return $this->render('wyszukiwarka-domen.html.twig', [
  292.                     'domena' => $zadanie->get("domena"),
  293.                     'domeny' => $domeny
  294.                 ]);
  295.             }
  296.         }
  297.     }
  298.     
  299.     /**
  300.      * Funkcja sprawdza, czy podane domeny mozna zarejestrować
  301.      * @Route("/domains-check", name="domains-check-portions", methods={"POST"})
  302.      * @param \Doctrine\ORM\EntityManagerInterface $em
  303.      * @param \Symfony\Component\HttpFoundation\Request $zadanie
  304.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  305.      */
  306.     public function checkPortionDomains (\Doctrine\ORM\EntityManagerInterface $em, \Symfony\Component\HttpFoundation\Request $zadanie): \Symfony\Component\HttpFoundation\JsonResponse {
  307.         $koszyk null;
  308.         if ($this->getUser ()) {
  309.             $koszyk $this->getUser ()->getKoszyk ();
  310.         } else {
  311.             if ($zadanie->getSession()->isStarted()) {
  312.                 $koszyk $zadanie->getSession()->get ("koszyk");
  313.             }
  314.         }
  315.         $wynik = ['status' => false'domains' => $zadanie->get ("domains") ];
  316.         $HRD = \HRDBase\Api\HRDApi::getInstance([
  317.                     "apiHash" => $em->getRepository(\App\Entity\Conf::class)->peek("hash"),
  318.                     "apiLogin" => $em->getRepository(\App\Entity\Conf::class)->peek("login"),
  319.                     "apiPass" => $em->getRepository(\App\Entity\conf::class)->peek("pass")
  320.         ]);
  321.         $HRDTOKEN $HRD->getToken();
  322.         if ($HRDTOKEN) {
  323.             $lista = [];
  324.             foreach ($wynik ['domains'] as $domain) {
  325.                 $lista [] = $domain ['nazwa'];
  326.             }
  327.             $wynik ['status'] = true;
  328.             try {
  329.                 $CHECK $HRD->domainCheck ($lista);
  330.             } catch (\Exception $e) {
  331.                 $wynik ['status'] = false;
  332.                 $wynik ['message'] = $e->getMessage ();
  333.             }
  334.             if ($wynik ['status']) {
  335.                 foreach ($CHECK as $domainName => $domainStatus) {
  336.                     foreach ($wynik ['domains'] as &$domain) {
  337.                         if ($domain ['nazwa'] == $domainName) {
  338.                             $domain ['status'] = $domainStatus;
  339.                             if ($koszyk) {
  340.                                 $domain ['cart'] = $koszyk->isIn ($domainName);
  341.                             } else {
  342.                                 $domain ['cart'] = false;
  343.                             }
  344.                             break;
  345.                         }
  346.                     }
  347.                 }
  348.             }
  349.         } else {
  350.             $wynik ['message'] = "Nie udało się zalogować do HRD.";
  351.         }        
  352.         return new \Symfony\Component\HttpFoundation\JsonResponse($wynik);
  353.     }
  354.     
  355. }
  356.