Create entities
parent
851bb45f70
commit
a8f2f4f4c4
@ -0,0 +1,101 @@
|
||||
<?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 Version20250525132541 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(<<<'SQL'
|
||||
CREATE TABLE input_recipe_material (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, material_id INT NOT NULL, consumed_quantity INT NOT NULL, INDEX IDX_77575DA759D8A214 (recipe_id), INDEX IDX_77575DA7E308AC6F (material_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE machine (id INT AUTO_INCREMENT NOT NULL, label_extra_info1 VARCHAR(255) DEFAULT NULL, label_extra_info2 VARCHAR(255) DEFAULT NULL, name VARCHAR(50) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE material (id INT AUTO_INCREMENT NOT NULL, type_id INT NOT NULL, is_craftable_by_default TINYINT(1) NOT NULL, name VARCHAR(50) NOT NULL, INDEX IDX_7CBE7595C54C8C93 (type_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE material_type (id INT AUTO_INCREMENT NOT NULL, stack_size INT NOT NULL, name VARCHAR(50) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE output_recipe_material (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, material_id INT NOT NULL, produced_quantity DOUBLE PRECISION NOT NULL, INDEX IDX_CB0D94B259D8A214 (recipe_id), INDEX IDX_CB0D94B2E308AC6F (material_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
CREATE TABLE recipe (id INT AUTO_INCREMENT NOT NULL, machine_id INT NOT NULL, crafting_time DOUBLE PRECISION NOT NULL, name VARCHAR(50) NOT NULL, INDEX IDX_DA88B137F6B75B26 (machine_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE input_recipe_material ADD CONSTRAINT FK_77575DA759D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE input_recipe_material ADD CONSTRAINT FK_77575DA7E308AC6F FOREIGN KEY (material_id) REFERENCES material (id)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE material ADD CONSTRAINT FK_7CBE7595C54C8C93 FOREIGN KEY (type_id) REFERENCES material_type (id)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE output_recipe_material ADD CONSTRAINT FK_CB0D94B259D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE output_recipe_material ADD CONSTRAINT FK_CB0D94B2E308AC6F FOREIGN KEY (material_id) REFERENCES material (id)
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137F6B75B26 FOREIGN KEY (machine_id) REFERENCES machine (id)
|
||||
SQL);
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE input_recipe_material DROP FOREIGN KEY FK_77575DA759D8A214
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE input_recipe_material DROP FOREIGN KEY FK_77575DA7E308AC6F
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE material DROP FOREIGN KEY FK_7CBE7595C54C8C93
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE output_recipe_material DROP FOREIGN KEY FK_CB0D94B259D8A214
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE output_recipe_material DROP FOREIGN KEY FK_CB0D94B2E308AC6F
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE recipe DROP FOREIGN KEY FK_DA88B137F6B75B26
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE input_recipe_material
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE machine
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE material
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE material_type
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE output_recipe_material
|
||||
SQL);
|
||||
$this->addSql(<<<'SQL'
|
||||
DROP TABLE recipe
|
||||
SQL);
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\InputRecipeMaterialRepository;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
|
||||
/**
|
||||
* A material consumed by a recipe
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: InputRecipeMaterialRepository::class)]
|
||||
#[UniqueEntity(fields: ['recipe', 'material'], message: 'Ce matériau est déjà consommé par cette recette')]
|
||||
class InputRecipeMaterial {
|
||||
use TBaseEntity;
|
||||
|
||||
/**
|
||||
* @var Recipe|null The recipe
|
||||
*/
|
||||
#[ORM\ManyToOne(inversedBy: 'inputMaterials')]
|
||||
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
|
||||
private ?Recipe $recipe = null;
|
||||
/**
|
||||
* @var Material|null The material
|
||||
*/
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?Material $material = null;
|
||||
|
||||
/**
|
||||
* @var int|null The consumed quantity
|
||||
*/
|
||||
#[ORM\Column]
|
||||
private ?int $consumedQuantity = null;
|
||||
|
||||
/**
|
||||
* The recipe
|
||||
*
|
||||
* @return Recipe|null The recipe
|
||||
*/
|
||||
public function getRecipe (): ?Recipe {
|
||||
return $this->recipe;
|
||||
}
|
||||
/**
|
||||
* Set the recipe
|
||||
*
|
||||
* @param Recipe|null $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setRecipe (?Recipe $recipe): static {
|
||||
$this->recipe = $recipe;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The material
|
||||
*
|
||||
* @return Material|null The material
|
||||
*/
|
||||
public function getMaterial (): ?Material {
|
||||
return $this->material;
|
||||
}
|
||||
/**
|
||||
* Set the material
|
||||
*
|
||||
* @param Material|null $material The material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setMaterial (?Material $material): static {
|
||||
$this->material = $material;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The consumed quantity
|
||||
*
|
||||
* @return int|null The consumed quantity
|
||||
*/
|
||||
public function getConsumedQuantity (): ?int {
|
||||
return $this->consumedQuantity;
|
||||
}
|
||||
/**
|
||||
* Set the consumed quantity
|
||||
*
|
||||
* @param int $consumedQuantity The consumed quantity
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setConsumedQuantity (int $consumedQuantity): static {
|
||||
$this->consumedQuantity = $consumedQuantity;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\MachineRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
|
||||
/**
|
||||
* A machine
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: MachineRepository::class)]
|
||||
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà une machine avec ce nom')]
|
||||
class Machine {
|
||||
use TBaseEntity;
|
||||
use TNamedEntity;
|
||||
|
||||
/**
|
||||
* @var string|null The label for the first extra information
|
||||
*/
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
private ?string $labelExtraInfo1 = null;
|
||||
/**
|
||||
* @var string|null The label for the second extra information
|
||||
*/
|
||||
#[ORM\Column(length: 255, nullable: true)]
|
||||
private ?string $labelExtraInfo2 = null;
|
||||
|
||||
/**
|
||||
* @var Collection<int, Recipe> The recipes
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: Recipe::class, mappedBy: 'machine', orphanRemoval: true)]
|
||||
private Collection $recipes;
|
||||
|
||||
public function __construct () {
|
||||
$this->recipes = new ArrayCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
* The label for the first extra information
|
||||
*
|
||||
* @return string|null The label for the first extra information
|
||||
*/
|
||||
public function getLabelExtraInfo1 (): ?string {
|
||||
return $this->labelExtraInfo1;
|
||||
}
|
||||
/**
|
||||
* Set the label for the first extra information
|
||||
*
|
||||
* @param string|null $labelExtraInfo1 The label for the first extra information
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setLabelExtraInfo1 (?string $labelExtraInfo1): static {
|
||||
$this->labelExtraInfo1 = $labelExtraInfo1;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The label for the second extra information
|
||||
*
|
||||
* @return string|null The label for the second extra information
|
||||
*/
|
||||
public function getLabelExtraInfo2 (): ?string {
|
||||
return $this->labelExtraInfo2;
|
||||
}
|
||||
/**
|
||||
* Set the label for the second extra information
|
||||
*
|
||||
* @param string|null $labelExtraInfo2 The label for the second extra information
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setLabelExtraInfo2 (?string $labelExtraInfo2): static {
|
||||
$this->labelExtraInfo2 = $labelExtraInfo2;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The recipes
|
||||
*
|
||||
* @return Collection<int, Recipe> The recipes
|
||||
*/
|
||||
public function getRecipes (): Collection {
|
||||
return $this->recipes;
|
||||
}
|
||||
/**
|
||||
* Add a recipe
|
||||
*
|
||||
* @param Recipe $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addRecipe (Recipe $recipe): static {
|
||||
if (!$this->recipes->contains($recipe)) {
|
||||
$this->recipes->add($recipe);
|
||||
$recipe->setMachine($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
* Remove a recipe
|
||||
*
|
||||
* @param Recipe $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function removeRecipe (Recipe $recipe): static {
|
||||
if ($this->recipes->removeElement($recipe)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($recipe->getMachine() === $this) {
|
||||
$recipe->setMachine(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\MaterialRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
|
||||
/**
|
||||
* A material
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: MaterialRepository::class)]
|
||||
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà un matériau avec ce nom')]
|
||||
class Material {
|
||||
use TBaseEntity;
|
||||
use TNamedEntity;
|
||||
|
||||
/**
|
||||
* @var MaterialType|null The type
|
||||
*/
|
||||
#[ORM\ManyToOne]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?MaterialType $type = null;
|
||||
|
||||
/**
|
||||
* @var bool|null Is the material craftable by default?
|
||||
*/
|
||||
#[ORM\Column]
|
||||
private ?bool $isCraftableByDefault = null;
|
||||
|
||||
/**
|
||||
* @var Collection<int, OutputRecipeMaterial> The recipes
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: OutputRecipeMaterial::class, mappedBy: 'material', orphanRemoval: true)]
|
||||
private Collection $recipes;
|
||||
|
||||
/**
|
||||
* Initialization
|
||||
*/
|
||||
public function __construct () {
|
||||
$this->recipes = new ArrayCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
* The type
|
||||
*
|
||||
* @return MaterialType|null The type
|
||||
*/
|
||||
public function getType (): ?MaterialType {
|
||||
return $this->type;
|
||||
}
|
||||
/**
|
||||
* Set the type
|
||||
*
|
||||
* @param MaterialType|null $type The type
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setType (?MaterialType $type): static {
|
||||
$this->type = $type;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the material craftable by default?
|
||||
*
|
||||
* @return bool|null Is the material craftable by default?
|
||||
*/
|
||||
public function isCraftableByDefault (): ?bool {
|
||||
return $this->isCraftableByDefault;
|
||||
}
|
||||
/**
|
||||
* Set if the material craftable by default
|
||||
*
|
||||
* @param bool $isCraftableByDefault Is the material craftable by default?
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setIsCraftableByDefault (bool $isCraftableByDefault): static {
|
||||
$this->isCraftableByDefault = $isCraftableByDefault;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The recipes
|
||||
*
|
||||
* @return Collection<int, OutputRecipeMaterial> The recipes
|
||||
*/
|
||||
public function getRecipes (): Collection {
|
||||
return $this->recipes;
|
||||
}
|
||||
/**
|
||||
* Add a recipe
|
||||
*
|
||||
* @param OutputRecipeMaterial $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addRecipe (OutputRecipeMaterial $recipe): static {
|
||||
if (!$this->recipes->contains($recipe)) {
|
||||
$this->recipes->add($recipe);
|
||||
$recipe->setMaterial($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
* Remove a recipe
|
||||
*
|
||||
* @param OutputRecipeMaterial $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function removeRecipe (OutputRecipeMaterial $recipe): static {
|
||||
if ($this->recipes->removeElement($recipe)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($recipe->getMaterial() === $this) {
|
||||
$recipe->setMaterial(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\MaterialTypeRepository;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
|
||||
/**
|
||||
* A material type
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: MaterialTypeRepository::class)]
|
||||
#[UniqueEntity(fields: ['name'], message: 'Il existe déjà un type de matériau avec ce nom')]
|
||||
class MaterialType {
|
||||
use TBaseEntity;
|
||||
use TNamedEntity;
|
||||
|
||||
/**
|
||||
* @var int|null The stack size
|
||||
*/
|
||||
#[ORM\Column]
|
||||
private ?int $stackSize = null;
|
||||
|
||||
/**
|
||||
* The stack size
|
||||
*
|
||||
* @return int|null The stack size
|
||||
*/
|
||||
public function getStackSize (): ?int {
|
||||
return $this->stackSize;
|
||||
}
|
||||
/**
|
||||
* Set the stack size
|
||||
*
|
||||
* @param int $stackSize The stack size
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setStackSize (int $stackSize): static {
|
||||
$this->stackSize = $stackSize;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\OutputRecipeMaterialRepository;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
|
||||
|
||||
/**
|
||||
* A material produced by a recipe
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: OutputRecipeMaterialRepository::class)]
|
||||
#[UniqueEntity(fields: ['recipe', 'material'], message: 'Ce matériau est déjà produite par cette recette')]
|
||||
class OutputRecipeMaterial {
|
||||
use TBaseEntity;
|
||||
|
||||
/**
|
||||
* @var Recipe|null The recipe
|
||||
*/
|
||||
#[ORM\ManyToOne(inversedBy: 'outputMaterials')]
|
||||
#[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')]
|
||||
private ?Recipe $recipe = null;
|
||||
/**
|
||||
* @var Material|null The material
|
||||
*/
|
||||
#[ORM\ManyToOne(inversedBy: 'recipes')]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?Material $material = null;
|
||||
|
||||
/**
|
||||
* @var float|null The produced quantity
|
||||
*/
|
||||
#[ORM\Column]
|
||||
private ?float $producedQuantity = null;
|
||||
|
||||
/**
|
||||
* The recipe
|
||||
*
|
||||
* @return Recipe|null The recipe
|
||||
*/
|
||||
public function getRecipe (): ?Recipe {
|
||||
return $this->recipe;
|
||||
}
|
||||
/**
|
||||
* Set the recipe
|
||||
*
|
||||
* @param Recipe|null $recipe The recipe
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setRecipe (?Recipe $recipe): static {
|
||||
$this->recipe = $recipe;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The material
|
||||
*
|
||||
* @return Material|null The material
|
||||
*/
|
||||
public function getMaterial (): ?Material {
|
||||
return $this->material;
|
||||
}
|
||||
/**
|
||||
* Set the material
|
||||
*
|
||||
* @param Material|null $material The material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setMaterial (?Material $material): static {
|
||||
$this->material = $material;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The produced quantity
|
||||
*
|
||||
* @return float|null The produced quantity
|
||||
*/
|
||||
public function getProducedQuantity (): ?float {
|
||||
return $this->producedQuantity;
|
||||
}
|
||||
/**
|
||||
* Set the produced quantity
|
||||
*
|
||||
* @param float $producedQuantity The produced quantity
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setProducedQuantity (float $producedQuantity): static {
|
||||
$this->producedQuantity = $producedQuantity;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,175 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use App\Repository\RecipeRepository;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
|
||||
/**
|
||||
* A crafting recipe
|
||||
*/
|
||||
#[ORM\Entity(repositoryClass: RecipeRepository::class)]
|
||||
class Recipe {
|
||||
use TBaseEntity;
|
||||
use TNamedEntity;
|
||||
|
||||
/**
|
||||
* @var Machine|null The crafting machine
|
||||
*/
|
||||
#[ORM\ManyToOne(inversedBy: 'recipes')]
|
||||
#[ORM\JoinColumn(nullable: false)]
|
||||
private ?Machine $machine = null;
|
||||
/**
|
||||
* @var float|null The crafting time, in seconds
|
||||
*/
|
||||
#[ORM\Column]
|
||||
private ?float $craftingTime = null;
|
||||
|
||||
/**
|
||||
* @var Collection<int, InputRecipeMaterial> The input materials
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: InputRecipeMaterial::class, mappedBy: 'recipe', orphanRemoval: true)]
|
||||
private Collection $inputMaterials;
|
||||
/**
|
||||
* @var Collection<int, OutputRecipeMaterial> The output materials
|
||||
*/
|
||||
#[ORM\OneToMany(targetEntity: OutputRecipeMaterial::class, mappedBy: 'recipe', orphanRemoval: true)]
|
||||
private Collection $outputMaterials;
|
||||
|
||||
/**
|
||||
* Initialization
|
||||
*/
|
||||
public function __construct () {
|
||||
$this->inputMaterials = new ArrayCollection();
|
||||
$this->outputMaterials = new ArrayCollection();
|
||||
}
|
||||
|
||||
/**
|
||||
* The crafting machine
|
||||
*
|
||||
* @return Machine|null The crafting machine
|
||||
*/
|
||||
public function getMachine (): ?Machine {
|
||||
return $this->machine;
|
||||
}
|
||||
/**
|
||||
* Set the crafting machine
|
||||
*
|
||||
* @param Machine|null $machine The crafting machine
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setMachine (?Machine $machine): static {
|
||||
$this->machine = $machine;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The crafting time, in seconds
|
||||
*
|
||||
* @return float|null The crafting time, in seconds
|
||||
*/
|
||||
public function getCraftingTime (): ?float {
|
||||
return $this->craftingTime;
|
||||
}
|
||||
/**
|
||||
* Set the crafting time, in seconds
|
||||
*
|
||||
* @param float $craftingTime The crafting time, in seconds
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setCraftingTime (float $craftingTime): static {
|
||||
$this->craftingTime = $craftingTime;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The input materials
|
||||
*
|
||||
* @return Collection<int, InputRecipeMaterial> The input materials
|
||||
*/
|
||||
public function getInputMaterials (): Collection {
|
||||
return $this->inputMaterials;
|
||||
}
|
||||
/**
|
||||
* Add an input material
|
||||
*
|
||||
* @param InputRecipeMaterial $inputMaterial The input material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addInputMaterial (InputRecipeMaterial $inputMaterial): static {
|
||||
if (!$this->inputMaterials->contains($inputMaterial)) {
|
||||
$this->inputMaterials->add($inputMaterial);
|
||||
$inputMaterial->setRecipe($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
* Remove an input material
|
||||
*
|
||||
* @param InputRecipeMaterial $inputMaterial The input material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function removeInputMaterial (InputRecipeMaterial $inputMaterial): static {
|
||||
if ($this->inputMaterials->removeElement($inputMaterial)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($inputMaterial->getRecipe() === $this) {
|
||||
$inputMaterial->setRecipe(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* The output materials
|
||||
*
|
||||
* @return Collection<int, OutputRecipeMaterial> The output materials
|
||||
*/
|
||||
public function getOutputMaterials(): Collection
|
||||
{
|
||||
return $this->outputMaterials;
|
||||
}
|
||||
/**
|
||||
* Add an output material
|
||||
*
|
||||
* @param OutputRecipeMaterial $outputMaterial The output material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function addOutputMaterial(OutputRecipeMaterial $outputMaterial): static
|
||||
{
|
||||
if (!$this->outputMaterials->contains($outputMaterial)) {
|
||||
$this->outputMaterials->add($outputMaterial);
|
||||
$outputMaterial->setRecipe($this);
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
/**
|
||||
* Remove an output material
|
||||
*
|
||||
* @param OutputRecipeMaterial $outputMaterial The output material
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function removeOutputMaterial(OutputRecipeMaterial $outputMaterial): static
|
||||
{
|
||||
if ($this->outputMaterials->removeElement($outputMaterial)) {
|
||||
// set the owning side to null (unless already changed)
|
||||
if ($outputMaterial->getRecipe() === $this) {
|
||||
$outputMaterial->setRecipe(null);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Implementation for the base of an entity: id
|
||||
*/
|
||||
trait TBaseEntity {
|
||||
/**
|
||||
* @var int|null The internal id
|
||||
*
|
||||
* @noinspection PhpPropertyNamingConventionInspection
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
/**
|
||||
* The internal id
|
||||
*
|
||||
* @return int|null The internal id
|
||||
*/
|
||||
public function getId (): ?int {
|
||||
return $this->id;
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Implementation for the base implementation of an entity: id, creation and last update date and time
|
||||
*/
|
||||
trait TEntityBase {
|
||||
/**
|
||||
* @var int|null The internal id
|
||||
*
|
||||
* @noinspection PhpPropertyNamingConventionInspection
|
||||
*/
|
||||
#[ORM\Id]
|
||||
#[ORM\GeneratedValue]
|
||||
#[ORM\Column]
|
||||
private ?int $id = null;
|
||||
|
||||
/**
|
||||
* Les données du trait qui doivent être inclus dans le JSON
|
||||
*
|
||||
* @return array Les données du trait qui doivent être inclus dans le JSON
|
||||
*
|
||||
* @see JsonSerializable::jsonSerialize()
|
||||
*
|
||||
* @noinspection PhpMethodNamingConventionInspection
|
||||
*/
|
||||
protected final function TEntityBase__jsonSerialize (): array {
|
||||
return [
|
||||
'id' => $this->getId(),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* The internal id
|
||||
*
|
||||
* @return int|null The internal id
|
||||
*/
|
||||
public function getId (): ?int {
|
||||
return $this->id;
|
||||
}
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Entity;
|
||||
|
||||
use Doctrine\ORM\Mapping as ORM;
|
||||
use JsonSerializable;
|
||||
|
||||
/**
|
||||
* Implementation for an entity with a name
|
||||
*/
|
||||
trait TNamedEntity {
|
||||
/**
|
||||
* @var string|null The name
|
||||
*/
|
||||
#[ORM\Column(length: 50)]
|
||||
private ?string $name = null;
|
||||
|
||||
/**
|
||||
* The name
|
||||
*
|
||||
* @return string|null The name
|
||||
*/
|
||||
public function getName (): ?string {
|
||||
return $this->name;
|
||||
}
|
||||
/**
|
||||
* Set the name
|
||||
*
|
||||
* @param string $name The name
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setName (string $name): static {
|
||||
$this->name = $name;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\InputRecipeMaterial;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<InputRecipeMaterial>
|
||||
*/
|
||||
class InputRecipeMaterialRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, InputRecipeMaterial::class);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Machine;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Machine>
|
||||
*/
|
||||
class MachineRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, Machine::class);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Material;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Material>
|
||||
*/
|
||||
class MaterialRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, Material::class);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\MaterialType;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<MaterialType>
|
||||
*/
|
||||
class MaterialTypeRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, MaterialType::class);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\OutputRecipeMaterial;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<OutputRecipeMaterial>
|
||||
*/
|
||||
class OutputRecipeMaterialRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, OutputRecipeMaterial::class);
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repository;
|
||||
|
||||
use App\Entity\Recipe;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<Recipe>
|
||||
*/
|
||||
class RecipeRepository extends ServiceEntityRepository {
|
||||
public function __construct (ManagerRegistry $registry) {
|
||||
parent::__construct($registry, Recipe::class);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue