feat : Ajout de la sélection des bovins étape 3 d'une réception (WIP)

This commit is contained in:
2026-02-04 16:11:08 +01:00
parent 015a8c49fb
commit 81c2a5802b
10 changed files with 230 additions and 76 deletions

View File

@@ -28,15 +28,15 @@ class BovineType
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['bovine-type:read', 'reception:read'])]
#[Groups(['bovine-type:read', 'reception:read', 'reception-bovine:read'])]
private ?int $id = null;
#[ORM\Column(length: 120)]
#[Groups(['bovine-type:read', 'reception:read'])]
#[Groups(['bovine-type:read', 'reception:read', 'reception-bovine:read'])]
private ?string $label = null;
#[ORM\Column(length: 50)]
#[Groups(['bovine-type:read', 'reception:read'])]
#[Groups(['bovine-type:read', 'reception:read', 'reception-bovine:read'])]
private ?string $code = null;
public function getId(): ?int

View File

@@ -72,27 +72,27 @@ class Reception
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['reception:read'])]
#[Groups(['reception:read', 'reception-bovine:read'])]
private ?int $id = null;
#[ORM\Column(length: 20, nullable: true)]
#[Groups(['reception:read', 'reception:write'])]
#[Groups(['reception:read', 'reception:write', 'reception-bovine:read'])]
private ?string $licensePlate = null;
#[ORM\Column(length: 20, unique: true, nullable: true)]
#[Groups(['reception:read'])]
#[Groups(['reception:read', 'reception-bovine:read'])]
private ?string $identificationNumber = null;
#[ORM\Column(options: ['default' => 0])]
#[Groups(['reception:read', 'reception:write'])]
#[Groups(['reception:read', 'reception:write', 'reception-bovine:read'])]
private int $currentStep = 0;
#[ORM\Column(options: ['default' => false])]
#[Groups(['reception:read', 'reception:write'])]
#[Groups(['reception:read', 'reception:write', 'reception-bovine:read'])]
private bool $isValid = false;
#[ORM\Column(name: 'date_reception', type: 'datetime_immutable')]
#[Groups(['reception:read', 'reception:write'])]
#[Groups(['reception:read', 'reception:write', 'reception-bovine:read'])]
#[Context([DateTimeNormalizer::FORMAT_KEY => 'Y-m-d'])]
private ?DateTimeImmutable $receptionDate = null;

View File

@@ -4,15 +4,21 @@ declare(strict_types=1);
namespace App\Entity;
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
use ApiPlatform\Metadata\ApiFilter;
use ApiPlatform\Metadata\ApiProperty;
use ApiPlatform\Metadata\ApiResource;
use ApiPlatform\Metadata\Delete;
use ApiPlatform\Metadata\Get;
use ApiPlatform\Metadata\GetCollection;
use ApiPlatform\Metadata\Patch;
use ApiPlatform\Metadata\Post;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Attribute\Groups;
#[ORM\Entity]
#[ApiFilter(SearchFilter::class, properties: ['reception' => 'exact'])]
#[ORM\UniqueConstraint(name: 'uniq_reception_bovine_type', columns: ['reception_id', 'bovine_type_id'])]
#[ApiResource(
operations: [
new Get(
@@ -26,6 +32,10 @@ use Symfony\Component\Serializer\Attribute\Groups;
normalizationContext: ['groups' => ['reception-bovine:read']],
denormalizationContext: ['groups' => ['reception-bovine:write']],
),
new Patch(
normalizationContext: ['groups' => ['reception-bovine:read']],
denormalizationContext: ['groups' => ['reception-bovine:write']],
),
new Delete(),
],
security: "is_granted('ROLE_USER')",
@@ -36,20 +46,27 @@ class ReceptionBovine
#[ORM\GeneratedValue]
#[ORM\Column]
#[Groups(['reception-bovine:read', 'reception:read'])]
private ?int $id = null;
#[ORM\ManyToOne(inversedBy: 'bovines_types')]
#[Groups(['reception-bovine:read'])]
#[Groups(['reception-bovine:read', 'reception-bovine:write'])]
private ?Reception $reception = null;
#[ORM\ManyToOne]
#[ORM\JoinColumn(nullable: false)]
#[Groups(['reception-bovine:read', 'reception:read'])]
private ?BovineType $BovineType = null;
#[Groups(['reception-bovine:read', 'reception-bovine:write', 'reception:read'])]
#[ApiProperty(readableLink: true)]
private ?BovineType $bovineType = null;
#[ORM\Column(options: ['default' => 0])]
#[Groups(['reception-bovine:read', 'reception:read'])]
private ?int $Quantity = null;
// #[Assert\Range(
// min: 0,
// max: 10,
// notInRangeMessage: 'La quantité doit être comprise entre {{ min }} et {{ max }}.'
// )]
#[Groups(['reception-bovine:read', 'reception-bovine:write', 'reception:read'])]
private ?int $quantity = null;
public function getId(): ?int
{
@@ -70,24 +87,24 @@ class ReceptionBovine
public function getBovineType(): ?BovineType
{
return $this->BovineType;
return $this->bovineType;
}
public function setBovineType(?BovineType $BovineType): static
public function setBovineType(?BovineType $bovineType): static
{
$this->BovineType = $BovineType;
$this->bovineType = $bovineType;
return $this;
}
public function getQuantity(): ?int
{
return $this->Quantity;
return $this->quantity;
}
public function setQuantity(int $Quantity): static
public function setQuantity(int $quantity): static
{
$this->Quantity = $Quantity;
$this->quantity = $quantity;
return $this;
}