<?php
namespace App\WebContent;
use App\Entity\Article;
use App\Entity\Component;
use App\Entity\Tag;
class WebPage extends AbstractWebContent
{
public function moreData($entity)
{
if (empty($entity->getTextResume())) {
$resume = strip_tags($entity->getText());
$resume = substr($resume, 0, 350);
$resume = html_entity_decode($resume, ENT_QUOTES);
$entity->setTextResume(trim($resume));
}
}
public function getData($slug)
{
return $this->manager->getRepository(\App\Entity\WebPage::class)
->findOneBy(['slug' => $slug]);
}
public function getDataArticle($slug, $slugCategory = "blog")
{
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => $slugCategory ]);
return $this->manager->getRepository(\App\Entity\Article::class)
->findOneBy(['slug' => $slug, 'category' => $category ]);
}
public function getComponents($componentsPage)
{
/** @TODO : si la fonction doit s'étendre alors il faudra refacto */
$results = $this->manager->getRepository(Component::class)->findAll();
$components = [];
foreach($results as $result) {
if($result->getWebPages()->count() < 1) {
$components[] = $this->getComponent($result);
}
}
foreach($componentsPage as $result) {
$components[] = $this->getComponent($result);
}
return $components;
}
private function getComponent($result)
{
$data = [];
if($result->getCategory()) {
$data = $this->getDataComponent($result->getCategory()->getSlug());
}
return [
'slug' => $result->getSlug(),
'entity' => $result,
'data' => $data
];
}
private function getDataComponent($slug)
{
switch ($slug) {
case 'last-articles':
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => 'blog', 'isActive' => true ]);
return $this->manager->getRepository(Article::class)
->findBy([ 'category' => $category, 'isActive' => true ], [ 'id' => 'DESC', ], 3);
break;
case 'prestation-articles':
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => 'prestation', 'isActive' => true ]);
return $this->manager->getRepository(Article::class)
->findBy([ 'category' => $category, 'isActive' => true ]);
break;
case 'project-articles':
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => 'project', 'isActive' => true ]);
return $this->manager->getRepository(Article::class)
->findBy([ 'category' => $category, 'isActive' => true ]);
break;
case 'all-articles':
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => 'blog', 'isActive' => true ]);
return $this->manager->getRepository(Article::class)
->findBy([ 'category' => $category, 'isActive' => true ], [ 'id' => 'DESC' ]);
break;
case 'last-article':
$category = $this->manager->getRepository(Tag::class)
->findBy([ 'slug' => 'blog', 'isActive' => true ]);
return $this->manager->getRepository(Article::class)
->findBy([ 'category' => $category, 'isActive' => true ], [ 'id' => 'DESC' ], 1);
break;
default:
break;
}
return [];
}
}