Project 'cooperatic/kohinos-tav' was moved to 'agplv3/kohinos-tav'. Please update any links and bookmarks that may still have the old path.
Commit 11bdb966 by Damien Moulard

Merge branch '3665-creation-profil-de-cotisation' into 'develop'

3665 creation profil de cotisation

See merge request cooperatic/kohinos-tav!7
parents f029d839 7b7162e0
......@@ -85,6 +85,14 @@ class Adherent extends AccountableObject implements AccountableInterface
*/
private $paymentCode;
/**
* @var ProfilDeCotisation
*
* @ORM\ManyToOne(targetEntity="ProfilDeCotisation", cascade={"persist"}, inversedBy="beneficiaires")
* @ORM\JoinColumn(name="profildecotisation_id", referencedColumnName="id", nullable=true)
*/
private $profilDeCotisation;
public function __construct()
{
$this->accounts = new ArrayCollection();
......@@ -241,4 +249,22 @@ class Adherent extends AccountableObject implements AccountableInterface
return $this;
}
/**
* @return ProfilDeCotisation
*/
public function getProfilDeCotisation(): ProfilDeCotisation
{
return $this->profilDeCotisation;
}
/**
* @return $this
*/
public function setProfilDeCotisation($profilDeCotisation): self
{
$this->profilDeCotisation = $profilDeCotisation;
return $this;
}
}
<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Entity\EntityTrait\EnablableEntityTrait;
use App\Entity\EntityTrait\NameSlugContentEntityTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
use Ramsey\Uuid\Doctrine\UuidGenerator;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProfilDeCotisationRepository")
* @ORM\HasLifecycleCallbacks()
* @ORM\Table(name="profildecotisation")
*/
class ProfilDeCotisation
{
use NameSlugContentEntityTrait;
use TimestampableEntity;
use EnablableEntityTrait;
/**
* @var \Ramsey\Uuid\UuidInterface
*
* @ORM\Id
* @ORM\Column(type="uuid", unique=true)
* @ORM\GeneratedValue(strategy="CUSTOM")
* @ORM\CustomIdGenerator(class=UuidGenerator::class)
*/
protected $id;
/**
* @ORM\Column(name="maxPercevableMensuel", type="integer")
* @Assert\Type("numeric")
* @Assert\GreaterThanOrEqual(
* value = 0
* )
*/
protected $maxPercevableMensuel;
/**
* @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;
}
/**
* @return ArrayCollection
*/
public function getBeneficiaires()
{
return $this->beneficiaires;
}
/**
* setContacts.
*
* @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
{
return 'Profil de taux ' . strval(100 * $this->tauxCotisation) . ' %'
. ' et de maximum percevable mensuel ' . strval($this->maxPercevableMensuel) . ' €';
}
}
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20221123151801 extends AbstractMigration
{
public function getDescription() : string
{
return '';
}
public function up(Schema $schema) : void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE profildecotisation (id CHAR(36) NOT NULL COMMENT \'(DC2Type:uuid)\', maxPercevableMensuel INT NOT NULL, tauxCotisation NUMERIC(10, 4) NOT NULL, name VARCHAR(150) NOT NULL, slug VARCHAR(150) NOT NULL, content LONGTEXT DEFAULT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, enabled TINYINT(1) NOT NULL, UNIQUE INDEX UNIQ_386FBA47989D9B62 (slug), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE `utf8_general_ci` ENGINE = InnoDB');
$this->addSql('ALTER TABLE adherent ADD profildecotisation_id CHAR(36) DEFAULT NULL COMMENT \'(DC2Type:uuid)\'');
$this->addSql('ALTER TABLE adherent ADD CONSTRAINT FK_90D3F060D0B364B6 FOREIGN KEY (profildecotisation_id) REFERENCES profildecotisation (id)');
$this->addSql('CREATE INDEX IDX_90D3F060D0B364B6 ON adherent (profildecotisation_id)');
$this->addSql('ALTER TABLE prestataire CHANGE iban iban LONGTEXT DEFAULT NULL COMMENT \'(DC2Type:personal_data)\'');
}
public function down(Schema $schema) : void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE adherent DROP FOREIGN KEY FK_90D3F060D0B364B6');
$this->addSql('DROP TABLE profildecotisation');
$this->addSql('DROP INDEX IDX_90D3F060D0B364B6 ON adherent');
$this->addSql('ALTER TABLE adherent DROP profildecotisation_id');
$this->addSql('ALTER TABLE prestataire CHANGE iban iban LONGTEXT CHARACTER SET utf8mb3 DEFAULT NULL COLLATE `utf8mb3_general_ci` COMMENT \'(DC2Type:personal_data)\'');
}
}
<?php
namespace App\Repository;
use App\Entity\ProfilDeCotisation;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
class ProfilDeCotisationRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ProfilDeCotisation::class);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment