src/Frontend/OpenSpaceBundle/Services/OpenSpaceService.php line 117

Open in your IDE?
  1. <?php
  2. namespace App\Frontend\OpenSpaceBundle\Services;
  3. use App\AMZ\CoreBundle\Services\AMZS;
  4. use App\AMZ\InquiryBundle\Entity\Project;
  5. use App\AMZ\PostBundle\Entity\Post;
  6. use Doctrine\ORM\EntityManager;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use function Doctrine\ORM\QueryBuilder;
  10. class OpenSpaceService{
  11.     private $em;
  12.     private $paginator;
  13.     public function __construct(EntityManagerInterface $emPaginatorInterface $paginator){
  14.         $this->em $em;
  15.         $this->paginator $paginator;
  16.     }
  17.     public function getSliderForHomepage(){
  18.         $qb $this->em->getRepository('AMZPostBundle:Gallery')
  19.             ->createQueryBuilder("gallery");
  20.         $qb->andWhere(
  21.             $qb->expr()->in('gallery.slug',OpenSpace::DEFAULT_HOMEPAGE_SLIDER)
  22.         );
  23.         $gallery $qb->getQuery()->getResult();
  24.         return $gallery;
  25.     }
  26.     public function getBannerBySlug($slug){
  27.         $qb $this->em->getRepository("AMZPostBundle:Banner")
  28.             ->createQueryBuilder('banner');
  29.         $qb->andWhere(
  30.             $qb->expr()->eq('banner.slug'$qb->expr()->literal($slug))
  31.         );
  32.         $qb->setFirstResult(0);
  33.         $qb->setMaxResults(1);
  34.         return $qb->getQuery()->getSingleResult();
  35.     }
  36.     public function getPageBySlug($slug){
  37.         $qb $this->em->getRepository("AMZPageBundle:Page")
  38.             ->createQueryBuilder('page');
  39.         $qb->join("page.post",'post');
  40.         $qb->andWhere(
  41.             $qb->expr()->eq("post.slug",$qb->expr()->literal($slug))
  42.         );
  43.         $qb->setFirstResult(0);
  44.         $qb->setMaxResults(1);
  45.         return $qb->getQuery()->getSingleResult();
  46.     }
  47.     public function getCompanyService(){
  48.         $qb $this->em->getRepository("AMZProductBundle:Service")
  49.             ->createQueryBuilder("service");
  50.         return $qb->getQuery()->getResult();
  51.     }
  52.     public function getTestimonial(){
  53.         $qb $this->em->getRepository("AMZPostBundle:Testimonial")
  54.             ->createQueryBuilder("testimonial");
  55.         return $qb->getQuery()->getResult();
  56.     }
  57.     public function getProjectCategory(){
  58.         $qb $this->em->getRepository("AMZPostBundle:Category")
  59.         ->createQueryBuilder("category");
  60.         $qb->join('category.parent','parent');
  61.         $qb->andWhere(
  62.             $qb->expr()->eq('parent.slug'$qb->expr()->literal(AMZS::DEFAULT_COMPANY_PROJECT_CATEGORY_SLUG))
  63.         );
  64.         $qb->select('category.title','category.thumbnail','category.description','category.slug');
  65.         $categories $qb->getQuery()->getArrayResult();
  66.         return $categories;
  67.     }
  68.     public function getProjectByCategorySlug($slug$page 1){
  69.         $qb $this->em->getRepository("AMZProjectBundle:Project")
  70.             ->createQueryBuilder("project");
  71.         $qb->join("project.post",'post');
  72.         $qb->join("post.category",'category');
  73.         $qb->andWhere(
  74.             $qb->expr()->eq('category.slug',$qb->expr()->literal($slug)),
  75.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  76.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_COMPANY_PROJECT)
  77.         );
  78.         $qb->orderBy('post.display',"ASC");
  79.         $qb->orderBy('project.id',"DESC");
  80.         return $this->paginator->paginate($qb->getQuery(),$pageOpenSpace::DEFAULT_PROJECT_PER_PAGE);
  81. //        return $qb->getQuery()->getResult();
  82.     }
  83.     public function getArticleByCategorySlug($slug$page 1){
  84.         $qb $this->em->getRepository("AMZPostBundle:Post")
  85.             ->createQueryBuilder("post");
  86.         $qb->join("post.category",'category');
  87.         $qb->andWhere(
  88.             $qb->expr()->eq('category.slug',$qb->expr()->literal($slug)),
  89.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  90.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_ARTICLE)
  91.         );
  92.         $qb->orderBy('post.id',"DESC");
  93.         $query $qb->getQuery();
  94.         return $this->paginator->paginate(
  95.             $query,$pageOpenSpace::DEFAULT_ARTICLE_PER_PAGE
  96.         );
  97.     }
  98.     public function findProductBySlug($slug){
  99.         $qb $this->em->getRepository("AMZProductBundle:Product")
  100.             ->createQueryBuilder('product');
  101.         $qb->join('product.post','post');
  102.         $qb->andWhere(
  103.             $qb->expr()->eq('post.slug'$qb->expr()->literal($slug)),
  104.             $qb->expr()->eq('post.deleted'AMZS::STATUS_NOT_DELETED)
  105.         );
  106.         $qb->setFirstResult(0);
  107.         $qb->setMaxResults(1);
  108.         $qb->select('post.title as title','post.slug as slug''post.image as image','post.content as content');
  109.         return $qb->getQuery()->getSingleResult();
  110.     }
  111.     public function getServices(){
  112.         $qb $this->em->getRepository("AMZPostBundle:Post")
  113.             ->createQueryBuilder("post");
  114.         $qb->join("post.category",'category');
  115.         $qb->andWhere(
  116.             $qb->expr()->eq('category.slug',$qb->expr()->literal('dich-vu')),
  117.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  118.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_SERVICE)
  119.         );
  120.         $qb->orderBy('post.display',"ASC");
  121.         return $qb->getQuery()->getArrayResult();
  122.     }
  123.     public function getSolutions(){
  124.         $qb $this->em->getRepository("AMZPostBundle:Post")
  125.             ->createQueryBuilder("post");
  126.         $qb->join("post.category",'category');
  127.         $qb->andWhere(
  128.             $qb->expr()->eq('category.slug',$qb->expr()->literal(AMZS::DEFAULT_SOLUTION_SLUG)),
  129.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  130.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_SOLUTION)
  131.         );
  132.         $qb->orderBy('post.display',"ASC");
  133.         return $qb->getQuery()->getArrayResult();
  134.     }
  135.     public function getRelativeSolution(Post $post){
  136.         $qb $this->em->getRepository("AMZPostBundle:Post")
  137.             ->createQueryBuilder("post");
  138.         $qb->join("post.category",'category');
  139.         $qb->andWhere(
  140.             $qb->expr()->eq('category.slug',$qb->expr()->literal(AMZS::DEFAULT_SOLUTION_SLUG)),
  141.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  142.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_SOLUTION)
  143.         );
  144.         $qb->orderBy('post.display',"ASC");
  145.         return $qb->getQuery()->getArrayResult();
  146.     }
  147.     public function getRelativeServices(Post $post){
  148.         $qb $this->em->getRepository("AMZPostBundle:Post")
  149.             ->createQueryBuilder("post");
  150.         $qb->join("post.category",'category');
  151.         $qb->andWhere(
  152.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  153.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_SERVICE)
  154.         );
  155.         $qb->orderBy('post.display',"ASC");
  156.         return $qb->getQuery()->getArrayResult();
  157.     }
  158.     public function getFAQForHomepage(){
  159.         $qb $this->em->getRepository("AMZPostBundle:Post")
  160.             ->createQueryBuilder("post");
  161.         $qb->join("post.category",'category');
  162.         $qb->andWhere(
  163.             $qb->expr()->eq('post.deleted',AMZS::STATUS_NOT_DELETED),
  164.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_FAQ),
  165.             $qb->expr()->eq('post.isHot'AMZS::POST_IS_HOT)
  166.         );
  167.         $qb->orderBy('post.display',"ASC");
  168.         return $qb->getQuery()->getArrayResult();
  169.     }
  170.     public function getCompanyProject(){
  171.         $qb $this->em->getRepository('AMZProjectBundle:Project')
  172.             ->createQueryBuilder("project");
  173.         $qb->join('project.post','post');
  174.         $qb->join('post.category','category');
  175.         $qb->andWhere(
  176.             $qb->expr()->eq('post.type',AMZS::POST_TYPE_COMPANY_PROJECT),
  177.             $qb->expr()->eq('category.type',AMZS::POST_TYPE_COMPANY_PROJECT)
  178.         );
  179.         $qb->orderBy('post.display''ASC');
  180.         $qb->select('post.title','post.image','post.description','project.client','project.location','post.slug');
  181.         return $qb->getQuery()->getArrayResult();
  182.     }
  183.     public function getProjectDetailBySlug($slug){
  184.         $qb $this->em->getRepository('AMZProjectBundle:Project')
  185.             ->createQueryBuilder("project");
  186.         $qb->join('project.post','post');
  187.         $qb->andWhere(
  188.             $qb->expr()->eq('post.type',AMZS::POST_TYPE_COMPANY_PROJECT),
  189.             $qb->expr()->eq('post.slug'$qb->expr()->literal($slug))
  190.         );
  191.         $qb->orderBy('post.display''ASC');
  192.         $qb->setFirstResult(0);
  193.         $qb->setMaxResults(1);
  194. //        $qb->select('post.title','post.image','post.content','post.description','project.client','project.location','post.slug');
  195.         return $qb->getQuery()->getSingleResult();
  196.     }
  197.     public function getRelativeProjects($slug$first=0$max=AMZS::DEFAULT_RELATIVE_POST){
  198.         $qb $this->em->getRepository('AMZProjectBundle:Project')
  199.             ->createQueryBuilder("project");
  200.         $qb->join('project.post','post');
  201.         $qb->andWhere(
  202.             $qb->expr()->eq('post.type',AMZS::POST_TYPE_COMPANY_PROJECT),
  203.             $qb->expr()->neq('post.slug'$qb->expr()->literal($slug))
  204.         );
  205.         $qb->setFirstResult($first);
  206.         $qb->setMaxResults($max);
  207.         $qb->select('post.title','post.image','post.description','project.client','project.location','post.slug');
  208.         return $qb->getQuery()->getArrayResult();
  209.     }
  210.     public function validateInquiryData($data){
  211.         $name $data['name'];
  212.         $email $data['email'];
  213.         $phone $data['phone'];
  214.         $title $data['title'];
  215.         $content $data['content'];
  216.         $isValid = array();
  217.         if(!($this->validateName($name))){
  218.             $isValid['name'] = 'check-your-name';
  219.         }
  220.         if(!($this->validateMail($email))){
  221.             $isValid['email'] = 'check-your-email';
  222.         }
  223.         if(!($this->validateMail($phone))){
  224.             $isValid['phone'] = 'check-your-phone';
  225.         }
  226.         if(!($this->validateTitle($title))){
  227.             $isValid['title'] = 'check-your-title';
  228.         }
  229.         if(!($this->validateContent($content))){
  230.             $isValid['content'] = 'check-your-content';
  231.         }
  232.         return $isValid;
  233.     }
  234.     private function validateName($txt){
  235.         if($this->isEmpty($txt)){
  236.             return false;
  237.         }
  238.         return true;
  239.     }
  240.     private function validatePhone($txt){
  241.         if($this->isEmpty($txt)){
  242.             return false;
  243.         }
  244.         return true;
  245.     }
  246.     private function validateMail($txt){
  247.         if($this->isEmpty($txt)){
  248.             return false;
  249.         }
  250.         return true;
  251.     }
  252.     private function validateTitle($txt){
  253.         if($this->isEmpty($txt)){
  254.             return false;
  255.         }
  256.         return true;
  257.     }
  258.     private function validateContent($txt){
  259.         if($this->isEmpty($txt)){
  260.             return false;
  261.         }
  262.         return true;
  263.     }
  264.     private function isEmpty($txt){
  265.     }
  266.     private function isPhone($txt){
  267.     }
  268.     private function isEmail($txt){
  269.     }
  270.     public function getArticleBySlug($slug){
  271.         $qb $this->em->getRepository("AMZPostBundle:Post")
  272.             ->createQueryBuilder('post');
  273.         $qb->andWhere(
  274.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_ARTICLE),
  275.             $qb->expr()->eq('post.slug',$qb->expr()->literal($slug))
  276.         );
  277.         $qb->setFirstResult(0);
  278.         $qb->setMaxResults(1);
  279.         return $qb->getQuery()->getSingleResult();
  280.     }
  281.     public function getOlderArticle(Post $post,$max=OpenSpace::DEFAULT_MAX_ARTICLE_NUMBER$start 0){
  282.         $qb $this->em->getRepository("AMZPostBundle:Post")
  283.             ->createQueryBuilder("post");
  284.         $qb->andWhere(
  285.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_ARTICLE),
  286.             $qb->expr()->lt('post.id'$post->getId())
  287.         );
  288.         $qb->setFirstResult($start);
  289.         $qb->setMaxResults($max);
  290.         $qb->orderBy("post.id""DESC");
  291.         return $qb->getQuery()->getResult();
  292.     }
  293.     public function getLatestArticles($max=OpenSpace::DEFAULT_MAX_ARTICLE_NUMBER$start 0){
  294.         $qb $this->em->getRepository("AMZPostBundle:Post")
  295.             ->createQueryBuilder("post");
  296.         $qb->andWhere(
  297.             $qb->expr()->eq('post.type'AMZS::POST_TYPE_ARTICLE)
  298.         );
  299.         $qb->setFirstResult($start);
  300.         $qb->setMaxResults($max);
  301.         $qb->orderBy("post.id""DESC");
  302.         return $qb->getQuery()->getResult();
  303.     }
  304. }