<?php
namespace App\Controller\Api;
use App\Controller\AbstractController;
use App\Entity\CubageLivraison;
use App\Entity\Livraison;
use App\Model\Enum\AccessControl;
use App\Traits\Autowired\Manager\CubageLivraisonManagerTrait;
use GollumSF\RestBundle\Annotation\Serialize;
use GollumSF\RestBundle\Annotation\Unserialize;
use GollumSF\RestBundle\Annotation\Validate;
use GollumSF\RestDocBundle\Annotation\ApiDescribe;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/api/cubage-livraisons")
* @ApiDescribe(CubageLivraison::class)
*/
class CubageLivraisonController extends AbstractController {
use CubageLivraisonManagerTrait;
/**
* @Route("", methods="GET", requirements={"livraison"="\d+"})
* @IsGranted(AccessControl::API_GET_CUBAGELIVRAISON, subject="current_user")
* @Serialize(groups="cubageLivraison_getc")
* @ApiDescribe(
* request={
* "parameters"={
* "filters"={
* "in"="query",
* "required"=false,
* "type"="string",
* "example"="{""boisType"":[],""boisQuality"":[],""boisSize"":[],""marquage"":[],""volumeInner"":{""min"":0,""max"":0},""volumeOutter"":{""min"":0,""max"":0},""coef"":{""min"":0,""max"":0}}"
* }
* }
* }
* )
*/
public function list() {
return $this->cubageLivraisonManager->apiFindBy();
}
/**
* @Route("/{id}", methods="GET", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_GET_CUBAGELIVRAISON, subject="current_user")
* @Serialize(groups="cubageLivraison_get")
*/
public function find(CubageLivraison $cubageLivraison) {
return $cubageLivraison;
}
/**
* @Route("", methods="POST")
* @IsGranted(AccessControl::API_POST_CUBAGELIVRAISON, subject="current_user")
* @Unserialize("cubageLivraison", groups="cubageLivraison_post", save=false)
* @Validate({ "cubageLivraison_post" })
* @Serialize(groups="cubageLivraison_get")
*
*/
public function post(CubageLivraison $cubageLivraison) {
/*if ($cubageLivraison->getLivraison()->getPurchase()) {
throw new AccessDeniedHttpException();
}*/
return $this->cubageLivraisonManager->update($cubageLivraison);
}
/**
* @Route("/{id}", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_CUBAGELIVRAISON, subject="current_user")
* @Unserialize("cubageLivraison", groups="cubageLivraison_put", save=false)
* @Validate({ "cubageLivraison_put" })
* @Serialize(groups="cubageLivraison_get")
*
*/
public function put(CubageLivraison $cubageLivraison) {
/*if ($cubageLivraison->getLivraison()->getPurchase()) {
throw new AccessDeniedHttpException();
}*/
return $this->cubageLivraisonManager->update($cubageLivraison);
}
/**
* @Route("/{id}", methods="DELETE", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_DELETE_CUBAGELIVRAISON, subject="current_user")
* @Serialize(groups="cubageLivraison_get")
*
*/
public function delete(CubageLivraison $cubageLivraison) {
/*if ($cubageLivraison->getLivraison()->getPurchase()) {
throw new AccessDeniedHttpException();
}*/
return $this->cubageLivraisonManager->delete($cubageLivraison);
}
/**
* @Route("/affecter_numfacture/{id}/{numfacture}", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_CUBAGELIVRAISON, subject="current_user")
* @Serialize(groups="cubageLivraison_get")
*
*/
public function affecter_numfacture(CubageLivraison $cubageLivraison, String $numfacture) {
return $this->cubageLivraisonManager->affecter_numfacture($cubageLivraison, $numfacture);
}
}