vendor/crosiersource/crosierlib-radx/src/Entity/Financeiro/OperadoraCartao.php line 68

Open in your IDE?
  1. <?php
  2. namespace CrosierSource\CrosierLibRadxBundle\Entity\Financeiro;
  3. use ApiPlatform\Core\Annotation\ApiFilter;
  4. use ApiPlatform\Core\Annotation\ApiResource;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  7. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
  8. use ApiPlatform\Core\Serializer\Filter\PropertyFilter;
  9. use CrosierSource\CrosierLibBaseBundle\Doctrine\Annotations\EntityHandler;
  10. use CrosierSource\CrosierLibBaseBundle\Entity\EntityId;
  11. use CrosierSource\CrosierLibBaseBundle\Entity\EntityIdTrait;
  12. use Doctrine\ORM\Mapping as ORM;
  13. use Symfony\Component\Serializer\Annotation\Groups;
  14. use Symfony\Component\Validator\Constraints as Assert;
  15. /**
  16.  * Entidade Operadora de Cartões.
  17.  * Ex.: RDCARD, CIELO, STONE.
  18.  *
  19.  * @ApiResource(
  20.  *     normalizationContext={"groups"={"operadoraCartao","carteira","user","entityId"},"enable_max_depth"=true},
  21.  *     denormalizationContext={"groups"={"operadoraCartao"},"enable_max_depth"=true},
  22.  *
  23.  *     itemOperations={
  24.  *          "get"={"path"="/fin/operadoraCartao/{id}", "security"="is_granted('ROLE_FINAN')"},
  25.  *          "put"={"path"="/fin/operadoraCartao/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"},
  26.  *          "delete"={"path"="/fin/operadoraCartao/{id}", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  27.  *     },
  28.  *     collectionOperations={
  29.  *          "get"={"path"="/fin/operadoraCartao", "security"="is_granted('ROLE_FINAN')"},
  30.  *          "post"={"path"="/fin/operadoraCartao", "security"="is_granted('ROLE_FINAN_ADMIN')"}
  31.  *     },
  32.  *
  33.  *     attributes={
  34.  *          "pagination_items_per_page"=10,
  35.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  36.  *     }
  37.  *
  38.  * )
  39.  * @ApiFilter(PropertyFilter::class)
  40.  * 
  41.  * @ApiFilter(BooleanFilter::class, properties={"ativa"})
  42.  *
  43.  * @ApiFilter(SearchFilter::class,
  44.  *     properties={
  45.  *     "id": "exact",
  46.  *     "descricao": "partial",
  47.  *     "carteira": "exact",
  48.  *     "carteira.id": "exact"
  49.  * })
  50.  * @ApiFilter(OrderFilter::class, properties={
  51.  *     "id", 
  52.  *     "descricao", 
  53.  *     "carteira.descricao", 
  54.  *     "updated",
  55.  *     "ativa"
  56.  * }, arguments={"orderParameterName"="order"})
  57.  *
  58.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibRadxBundle\EntityHandler\Financeiro\OperadoraCartaoEntityHandler")
  59.  *
  60.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibRadxBundle\Repository\Financeiro\OperadoraCartaoRepository")
  61.  * @ORM\Table(name="fin_operadora_cartao")
  62.  *
  63.  * @author Carlos Eduardo Pauluk
  64.  */
  65. class OperadoraCartao implements EntityId
  66. {
  67.     use EntityIdTrait;
  68.     /**
  69.      *
  70.      * @ORM\Column(name="descricao", type="string", nullable=false, length=40)
  71.      * @Assert\NotBlank()
  72.      * @Groups("operadoraCartao")
  73.      */
  74.     public ?string $descricao null;
  75.     /**
  76.      * Em qual Carteira as movimentações desta Operadora acontecem.
  77.      *
  78.      * @ORM\ManyToOne(targetEntity="CrosierSource\CrosierLibRadxBundle\Entity\Financeiro\Carteira")
  79.      * @ORM\JoinColumn(name="carteira_id", nullable=true)
  80.      * @Groups("operadoraCartao")
  81.      */
  82.     public ?Carteira $carteira null;
  83.     /**
  84.      * @ORM\Column(name="ativa", type="boolean")
  85.      * @Groups("operadoraCartao")
  86.      */
  87.     public ?bool $ativa true;
  88.     
  89.     /**
  90.      * @return string
  91.      * @Groups("operadoraCartao")
  92.      */
  93.     public function getDescricaoMontada(): string
  94.     {
  95.         return $this->descricao ' (' $this->carteira->getDescricaoMontada() . ')';
  96.     }
  97. }