vendor/crosiersource/crosierlib-radx/src/Entity/Financeiro/Banco.php line 56

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\BooleanFilter;
  6. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
  7. use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter;
  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 'Banco'.
  17.  *
  18.  * @ApiResource(
  19.  *     normalizationContext={"groups"={"banco","entityId"},"enable_max_depth"=true},
  20.  *     denormalizationContext={"groups"={"banco"},"enable_max_depth"=true},
  21.  *
  22.  *     itemOperations={
  23.  *          "get"={"path"="/fin/banco/{id}", "security"="is_granted('ROLE_FINAN')"},
  24.  *          "put"={"path"="/fin/banco/{id}", "security"="is_granted('ROLE_FINAN_MASTER')"},
  25.  *          "delete"={"path"="/fin/banco/{id}", "security"="is_granted('ROLE_FINAN_MASTER')"}
  26.  *     },
  27.  *     collectionOperations={
  28.  *          "get"={"path"="/fin/banco", "security"="is_granted('ROLE_FINAN')"},
  29.  *          "post"={"path"="/fin/banco", "security"="is_granted('ROLE_FINAN_MASTER')"}
  30.  *     },
  31.  *
  32.  *     attributes={
  33.  *          "pagination_items_per_page"=10,
  34.  *          "formats"={"jsonld", "csv"={"text/csv"}}
  35.  *     }
  36.  *
  37.  * )
  38.  *
  39.  * @ApiFilter(PropertyFilter::class)
  40.  *
  41.  * @ApiFilter(SearchFilter::class, properties={"nome": "partial", "codigoBanco": "exact", "id": "exact"})
  42.  * @ApiFilter(BooleanFilter::class, properties={"utilizado": "exact"})
  43.  * @ApiFilter(OrderFilter::class, properties={"id", "codigoBanco", "nome", "updated"}, arguments={"orderParameterName"="order"})
  44.  *
  45.  * @EntityHandler(entityHandlerClass="CrosierSource\CrosierLibRadxBundle\EntityHandler\Financeiro\BancoEntityHandler")
  46.  *
  47.  *
  48.  * @ORM\Entity(repositoryClass="CrosierSource\CrosierLibRadxBundle\Repository\Financeiro\BancoRepository")
  49.  * @ORM\Table(name="fin_banco")
  50.  *
  51.  * @author Carlos Eduardo Pauluk
  52.  */
  53. class Banco implements EntityId
  54. {
  55.     use EntityIdTrait;
  56.     /**
  57.      * @ORM\Column(name="codigo_banco", type="integer", nullable=false)
  58.      * @Assert\NotBlank()
  59.      * @Assert\Range(min = 1)
  60.      * @Groups("banco")
  61.      */
  62.     public ?int $codigoBanco null;
  63.     /**
  64.      * @ORM\Column(name="nome", type="string", nullable=false, length=200)
  65.      * @Assert\NotBlank()
  66.      * @Groups("banco")
  67.      */
  68.     public ?string $nome null;
  69.     /**
  70.      * @ORM\Column(name="utilizado", type="boolean", nullable=false)
  71.      * @Assert\NotNull()
  72.      * @Groups("banco")
  73.      */
  74.     public ?bool $utilizado false;
  75.     /**
  76.      * @param bool $format
  77.      * @return string|null
  78.      */
  79.     public function getCodigoBanco(bool $format false): ?string
  80.     {
  81.         if ($format) {
  82.             return str_pad($this->codigoBanco3'0'STR_PAD_LEFT);
  83.         }
  84.         return $this->codigoBanco;
  85.     }
  86.     /**
  87.      * @return string
  88.      * @Groups("banco")
  89.      */
  90.     public function getDescricaoMontada(): string
  91.     {
  92.         return $this->getCodigoBanco(true) . ' - ' $this->nome;
  93.     }
  94. }