<?php
namespace App\Controller\Api;
use App\Controller\AbstractController;
use App\Entity\Prestation;
use App\Model\Enum\AccessControl;
use App\Traits\Autowired\Manager\PrestationManagerTrait;
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 Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/api/prestations")
* @ApiDescribe(Prestation::class)
*/
class PrestationController extends AbstractController {
use PrestationManagerTrait;
/**
* @Route("", methods="GET")
* @IsGranted(AccessControl::API_GET_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_getc")
* @ApiDescribe(
* collection=true,
* request={
* "parameters"={
* "filters"={
* "in"="query",
* "required"=false,
* "type"="string",
* "example"="{""prestationType"":[],""remarques"":"""",""contrat"":[],""chantier"":[],""price"":{""min"":0,""max"":0},""tva"":{""min"":0,""max"":0}}"
* }
* }
* }
* )
*/
public function list() {
return $this->prestationManager->apiFindBy();
}
/**
* @Route("/{id}", methods="GET", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_GET_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*/
public function find(Prestation $prestation) {
return $prestation;
}
/**
* @Route("", methods="POST")
* @IsGranted(AccessControl::API_POST_PRESTATION, subject="current_user")
* @Unserialize("prestation", groups="prestation_post")
* @Validate({ "prestation_post" })
* @Serialize(groups="prestation_get")
*
*/
public function post(Prestation $prestation) {
$this->prestationManager->calculMontantRegler($prestation);
return $prestation;
}
/**
* @Route("/{id}", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Unserialize("prestation", groups="prestation_put")
* @Validate({ "prestation_put" })
* @Serialize(groups="prestation_get")
*
*/
public function put(Prestation $prestation) {
$this->prestationManager->calculMontantRegler($prestation);
return $prestation;
}
/**
* @Route("/{id}/mark-PayPrepared", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putMarkPayPrepared(Prestation $prestation) {
return $this->prestationManager->MarkPayPrepared($prestation);
}
/**
* @Route("/{id}/mark-NotPayPrepared", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putMarkNotPayPrepared(Prestation $prestation) {
return $this->prestationManager->MarkNotPayPrepared($prestation);
}
/**
* @Route("/{id}/mark-paid", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putMarkPaid(Prestation $prestation) {
return $this->prestationManager->markPaid($prestation);
}
/**
* @Route("/{id}/mark-unpaid", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putMarkUnpaid(Prestation $prestation) {
return $this->prestationManager->markUnpaid($prestation);
}
/**
* @Route("/putdepositpaid/{idDeposit}", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putdepositpaid(string $idDeposit) {
return $this->prestationManager->putdepositpaid($idDeposit);
}
/**
* @Route("/putdepositunpaid/{idDeposit}", methods="PUT", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_PUT_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function putdepositunpaid(string $idDeposit) {
return $this->prestationManager->putdepositunpaid($idDeposit);
}
/**
* @Route("/{id}", methods="DELETE", requirements={"id"="\d+"})
* @IsGranted(AccessControl::API_DELETE_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*
*/
public function delete(Prestation $prestation) {
return $this->prestationManager->delete($prestation);
}
/**
* @Route("/maps/{contrat}/{commune}/{client}/{achat}/{bucheron}", methods="GET")
* @IsGranted(AccessControl::API_GET_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*/
public function fetchMaps(string $contrat, string $commune, string $client, string $achat, string $bucheron) {
return $this->prestationManager->findForMap($contrat, $commune, $client, $achat, $bucheron);
}
/**
* @Route("/cubages_attentes", methods="GET")
* @IsGranted(AccessControl::API_GET_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*/
public function CubagesAttentes() {
return $this->prestationManager->CubagesAttentes();
}
/**
* @Route("/reglementsAttente", methods="GET")
* @IsGranted(AccessControl::API_GET_PRESTATION, subject="current_user")
* @Serialize(groups="prestation_get")
*/
public function ReglementsAttente() {
return $this->prestationManager->ReglementsAttente();
}
}