src/Controller/BaseSite/Cronjobs/DomainCronjobsController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller\BaseSite\Cronjobs;
  3. use App\Entity\Shop\Log\TrafficLog;
  4. use App\Repository\BaseSite\DomainRepository;
  5. use App\Repository\Shop\Log\TrafficLogRepository;
  6. use App\Repository\Shop\Shop\ShopRepository;
  7. use App\Service\Util\ArvanCDN;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class DomainCronjobsController extends AbstractController
  13. {
  14.     #[Route('/base-site/cronjobs/domain/activation'name'app_base_site_cronjobs_domain_activation')]
  15.     public function app_base_site_cronjobs_domain_activation(ArvanCDN $arvanCDNDomainRepository $domainRepository): JsonResponse
  16.     {
  17.         foreach ($arvanCDN->getDomains()['data'] as $datum) {
  18.             $domainObject $domainRepository->findOneBy(['address' => $datum['domain']]);
  19.             if ($domainObject && $datum['status'] === 'active') {
  20.                 $domainObject->setIsConnected(1);
  21.                 $arvanCDN->setDomainDns($domainObject->getAddress());
  22.                 $arvanCDN->setEdgeServers($domainObject->getAddress());
  23.                 $arvanCDN->activateSSL($domainObject->getAddress());
  24.                 $this->getDoctrine()->getManager()->flush();
  25.             }
  26.         }
  27.         return $this->json(['res' => true]);
  28.     }
  29.     #[Route('/base-site/cronjobs/domain/traffics'name'app_base_site_cronjobs_domain_traffics')]
  30.     public function app_base_site_cronjobs_domain_traffics(ArvanCDN $arvanCDNShopRepository $shopRepositoryEntityManagerInterface $entityManagerTrafficLogRepository $trafficLogRepository): JsonResponse
  31.     {
  32.         $now = new \DateTimeImmutable('now', new \DateTimeZone('Asia/Tehran'));
  33.         $end $now->setTime((int)$now->format('H'), 0);
  34.         $start $end->modify('-1 hour');
  35.         foreach ($shopRepository->findAll() as $shopObject) {
  36.             if (!$trafficLogRepository->findOneBy(['shop' => $shopObject'startHour' => $start'endHour' => $end])) {
  37.                 $log = new TrafficLog();
  38.             } else {
  39.                 $log $trafficLogRepository->findOneBy(['shop' => $shopObject'startHour' => $start'endHour' => $end]);
  40.             }
  41.             $log->setShop($shopObject);
  42.             $log->setStartHour($start);
  43.             $log->setEndHour($end);
  44.             $inByte 0;
  45.             $outByte 0;
  46.             $totalByte 0;
  47.             $data $arvanCDN->collectHourlyTraffic('poooshe.com'$start$end$shopObject->getSubdomain());
  48.             if ($data['res']) {
  49.                 $totalByte $totalByte + ($data['data']['statistics']['traffics']['total']);
  50.             }
  51.             foreach ($shopObject->getDomains() as $domainObject) {
  52.                 $data $arvanCDN->collectHourlyTraffic($domainObject->getAddress(), $start$end);
  53.                 if ($data['res']) {
  54.                     $totalByte $totalByte + ($data['data']['statistics']['traffics']['total']);
  55.                 }
  56.             }
  57. //            $log->setInBytes((string) $data['data']['in']);
  58. //            var_dump($data['data']);die;
  59.             $log->setInBytes(0);
  60. //            $log->setOutBytes((string) $data['data']['out']);
  61.             $log->setOutBytes(0);
  62.             $log->setTotalBytes($totalByte);
  63.             $entityManager->persist($log);
  64.             $entityManager->flush();
  65. //            if ($shopObject->getId() === '1f068c36-03b6-60a4-ab8b-fb2ee65c3086'){
  66. //                var_dump($totalByte);die;
  67. //                var_dump($trafficLogRepository->getTotalByTime($shopObject->getPlanStartedAt() , $shopObject->getExpiredAt() , $shopObject));die;
  68. //            }
  69.             $shopObject->setTrafficUsage($trafficLogRepository->getTotalByTime($shopObject->getPlanStartedAt(), $shopObject->getExpiredAt(), $shopObject));
  70.             $entityManager->flush();
  71.         }
  72.         return $this->json(['res' => true]);
  73.     }
  74. }