src/Utils/CustomerHelper.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\Utils;
  3. use Doctrine\ORM\EntityManagerInterface;
  4. use App\Exception\ResourceNotFoundException;
  5. use App\Entity\Customer;
  6. use App\Entity\Site;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class CustomerHelper 
  9. {
  10.     
  11.     protected $entityManager;
  12.     protected $requestStack;
  13.     
  14.     public function __construct (
  15.         EntityManagerInterface $entityManager,
  16.         RequestStack $requestStack
  17.     ) {
  18.         $this->entityManager $entityManager;
  19.         $this->requestStack $requestStack;
  20.     }
  21.     public function getSiteCode() {
  22.         $site_code null;
  23.         $request $this->requestStack->getCurrentRequest();
  24.         if($request) {
  25.             $session $request->getSession();
  26.             if($session) {
  27.                 $site_code $session->get("site");
  28.             }
  29.         }
  30.         return $site_code;
  31.     }
  32.     
  33.     public function getCustomerById ($id 0)
  34.     {
  35.         $customer $this->entityManager
  36.             ->getRepository(Customer::class)
  37.             ->findOneBy([
  38.                 "id" => $id
  39.             ]);
  40.             
  41.         if ($customer) {
  42.             return $customer;
  43.         }
  44.         
  45.         throw new ResourceNotFoundException ("Customer with Id {$id} - Not Found");
  46.     }
  47.     
  48.     public function getCustomersByCategory (
  49.         $categoryid "",
  50.         $site ""
  51.     ) {
  52.             return $this->entityManager
  53.                 ->getRepository(Customer::class)
  54.                 ->getCustomersByCategory($categoryid$site);
  55.     }
  56.     
  57.     public function getActiveCustomers () {
  58.             return $this->entityManager
  59.                 ->getRepository(Customer::class)
  60.                 ->getActiveCustomers();
  61.     }
  62.     
  63.     public function getCustomersByContentType (
  64.         $content_type ""
  65.     ) {
  66.         $site_code $this->getSiteCode();
  67.         $query implode(" ", array (
  68.             "SELECT customer",
  69.             "FROM",
  70.                 "App\Entity\Customer customer",
  71.             "JOIN",
  72.                 "customer.contents content",
  73.             (($site_code) ? implode(" ", array (
  74.                 "JOIN",
  75.                     "customer.site cusite",
  76.                 "JOIN",
  77.                     "content.site csite",
  78.             )) : ""),
  79.             "WHERE",
  80.                 "content.type = {$content_type}",
  81.                 "AND content.status = 1",
  82.                 (($site_code) ? implode(" ", array (
  83.                     "AND",
  84.                         "cusite.id = {$site_code}",
  85.                     "AND",
  86.                         "csite.id = {$site_code}",
  87.                 )) : ""),
  88.             "ORDER BY",
  89.                 "customer.title ASC",
  90.         ));
  91.         
  92.         $results $this->entityManager
  93.             ->createQuery($query)
  94.         ->getResult();
  95.         
  96.         return $results;
  97.     }
  98.     
  99.     public function getCustomersWithProducts () {
  100.         $query implode(" ", array (
  101.             "SELECT customer",
  102.             "FROM",
  103.                 "App\Entity\Customer customer",
  104.             "JOIN",
  105.                 "customer.products product",
  106.             "WHERE",
  107.                 "product.type = 4",
  108.                 "AND product.status = 1",
  109.             "ORDER BY",
  110.                 "customer.title ASC",
  111.         ));
  112.         
  113.         $results $this->entityManager
  114.             ->createQuery($query)
  115.         ->getResult();
  116.         
  117.         return $results;
  118.     }
  119.     
  120.     public function customerHasEbooks(){
  121.         $site_code $this->getSiteCode();
  122.         $results $this->entityManager
  123.             ->getRepository(Customer::class)
  124.             ->customerHasEbooks($site_code);
  125.         return $results;
  126.     }
  127.     public function getDirectoryBySlug($slug) {
  128.         $qb $this->entityManager->createQueryBuilder();
  129.         $qb->select('c')
  130.             ->from('App\Entity\Customer''c')
  131.             ->where('c.slug = :slug')
  132.             ->setParameter('slug'$slug);
  133.         
  134.         $results $qb->getQuery()->getResult();
  135.         return $results;
  136.     }
  137.     public function getFacebookHandles() {
  138.         $stmt $this->entityManager->getConnection()->query("SELECT facebook FROM customer WHERE facebook != ''");
  139.         $res $stmt->fetchAll();
  140.         $handles = [];
  141.         foreach($res as $r) {
  142.             $handle preg_replace(["/\s+/","/@/"], ""$r["facebook"]);
  143.             if (filter_var($handleFILTER_VALIDATE_URL) !== FALSE) {
  144.                 $handle parse_url($handlePHP_URL_PATH);
  145.                 $handle explode("/"$handle);
  146.                 $handle $handle[1];
  147.             }
  148.             $handle strstr($handle'?'true) ?: $handle;
  149.             $handles[] = $handle;
  150.         }
  151.         sort($handles);
  152.         return array_values(array_unique($handles));
  153.     }
  154.     
  155.     public function getLinkedinHandles() {
  156.         $stmt $this->entityManager->getConnection()->query("SELECT linkedin FROM customer WHERE linkedin != ''");
  157.         $res $stmt->fetchAll();
  158.         $handles = [];
  159.         foreach($res as $r) {
  160.             $handle preg_replace(["/\s+/","/@/"], ""$r["linkedin"]);
  161.             if (filter_var($handleFILTER_VALIDATE_URL) !== FALSE) {
  162.                 $handle parse_url($handlePHP_URL_PATH);
  163.                 if(substr($handle0strlen("/company-beta/")) == "/company-beta/") {
  164.                     $handle substr($handlestrlen("/company-beta/") - 1);
  165.                 }
  166.                 if(substr($handle0strlen("/company/")) == "/company/") {
  167.                     $handle substr($handlestrlen("/company/") - 1);
  168.                 }
  169.                 if(substr($handle0strlen("/in/")) == "/in/") {
  170.                     $handle substr($handlestrlen("/in/") - 1);
  171.                 }
  172.                 $handle explode("/"$handle);
  173.                 $handle $handle[1];
  174.             }
  175.             $handle strstr($handle'?'true) ?: $handle;
  176.             $handles[] = $handle;
  177.         }
  178.         sort($handles);
  179.         return array_values(array_unique($handles));
  180.     }
  181.     
  182.     public function getTwitterHandles() {
  183.         $stmt $this->entityManager->getConnection()->query("SELECT twitter FROM customer WHERE twitter != ''");
  184.         $res $stmt->fetchAll();
  185.         $handles = [];
  186.         foreach($res as $r) {
  187.             $handle preg_replace(["/\s+/","/@/"], ""$r["twitter"]);
  188.             if (filter_var($handleFILTER_VALIDATE_URL) !== FALSE) {
  189.                 $handle parse_url($handlePHP_URL_PATH);
  190.                 $handle explode("/"$handle);
  191.                 $handle $handle[1];
  192.             }
  193.             $handle strstr($handle'?'true) ?: $handle;
  194.             $handles[] = $handle;
  195.         }
  196.         sort($handles);
  197.         return array_values(array_unique($handles));
  198.     }
  199.     public function getCustomerTags() {
  200.         $stmt $this->entityManager->getConnection()->query("SELECT hash_tag FROM customer WHERE hash_tag != ''");
  201.         $res $stmt->fetchAll();
  202.         $tags = [];
  203.         foreach($res as $r) {
  204.             $tags array_merge($tagsexplode(","preg_replace(["/\s+/","/#/"], ""$r["hash_tag"])));
  205.         }
  206.         sort($tags);
  207.         return array_values(array_unique($tags));
  208.     }
  209.     
  210. }