<?php
namespace App\Controller\Library;
use App\Entity\LibraryCategory;
use App\EntityManager\LibraryManager;
use App\Form\Library\LibraryDocumentSearchType;
use App\Model\SearchLibraryDocument;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/library")
*/
class LibraryCategoryController extends AbstractController
{
protected $libraryManager;
public function __construct(LibraryManager $libraryManager)
{
$this->libraryManager = $libraryManager;
}
/**
* @Route("/{id<\d+>?}", name="library_category_view")
* @Template()
*/
public function view(Request $request, LibraryCategory $category = null)
{
$searchObject = new SearchLibraryDocument();
$searchForm = $this->createForm(
LibraryDocumentSearchType::class,
$searchObject,
['method' => Request::METHOD_GET]
);
$searchForm->handleRequest($request);
$documents = $this->libraryManager->getCategoryList($category, $searchObject);
$comments = $this->libraryManager->getComments($category, $searchObject);
return [
'category' => $category ?? new LibraryCategory(),
'documents' => $documents,
'comments' => $comments,
'sort' => $request->query->get('sort'),
'searchForm' => $searchForm->createView(),
];
}
/**
* @Route("/best", name="library_category_best")
* @Template()
*/
public function best(Request $request)
{
$documents = $this->libraryManager->getBestDocuments();
return [
'documents' => $documents,
];
}
/**
* @Route("/favorite", name="library_category_favorite")
* @Template()
*/
public function favorite(Request $request)
{
$documents = $this->libraryManager->getFavorites();
return [
'documents' => $documents,
];
}
}