<?php
namespace App\Controller;
use App\Entity\Article;
use App\Repository\ArticleRepository;
use App\Repository\CategoryRepository;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ArticleController extends AbstractController
{
private $articleRepository;
private $categoryRepository;
public function __construct(ArticleRepository $articleRepository, CategoryRepository $categoryRepository)
{
$this->categoryRepository = $categoryRepository;
$this->articleRepository = $articleRepository;
}
/**
*
* @Route("/", name="app_home")
*
*/
public function index(): Response
{
$articles = $this->articleRepository->findAll();
$categories = $this->categoryRepository->findAll();
return $this->render('article/index.html.twig', [
'articles' => $articles,
'categories' => $categories
]);
}
/**
*
* @Route("/list", name="app_list")
*
*/
public function list(): Response
{
$articles = $this->articleRepository->listachat();
return $this->render('article/list.html.twig', [
'articles' => $articles
]);
}
/**
*
* @Route("/{id}", name="app_detail")
*
*/
public function detail($id): Response
{
$article = $this->articleRepository->findOneBy(['id' => $id]);
$evolution = $this->articleRepository->evolution($id);
return $this->render('article/detail.html.twig', [
'article' => $article,
'evolution' => $evolution
]);
}
/**
* A function to add an article
*
* @Route("/article/{id}/minus", name="article_minus");
*
* @param Article $article
* @param EntityManagerInterface $manager
* @param ArticleRepository $repo
* @return Response
*/
public function minus(Article $article, EntityManagerInterface $manager, ArticleRepository $repo)
{
//$article = $this->getArticle();
if (!$article) {
return $this->json([
'code' => 403,
'message' => "Article doesn't exist"
], 403);
} else {
$quantity = $article->getQuantity() - 1;
$article->setQuantity($quantity);
$manager->persist($article);
$manager->flush();
return $this->json([
'code' => 200,
'message' => "Article founded",
'id' => $article->getId(),
'name' => $article->getName(),
'quantity' => $article->getQuantity()
], 200);
}
}
/**
* A function to add an article
*
* @Route("/article/{id}/add", name="article_add");
*
* @param Article $article
* @param EntityManagerInterface $manager
* @param ArticleRepository $repo
* @return Response
*/
public function add(Article $article, EntityManagerInterface $manager, ArticleRepository $repo)
{
//$article = $this->getArticle();
if (!$article) {
return $this->json([
'code' => 403,
'message' => "Article doesn't exist"
], 403);
} else {
$quantity = $article->getQuantity() + 1;
$article->setQuantity($quantity);
$manager->persist($article);
$manager->flush();
return $this->json([
'code' => 200,
'message' => "Article found",
'id' => $article->getId(),
'name' => $article->getName(),
'quantity' => $article->getQuantity()
], 200);
}
}
}