<?php
namespace App\Utils;
use App\Entity\Blog;
use App\Entity\BlogImagen;
use Knp\Component\Pager\PaginatorInterface;
use Psr\Container\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
class BlogService extends Base
{
private $paginator;
public function __construct(ContainerInterface $container,
\Swift_Mailer $mailer,
ContainerBagInterface $containerBag,
PaginatorInterface $paginator)
{
parent::__construct($container, $mailer, $containerBag);
$this->paginator = $paginator;
}
/**
* DetalleBlog
* @param $url
* @return array
*/
public function DetalleBlog($url)
{
$arreglo_resultado = array();
$value = $this->getDoctrine()->getRepository(Blog::class)
->findOneBy(array('url' => $url));
if ($value != null) {
$arreglo_resultado = $this->DevolverItemBlog($value);
}
return $arreglo_resultado;
}
/**
* ListarAnuncios
* @param $page
* @return \Knp\Component\Pager\Pagination\PaginationInterface
*/
public function ListarBlogs($page)
{
$arreglo_resultado = array();
$empresa_id = $this->getParameter('empresa_id');
$lista = $this->getDoctrine()->getRepository(Blog::class)
->ListarOrdenados($empresa_id);
foreach ($lista as $value) {
$item = $this->DevolverItemBlog($value);
$arreglo_resultado[] = $item;
}
$pager = $this->paginator->paginate($arreglo_resultado, $page, 9);
return $pager;
}
/**
* DevolverItemBlog
* @param Blog $blog_entity
* @return array
*/
private function DevolverItemBlog($blog_entity)
{
$blog_id = $blog_entity->getBlogId();
$ruta = $this->ObtenerURL();
$dir = self::DIR_UPLOAD_BLOG;
$imagen = $blog_entity->getImagen() != '' ? $ruta . $dir . $blog_entity->getImagen() : '';
// imagenes
$imagenes = [];
$blog_imagenes = $this->getDoctrine()->getRepository(BlogImagen::class)
->ListarImagenes($blog_id);
foreach ($blog_imagenes as $blog_imagen){
$imagenes[] = $ruta . $dir . $blog_imagen->getImagen();
}
// fecha
$created_at = strtotime($blog_entity->getCreatedAt()->format('Y-m-d H:i:s'));
$fecha = date('l, F j, Y h:i A', $created_at);
// resumen
$descripcion = $blog_entity->getDescripcion();
$resumen = $this->truncate(strip_tags($descripcion), 200) ;
return [
'blog_id' => $blog_id,
'nombre' => $blog_entity->getNombre(),
'resumen' => $resumen,
'descripcion' => $descripcion,
'titulo' => $blog_entity->getTitulo(),
'descripcionSeo' => $blog_entity->getDescripcionSeo(),
'tags' => $blog_entity->getTags(),
'url' => $blog_entity->getUrl(),
'autor' => $blog_entity->getAutor()->getNombreCompleto(),
'fecha' => $fecha,
'imagen' => $imagen,
'imagenes' => $imagenes
];
}
}