app/Plugin/RestockMail/Controller/RestockMailController.php line 170

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) LOCKON CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.lockon.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Plugin\RestockMail\Controller;
  13. use Eccube\Controller\AbstractController;
  14. use Eccube\Entity\Master\ProductStatus;
  15. use Eccube\Entity\Product;
  16. use Eccube\Repository\Master\ProductListMaxRepository;
  17. use Eccube\Repository\ProductClassRepository;
  18. use Eccube\Repository\ProductRepository;
  19. use Knp\Component\Pager\PaginatorInterface;
  20. use Plugin\RestockMail\Entity\RestockMail;
  21. use Plugin\RestockMail\Entity\RestockMailStatus;
  22. use Plugin\RestockMail\Form\Type\RestockMailType;
  23. use Plugin\RestockMail\Repository\RestockMailRepository;
  24. use Plugin\RestockMail\Repository\RestockMailStatusRepository;
  25. use Plugin\RestockMail\Repository\RestockMailConfigRepository;
  26. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  27. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  28. use Symfony\Component\HttpFoundation\RedirectResponse;
  29. use Symfony\Component\HttpFoundation\Request;
  30. use Symfony\Component\HttpFoundation\Response;
  31. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  32. use Eccube\Entity\MailHistory;
  33. use Eccube\Repository\BaseInfoRepository;
  34. use Eccube\Repository\MailHistoryRepository;
  35. use Doctrine\Common\Persistence\ObjectManager;
  36. use Doctrine\DBAL\Connection;
  37. /**
  38.  * Class RestockMailController front.
  39.  */
  40. class RestockMailController extends AbstractController
  41. {
  42.     /**
  43.      * @var RestockMailStatusRepository
  44.      */
  45.     private $RestockMailStatusRepository;
  46.     /**
  47.      * @var RestockMailRepository
  48.      */
  49.     private $RestockMailRepository;
  50.     /**
  51.      * @var \Twig_Environment
  52.      */
  53.     protected $twig;
  54.     protected $baseInfo;
  55.     protected $ObjectManager ;
  56.     /**
  57.      * RestockMailController constructor.
  58.      *
  59.      * @param RestockMailStatusRepository $productStatusRepository
  60.      * @param RestockMailRepository $productReviewRepository
  61.      */
  62.     public function __construct(
  63.         \Twig_Environment $twig,
  64.         \Swift_Mailer $mailer,
  65.         RestockMailStatusRepository $RestockMailStatusRepository,
  66.         BaseInfoRepository $baseInfoRepository,
  67.         RestockMailRepository $RestockMailRepository,
  68.         ProductClassRepository $productClassRepository,
  69.         ProductRepository $productRepository,
  70.         ObjectManager $ObjectManager
  71.     ) {
  72.         $this->productClassRepository $productClassRepository;
  73.         $this->productRepository $productRepository;
  74.         $this->RestockMailStatusRepository $RestockMailStatusRepository;
  75.         $this->RestockMailRepository $RestockMailRepository;
  76.         $this->mailer $mailer;
  77.         $this->twig $twig;
  78.         $this->baseInfo $baseInfoRepository->get();
  79.         $this->ObjectManager =  $ObjectManager;
  80.     }
  81.     /**
  82.      * @Route("/restock_mail/get", name="restock_mail_get")
  83.      *
  84.      * @param Request $request
  85.      *
  86.      * @return RedirectResponse|Response
  87.      */
  88.     public function rget(Request $request)
  89.     {
  90.         $response = array();
  91.                     if ($this->isGranted('ROLE_USER')) {
  92.                         $Customer $this->getUser();
  93.                         $product_class_id $_REQUEST['cid'];
  94.                         $Connection $this->ObjectManager->getConnection();
  95.                         $sql 'SELECT count(id) FROM plg_restock_mail WHERE product_class_id =? and status_id = 2 and customer_id = ?';
  96.                         $count $Connection->fetchColumn($sql, [$product_class_id,$Customer->getId()]);
  97.                         $response['customer']= $Customer->getId();
  98.                         $response['product_class_id']= $product_class_id;
  99.                         $response['count']= $count;
  100.                         $response['status']= "OK";
  101.                     }else{
  102.                         $response["status"]="nologin";
  103.                     }
  104.         $json json_encode($response);
  105.         return new Response($json);
  106.     }
  107.     /**
  108.      * @Route("/restock_mail/set", name="restock_mail_set")
  109.      *
  110.      * @param Request $request
  111.      *
  112.      * @return RedirectResponse|Response
  113.      */
  114.     public function rset(Request $request)
  115.     {
  116.         $response = array();
  117.         if ($this->isGranted('ROLE_USER')) {
  118.             $Customer $this->getUser();
  119.         $RestockMail = new RestockMail();
  120.         $Product $this->productRepository->find($_REQUEST["pid"]);
  121.         $RestockMail->setCustomer($Customer);
  122.         $RestockMail->setProduct($Product);
  123.         $RestockMail->setProductCode($_REQUEST["code"]);
  124.         $RestockMail->setProductClassID($_REQUEST["classid"]);
  125.         $RestockMail->setStatus($this->RestockMailStatusRepository->find(RestockMailStatus::nosend));
  126.         $this->entityManager->persist($RestockMail);
  127.         $this->entityManager->flush($RestockMail);
  128.             $response['status']= "OK";
  129.         }else{
  130.             $response['status']= "FAIL";
  131.         }
  132.         $json json_encode($response);
  133.         return new Response($json);
  134.     }
  135.     /**
  136.      * @Route("/restock_mail/send", name="restock_mail_send")
  137.      *
  138.      * @param Request $request
  139.      *
  140.      * @return RedirectResponse|Response
  141.      */
  142.     public function send(Request $request,PaginatorInterface $paginator,RestockMailConfigRepository $configRepository)
  143.     {
  144.         $Config $configRepository->get();
  145.         $searchData =array();
  146.         $searchData['status'] = array(2);
  147.         $qb $this->RestockMailRepository->getQueryBuilderBySearchData($searchData);
  148.         $status "0";
  149.         $send =0;
  150.         $pagination $paginator->paginate(
  151.             $qb,
  152.             1,
  153.             150
  154.         );
  155.         foreach ($pagination as $line){
  156.             $body $this->twig->render('@RestockMail/default/Mail/restock.twig', [
  157.                 'Customer' => $line->getCustomer(),
  158.                 'Product' => $line->getProduct(),
  159.                 "Baseurl" => (empty($_SERVER["HTTPS"]) ? "http://" "https://") . $_SERVER["HTTP_HOST"].""
  160.             ]);
  161.             $cid = (int) $line->getProductClassID();
  162.             $qb2 $this->productClassRepository->createQueryBuilder("pc")->where('pc.id = :id')->setParameter('id'$cid);
  163.             $product $qb2->getQuery()->getResult();
  164.             if(count($product ) == 1){
  165.             if($product[0]->getStock() > 0){
  166.                 $message = (new \Swift_Message());
  167.                 $message->setSubject($Config->getSubject());
  168.                 $message->setFrom(array($this->baseInfo->getEmail01() => $this->baseInfo->getShopName()));
  169.                 $message->setTo(array($line->getCustomer()->getEmail() =>$line->getCustomer()->getName01()));
  170.                 $message->setBody($body);
  171.                 $status $this->mailer->send($message);
  172.                 $send++;
  173.                 $line->setSendDate(new \DateTime("now"));
  174.                 $line->setStatus($this->RestockMailStatusRepository->find(RestockMailStatus::send));
  175.                 $this->entityManager->flush($line);
  176.             }
  177.             }else{
  178.             }
  179.         }
  180.         $response['status'] = $status;
  181.         $response['send'] = $send;
  182.         $json json_encode($response);
  183.         return new Response($json);
  184.     }
  185. }