<?php
namespace App\Controller\Movimientos;
use App\Entity\Movimientos\OrdenCompra;
use App\Form\Movimientos\OrdenCompraType;
use App\Repository\Movimientos\OrdenCompraRepository;
use Knp\Snappy\Pdf;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Twig\Environment;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/movimientos/orden/compra")
*/
class OrdenCompraController extends AbstractController
{
private $twig;
private $pdf;
public function __construct(Environment $twig, Pdf $pdf)
{
$this->twig = $twig;
$this->pdf = $pdf;
}
/**
* @Route("/{id}/pdf", name="app_movimientos_orden_compra_pdf", methods={"GET"})
*/
public function pdf(OrdenCompra $ordenCompra)
{
$html = $this->twig->render('movimientos/orden_compra/pdf.html.twig', [ 'orden_compra' => $ordenCompra ]);
$this->pdf->setTimeout(600);
return new PdfResponse(
$this->pdf->getOutputFromHtml($html),
'orden_compra_' . $ordenCompra->getNumero() . '.pdf'
);
}
/**
* @Route("/", name="app_movimientos_orden_compra_index", methods={"GET"})
*/
public function index(OrdenCompraRepository $ordenCompraRepository): Response
{
return $this->render('movimientos/orden_compra/index.html.twig', [
'orden_compras' => $ordenCompraRepository->findAll(),
]);
}
/**
* @Route("/new", name="app_movimientos_orden_compra_new", methods={"GET", "POST"})
*/
public function new(Request $request, OrdenCompraRepository $ordenCompraRepository): Response
{
$ordenCompra = new OrdenCompra();
$proximo = $ordenCompraRepository->proximoNumero();
if (!$proximo)
{
$proximo = 1;
}
$ordenCompra->setNumero($proximo);
$form = $this->createForm(OrdenCompraType::class, $ordenCompra, [ 'user' => $this->getUser() ] );
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$ordenCompraRepository->add($ordenCompra, true);
return $this->redirectToRoute('app_movimientos_item_movimiento_new', ['id' => $ordenCompra->getId()], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('movimientos/orden_compra/new.html.twig', [
'orden_compra' => $ordenCompra,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_movimientos_orden_compra_show", methods={"GET"})
*/
public function show(OrdenCompra $ordenCompra): Response
{
return $this->render('movimientos/orden_compra/show.html.twig', [
'orden_compra' => $ordenCompra,
]);
}
/**
* @Route("/{id}/edit", name="app_movimientos_orden_compra_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, OrdenCompra $ordenCompra, OrdenCompraRepository $ordenCompraRepository): Response
{
$form = $this->createForm(OrdenCompraType::class, $ordenCompra, [ 'user' => $this->getUser() ]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$ordenCompraRepository->add($ordenCompra, true);
return $this->redirectToRoute('app_movimientos_orden_compra_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('movimientos/orden_compra/edit.html.twig', [
'orden_compra' => $ordenCompra,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_movimientos_orden_compra_delete", methods={"POST"})
*/
public function delete(Request $request, OrdenCompra $ordenCompra, OrdenCompraRepository $ordenCompraRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$ordenCompra->getId(), $request->request->get('_token'))) {
$ordenCompraRepository->remove($ordenCompra, true);
}
return $this->redirectToRoute('app_movimientos_orden_compra_index', [], Response::HTTP_SEE_OTHER);
}
}