src/Controller/Api/NewsController.php line 71

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use App\Repository\CompanyRepository;
  4. use App\Repository\ProductRepository;
  5. use App\Repository\NewsRepository;
  6. use DateTime;
  7. use Psr\Log\LoggerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Serializer\Serializer;
  14. use Symfony\Component\Serializer\SerializerInterface;
  15. class NewsController extends AbstractController
  16. {
  17.   private $companyRepository;
  18.   private $productRepository;
  19.   public function __construct(
  20.     CompanyRepository $companyRepository,
  21.     ProductRepository $productRepository,
  22.     LoggerInterface $logger
  23.   ) {
  24.     $this->companyRepository $companyRepository;
  25.     $this->productRepository $productRepository;
  26.     $this->logger $logger;
  27.   }
  28.   /**
  29.    * @Route("/api/news/{id}")
  30.    */
  31.   public function getOneNews($idNewsRepository $newsRepositorySerializerInterface $serializer)
  32.   {
  33.     $currentNews $newsRepository->find($id);
  34.     //  dump($currentNews);
  35.     $response = new Response();
  36.     $response->headers->set('Access-Control-Allow-Origin''*');
  37.     $response->headers->set('Content-Type''application/json');
  38.     $response->setContent($serializer->serialize($currentNews'json'));
  39.     return $response;
  40.   }
  41.   /**
  42.    * @Route("/api/allNews", methods={"GET"})
  43.    */
  44.   public function getAllNews(NewsRepository $newsRepositorySerializerInterface $serializer)
  45.   {
  46.     $news $newsRepository->findall();
  47.     dump($news);
  48.     $response = new Response();
  49.     $response->headers->set('Access-Control-Allow-Origin''*');
  50.     $response->headers->set('Content-Type''application/json');
  51.     $response->setContent($serializer->serialize($news'json'));
  52.     return $response;
  53.   }
  54.   /**
  55.    * @Route("/{_locale<en|fr|de|it|es>}/api/news/{filter}", methods={"GET"})
  56.    */
  57.   public function getLatestCompaniesAndProducts($filter)
  58.   {
  59.     // Get date today
  60.     $today = new DateTime('today midnight');
  61.     // Date from which we want news
  62.     $date = clone $today;
  63.     // Companies and products
  64.     $newCompanies = [];
  65.     $newProducts = [];
  66.     // Get date based on filter (today, week, month, ...)
  67.     switch ($filter) {
  68.       case 'latest':
  69.         $date->modify("-7 days");
  70.         break;
  71.       case 'today':
  72.         $date $today;
  73.         break;
  74.       case 'week':
  75.         $date->modify("-7 days");
  76.         break;
  77.       case 'month':
  78.         $date->modify("-30 days");
  79.         break;
  80.       case 'threeMonths':
  81.         $date->modify("-90 days");
  82.         break;
  83.       case 'sixMonths':
  84.         $date->modify("-180 days");
  85.         break;
  86.     }
  87.     $newCompanies $this->companyRepository->findLatestCompanies($date);
  88.     $newProducts $this->productRepository->findLatestProducts($date);
  89.     // Create Response array
  90.     $content = array(
  91.       'code' => Response::HTTP_OK,
  92.       'message' => 'Latest companies and products fetched successfully',
  93.       'companies' => $newCompanies,
  94.       'products' => $newProducts
  95.     );
  96.     // Return JSON
  97.     $response = new Response();
  98.     $response->headers->set('Access-Control-Allow-Origin''*');
  99.     $response->headers->set('Content-Type''application/json');
  100.     $response->setStatusCode(200);
  101.     $response->setContent(json_encode($content));
  102.     return $response;
  103.   }
  104. }