. */ declare(strict_types=1); namespace App\Entity\Parts\PartTraits; use Doctrine\DBAL\Types\Types; use App\Entity\Parts\Part; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Serializer\Annotation\Groups; use Symfony\Component\Validator\Constraints as Assert; /** * Advanced properties of a part, not related to a more specific group. */ trait AdvancedPropertyTrait { /** * @var bool Determines if this part entry needs review (for example, because it is work in progress) */ #[Groups(['extended', 'full', 'import'])] #[ORM\Column(type: Types::BOOLEAN)] protected bool $needs_review = false; /** * @var string a comma separated list of tags, associated with the part */ #[Groups(['extended', 'full', 'import'])] #[ORM\Column(type: Types::TEXT)] protected string $tags = ''; /** * @var float|null how much a single part unit weighs in grams */ #[Assert\PositiveOrZero] #[Groups(['extended', 'full', 'import'])] #[ORM\Column(type: Types::FLOAT, nullable: true)] protected ?float $mass = null; /** * @var string|null The internal part number of the part */ #[Assert\Length(max: 100)] #[Groups(['extended', 'full', 'import'])] #[ORM\Column(type: Types::STRING, length: 100, nullable: true, unique: true)] protected ?string $ipn = null; /** * Checks if this part is marked, for that it needs further review. */ public function isNeedsReview(): bool { return $this->needs_review; } /** * Sets the "needs review" status of this part. * * @param bool $needs_review The new status * * @return Part|self */ public function setNeedsReview(bool $needs_review): self { $this->needs_review = $needs_review; return $this; } /** * Gets a comma separated list, of tags, that are assigned to this part. */ public function getTags(): string { return $this->tags; } /** * Sets a comma separated list of tags, that are assigned to this part. * * @param string $tags The new tags * * @return $this */ public function setTags(string $tags): self { $this->tags = $tags; return $this; } /** * Returns the mass of a single part unit. * Returns null, if the mass is unknown/not set yet. */ public function getMass(): ?float { return $this->mass; } /** * Sets the mass of a single part unit. * Sett to null, if the mass is unknown. * * @param float|null $mass the new mass * * @return $this */ public function setMass(?float $mass): self { $this->mass = $mass; return $this; } /** * Returns the internal part number of the part. * @return string */ public function getIpn(): ?string { return $this->ipn; } /** * Sets the internal part number of the part * @param string $ipn The new IPN of the part */ public function setIpn(?string $ipn): Part { $this->ipn = $ipn; return $this; } }