You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
6.9 KiB
PHP
275 lines
6.9 KiB
PHP
<?php
|
|
|
|
namespace App\Entity;
|
|
|
|
use App\Repository\TaskRepository;
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
use Doctrine\Common\Collections\Collection;
|
|
use Doctrine\ORM\Mapping as ORM;
|
|
use Symfony\Component\Validator\Constraints as Assert;
|
|
|
|
/**
|
|
* A crafting task
|
|
*/
|
|
#[ORM\Entity(repositoryClass: TaskRepository::class)]
|
|
class Task {
|
|
use TBaseEntity;
|
|
|
|
/**
|
|
* @var User|null The user
|
|
*/
|
|
#[ORM\ManyToOne]
|
|
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
|
|
#[Assert\NotNull(message: 'Veuillez sélectionner un utilisateur')]
|
|
#[Assert\Valid]
|
|
private ?User $user = null;
|
|
/**
|
|
* @var Material|null The produced material
|
|
*/
|
|
#[ORM\ManyToOne]
|
|
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
|
|
#[Assert\NotNull(message: 'Veuillez sélectionner le matériau à produire')]
|
|
#[Assert\Valid]
|
|
private ?Material $producedMaterial = null;
|
|
/**
|
|
* @var Recipe|null The recipe
|
|
*/
|
|
#[ORM\ManyToOne]
|
|
#[ORM\JoinColumn(onDelete: 'CASCADE')]
|
|
#[Assert\Valid]
|
|
private ?Recipe $recipe = null;
|
|
|
|
/**
|
|
* @var int|null The quantity asked / to produce
|
|
*/
|
|
#[ORM\Column]
|
|
#[Assert\Type(type: 'integer', message: 'La quantité à produire doit être un nombre entier')]
|
|
#[Assert\NotNull(message: 'Veuillez saisir une quantité à produire')]
|
|
#[Assert\Positive(message: 'La quantité à produire doit être strictement positive')]
|
|
private ?int $quantityToProduce = null;
|
|
/**
|
|
* @var int|null The quantity already provided at the start
|
|
*/
|
|
#[ORM\Column]
|
|
#[Assert\Type(type: 'integer', message: 'La quantité de départ doit être un nombre entier')]
|
|
#[Assert\NotNull(message: 'Veuillez saisir une quantité de départ')]
|
|
#[Assert\PositiveOrZero(message: 'La quantité de départ doit être positive ou nulle')]
|
|
private ?int $quantityProvidedAtStart = null;
|
|
|
|
/**
|
|
* @var Task|null The parent task
|
|
*/
|
|
#[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'childTasks')]
|
|
#[ORM\JoinColumn(onDelete: 'CASCADE')]
|
|
#[Assert\Valid]
|
|
private ?self $parentTask = null;
|
|
/**
|
|
* @var Collection<int, self> The child tasks
|
|
*/
|
|
#[ORM\OneToMany(targetEntity: self::class, mappedBy: 'parentTask', orphanRemoval: true)]
|
|
#[Assert\Valid]
|
|
private Collection $childTasks;
|
|
/**
|
|
* @var Task|null The root task
|
|
*/
|
|
#[ORM\ManyToOne(targetEntity: self::class)]
|
|
#[ORM\JoinColumn(onDelete: 'CASCADE')]
|
|
#[Assert\Valid]
|
|
private ?self $rootTask = null;
|
|
|
|
/**
|
|
* Initialization
|
|
*/
|
|
public function __construct () {
|
|
$this->childTasks = new ArrayCollection();
|
|
}
|
|
|
|
/**
|
|
* The user
|
|
*
|
|
* @return User|null The user
|
|
*/
|
|
public function getUser (): ?User {
|
|
return $this->user;
|
|
}
|
|
/**
|
|
* Set the user
|
|
*
|
|
* @param User|null $user The user
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setUser (?User $user): static {
|
|
$this->user = $user;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The produced material
|
|
*
|
|
* @return Material|null The produced material
|
|
*/
|
|
public function getProducedMaterial (): ?Material {
|
|
return $this->producedMaterial;
|
|
}
|
|
/**
|
|
* Set the produced material
|
|
*
|
|
* @param Material|null $producedMaterial The produced material
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setProducedMaterial (?Material $producedMaterial): static {
|
|
$this->producedMaterial = $producedMaterial;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The recipe
|
|
*
|
|
* @return Recipe|null The recipe
|
|
*/
|
|
public function getRecipe (): ?Recipe {
|
|
return $this->recipe;
|
|
}
|
|
/**
|
|
* The recipe
|
|
*
|
|
* @param Recipe|null $recipe The recipe
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setRecipe (?Recipe $recipe): static {
|
|
$this->recipe = $recipe;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The quantity asked / to produce
|
|
*
|
|
* @return int|null The quantity asked / to produce
|
|
*/
|
|
public function getQuantityToProduce (): ?int {
|
|
return $this->quantityToProduce;
|
|
}
|
|
/**
|
|
* Set the quantity asked / to produce
|
|
*
|
|
* @param int $quantityToProduce The quantity asked / to produce
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setQuantityToProduce (int $quantityToProduce): static {
|
|
$this->quantityToProduce = $quantityToProduce;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The quantity already provided at the start
|
|
*
|
|
* @return int|null The quantity already provided at the start
|
|
*/
|
|
public function getQuantityProvidedAtStart (): ?int {
|
|
return $this->quantityProvidedAtStart;
|
|
}
|
|
/**
|
|
* Set the quantity already provided at the start
|
|
*
|
|
* @param int $quantityProvidedAtStart The quantity already provided at the start
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setQuantityProvidedAtStart (int $quantityProvidedAtStart): static {
|
|
$this->quantityProvidedAtStart = $quantityProvidedAtStart;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The parent task
|
|
*
|
|
* @return self|null The parent task
|
|
*/
|
|
public function getParentTask (): ?self {
|
|
return $this->parentTask;
|
|
}
|
|
/**
|
|
* Set the parent task
|
|
*
|
|
* @param Task|null $parentTask The parent task
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setParentTask (?self $parentTask): static {
|
|
$this->parentTask = $parentTask;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The child tasks
|
|
*
|
|
* @return Collection<int, self> The child tasks
|
|
*/
|
|
public function getChildTasks (): Collection {
|
|
return $this->childTasks;
|
|
}
|
|
/**
|
|
* Add a child task
|
|
*
|
|
* @param Task $childTask The child task
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function addChildTask (self $childTask): static {
|
|
if (!$this->childTasks->contains($childTask)) {
|
|
$this->childTasks->add($childTask);
|
|
$childTask->setParentTask($this);
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
/**
|
|
* Remove a child task
|
|
*
|
|
* @param Task $childTask The child task
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function removeChildTask (self $childTask): static {
|
|
if ($this->childTasks->removeElement($childTask)) {
|
|
// set the owning side to null (unless already changed)
|
|
if ($childTask->getParentTask() === $this) {
|
|
$childTask->setParentTask(null);
|
|
}
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* The root task
|
|
*
|
|
* @return self|null The root task
|
|
*/
|
|
public function getRootTask (): ?self {
|
|
return $this->rootTask;
|
|
}
|
|
/**
|
|
* Set the root task
|
|
*
|
|
* @param Task|null $rootTask The root task
|
|
*
|
|
* @return $this
|
|
*/
|
|
public function setRootTask (?self $rootTask): static {
|
|
$this->rootTask = $rootTask;
|
|
|
|
return $this;
|
|
}
|
|
}
|