97 lines
3.6 KiB
PHP
97 lines
3.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Domain\Models\Entities\Inco\Composition;
|
|
|
|
use Domain\Builders\Inco\IncoCompositionBuilder;
|
|
use Domain\Models\ValueObjects\Inco\Composition\AminoAcids;
|
|
use Domain\Models\ValueObjects\Inco\Composition\CarbohydratesDetail;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Energy;
|
|
use Domain\Models\ValueObjects\Inco\Composition\FattyAcids;
|
|
use Domain\Models\ValueObjects\Inco\Composition\FreshProduceAndNuts;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Identification;
|
|
use Domain\Models\ValueObjects\Inco\Composition\IncoCompositionId;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Minerals;
|
|
use Domain\Models\ValueObjects\Inco\Composition\NutriScore;
|
|
use Domain\Models\ValueObjects\Inco\Composition\NutriScorePoints;
|
|
use Domain\Models\ValueObjects\Inco\Composition\PortionMacronutrients;
|
|
use Domain\Models\ValueObjects\Inco\Composition\ReferenceIntakes;
|
|
use Domain\Models\ValueObjects\Inco\Composition\ReferenceMacronutrients;
|
|
use Domain\Models\ValueObjects\Inco\Composition\SpecialCompounds;
|
|
use Domain\Models\ValueObjects\Inco\Composition\Vitamins;
|
|
use Domain\Models\ValueObjects\Inco\IncoId;
|
|
use Shared\DDD\Model\Entity;
|
|
|
|
/** @implements Entity<IncoCompositionId> */
|
|
final readonly class IncoComposition implements Entity
|
|
{
|
|
private function __construct(
|
|
public IncoCompositionId $id,
|
|
public IncoId $idInco,
|
|
public Identification $identification,
|
|
public Energy $energy,
|
|
public ReferenceMacronutrients $referenceMacronutrients,
|
|
public PortionMacronutrients $portionMacronutrients,
|
|
public FreshProduceAndNuts $freshProduceAndNuts,
|
|
public ReferenceIntakes $referenceIntakes,
|
|
public NutriScore $nutriScore,
|
|
public NutriScorePoints $nutriScorePoints,
|
|
public Minerals $minerals,
|
|
public Vitamins $vitamins,
|
|
public CarbohydratesDetail $carbohydratesDetail,
|
|
public FattyAcids $fattyAcids,
|
|
public AminoAcids $aminoAcids,
|
|
public SpecialCompounds $specialCompounds,
|
|
) {
|
|
}
|
|
|
|
#[\Override]
|
|
public function id(): IncoCompositionId
|
|
{
|
|
return $this->id;
|
|
}
|
|
|
|
public static function builder(): IncoCompositionBuilder
|
|
{
|
|
return new IncoCompositionBuilder();
|
|
}
|
|
|
|
public static function hydrate(
|
|
IncoCompositionId $id,
|
|
IncoId $idInco,
|
|
Identification $identification,
|
|
Energy $energy,
|
|
ReferenceMacronutrients $referenceMacronutrients,
|
|
PortionMacronutrients $portionMacronutrients,
|
|
FreshProduceAndNuts $freshProduceAndNuts,
|
|
ReferenceIntakes $referenceIntakes,
|
|
NutriScore $nutriScore,
|
|
NutriScorePoints $nutriScorePoints,
|
|
Minerals $minerals,
|
|
Vitamins $vitamins,
|
|
CarbohydratesDetail $carbohydratesDetail,
|
|
FattyAcids $fattyAcids,
|
|
AminoAcids $aminoAcids,
|
|
SpecialCompounds $specialCompounds,
|
|
): self {
|
|
return new self(
|
|
id: $id,
|
|
idInco: $idInco,
|
|
identification: $identification,
|
|
energy: $energy,
|
|
referenceMacronutrients: $referenceMacronutrients,
|
|
portionMacronutrients: $portionMacronutrients,
|
|
freshProduceAndNuts: $freshProduceAndNuts,
|
|
referenceIntakes: $referenceIntakes,
|
|
nutriScore: $nutriScore,
|
|
nutriScorePoints: $nutriScorePoints,
|
|
minerals: $minerals,
|
|
vitamins: $vitamins,
|
|
carbohydratesDetail: $carbohydratesDetail,
|
|
fattyAcids: $fattyAcids,
|
|
aminoAcids: $aminoAcids,
|
|
specialCompounds: $specialCompounds,
|
|
);
|
|
}
|
|
}
|