ProfilDeCotisation.php 3.8 KB
Newer Older
1 2 3 4 5 6 7 8 9
<?php

namespace App\Entity;

use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Ramsey\Uuid\Doctrine\UuidGenerator;
10 11
use Symfony\Component\Validator\Constraints as Assert;

12 13 14 15 16 17 18 19

/**
 * @ORM\Entity(repositoryClass="App\Repository\ProfilDeCotisationRepository")
 * @ORM\HasLifecycleCallbacks()
 * @ORM\Table(name="profildecotisation")
 */
class ProfilDeCotisation
{
20 21
    use TimestampableEntity;

22 23 24 25 26 27 28 29 30 31 32
    /**
     * @var \Ramsey\Uuid\UuidInterface
     *
     * @ORM\Id
     * @ORM\Column(type="uuid", unique=true)
     * @ORM\GeneratedValue(strategy="CUSTOM")
     * @ORM\CustomIdGenerator(class=UuidGenerator::class)
     */
    protected $id;

    /**
33 34 35 36
     * The amount the user will pay.
     * The amount the user will receive depends on tauxCotisation.
     * 
     * @ORM\Column(name="montant", type="integer")
37 38 39 40 41
     * @Assert\Type("numeric")
     * @Assert\GreaterThanOrEqual(
     *     value = 0
     * )
     */
42
    protected $montant;
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

    /**
     * @var float
     *
     * @ORM\Column(name="tauxCotisation", type="decimal", scale=4)
     * @Assert\NotBlank
     * @Assert\Type("numeric")
     * @Assert\GreaterThanOrEqual(
     *     value = 0
     * )
     */
    protected $tauxCotisation;

    /**
     * @var ArrayCollection|Adherent[]
     * @ORM\OneToMany(targetEntity="Adherent", cascade={"persist"}, mappedBy="profildecotisation")
     */
    private $beneficiaires;

    public function __construct()
    {
        $this->beneficiaires = new ArrayCollection();
    }

    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }

75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
    /**
     * Get tauxCotisation.
     *
     * @return float tauxCotisation
     */
    public function getTauxCotisation(): ?float
    {
        return $this->tauxCotisation;
    }

    /**
     * Set tauxCotisation.
     *
     * @return $this
     */
    public function setTauxCotisation(?float $tauxCotisation): self
    {
        $this->tauxCotisation = $tauxCotisation;

        return $this;
    }

    /**
98
     * Get montant.
99
     *
100
     * @return int montant
101
     */
102
    public function getMontant(): ?int
103
    {
104
        return $this->montant;
105 106 107
    }

    /**
108
     * Set montant.
109 110 111
     *
     * @return $this
     */
112
    public function setMontant(?int $montant): self
113
    {
114
        $this->montant = $montant;
115 116 117 118

        return $this;
    }

119 120 121 122 123 124 125 126 127
    /**
     * @return ArrayCollection
     */
    public function getBeneficiaires()
    {
        return $this->beneficiaires;
    }

    /**
128
     * setBeneficiaires.
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
     *
     * @param [type] $beneficiaires [description]
     */
    public function setBeneficiaires($beneficiaires): self
    {
        $this->beneficiaires = $beneficiaires;

        return $this;
    }

    /**
     * @param Adherent $beneficiaire
     *
     * @return $this
     */
    public function addBeneficiaire(Adherent $beneficiaire): self
    {
        if (is_null($this->beneficiaires)) {
            $this->beneficiaires = new ArrayCollection();
        }
        if (!$this->beneficiaires->contains($beneficiaire)) {
            $this->beneficiaires[] = $beneficiaire;
            $beneficiaire->setProfilDeCotisation($this);
        }

        return $this;
    }

    /**
     * @param Adherent $beneficiaire
     *
     * @return $this
     */
    public function removeBeneficiaire(Adherent $beneficiaire): self
    {
        if ($this->beneficiaires->contains($beneficiaire)) {
            $this->beneficiaires->removeElement($beneficiaire);
            $beneficiaire->setProfilDeCotisation(null);
        }

        return $this;
    }

    public function __toString(): string
    {
174 175
        return 'Montant ' . strval($this->montant) . '€'
            . ', Taux ' . strval(number_format($this->tauxCotisation, 2, '.', ''));
176 177
    }
}