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

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