src/Controller/Manager/StockController.php line 32

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Manager;
  3. use App\Entity\Paper;
  4. use League\Csv\Writer;
  5. use App\Services\PaperSearch;
  6. use App\Repository\PaperRepository;
  7. use App\Form\Manager\PaperFilterType;
  8. use App\Repository\PaperProductRepository;
  9. use App\Services\ExportManager;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  13. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  16. use Symfony\Component\HttpFoundation\Request;
  17. use Symfony\Component\HttpFoundation\Session\Session;
  18. #[Route('/manager/stocks'name'stock_')]
  19. class StockController extends AbstractController
  20. {
  21.     protected $paperProductRepository;
  22.     public function __construct(PaperProductRepository $paperProductRepository)
  23.     {
  24.         $this->paperProductRepository $paperProductRepository;
  25.     }
  26.     #[Route('/'name'index')]
  27.     public function index(PaperRepository $paperRepositoryPaperSearch $paperSearch): Response
  28.     {
  29.         $pagination $paperRepository->findStocks(200);
  30.         $papers $pagination->getItems();
  31.         $count 0;
  32.         $price 0;
  33.         $quantity 0;
  34.         foreach($paperRepository->findBy(['archived' => false]) as $paper) {
  35.             $price += $paper->getPrice();
  36.             $quantity += $paper->getQuantity();
  37.             $count++;
  38.         }
  39.         $form $this->createForm(PaperFilterType::class, null, [
  40.             'papers' => $paperSearch->getPapers()
  41.         ]);
  42.         return $this->render('manager/stock/index.html.twig', [
  43.             'pagination' => $pagination,
  44.             'papers' => $papers,
  45.             'price' => $price,
  46.             'quantity' => $quantity,
  47.             'count' => $count,
  48.             'paper_products' => count($this->paperProductRepository->findAllDeliveredAndNotUsed()),
  49.             'form' => $form->createView()
  50.         ]);
  51.     }
  52.     #[Route('/{id}/detail'name'detail'methods: ['GET'])]
  53.     public function detail(Paper $paper): Response
  54.     {   
  55.         $pagination $this->paperProductRepository->findDetail($paper); 
  56.         
  57.         return $this->renderForm('manager/stock/detail.html.twig', [
  58.             'pagination' => $pagination,
  59.             'paper' => $paper,
  60.             'paper_products' => $pagination->getItems()
  61.         ]);
  62.     }
  63.     #[Route('/export'name'export')]
  64.     public function export(ExportManager $exportManagerParameterBagInterface $paramsPaperRepository $paperRepositoryPaperProductRepository $paperProductRepositorySession $session): Response 
  65.     {
  66.         $path $params->get('kernel.project_dir') . DIRECTORY_SEPARATOR 'tmp' DIRECTORY_SEPARATOR 'stock';
  67.         $file $exportManager->exportStock($path$paperRepository$paperProductRepository$session);
  68.         $response $this->file($file);
  69.         $response->deleteFileAfterSend();
  70.         return $response;
  71.     }
  72. }