255], [['id_producer', 'day', 'status'], 'integer'], [['selected_products_ids'], 'verifySelectedProductsIds'], [['selected_products_ids'], 'safe'], ]; } public function attributeLabels() { return [ 'id' => 'ID', 'id_producer' => 'Producteur', 'name' => 'Nom', 'day' => 'Jour', 'status' => 'Statut', 'selected_products_ids' => "Produits" ]; } public function verifySelectedProductsIds($attribute, $params) { if(count($this->getSelectedProductsIds()) < 2) { $this->addError($attribute, "Vous devez sélectionner au moins deux produits."); } } /* Méthodes */ public function getRotatingProductsListAsString(bool $withHtmlLabel = true): string { return implode($withHtmlLabel ? ' ' : ', ', array_map(function(RotatingProduct $rotatingProduct) use ($withHtmlLabel) { return ($withHtmlLabel ? '' : '') . Html::encode($rotatingProduct->getProduct()->name) . ($withHtmlLabel ? '' : ''); }, $this->getRotatingProducts())); } /* Getters / Setters */ public function getId(): ?int { return $this->id; } public function getProducer(): Producer { return $this->producerRelation; } public function setProducer(Producer $producer): self { $this->populateFieldObject('id_producer', 'producerRelation', $producer); return $this; } public function getName(): string { return $this->name; } public function setName(string $name): self { $this->name = $name; return $this; } public function getDay(): int { return $this->day; } public function setDay(int $day): self { $this->day = $day; return $this; } public function getStatus(): int { return $this->status; } public function setStatus(int $status): self { $this->status = $status; return $this; } public function getSelectedProductsIds() { return $this->selected_products_ids; } public function setSelectedProductsIds(array $selectedProductsIdsArray): self { $this->selected_products_ids = $selectedProductsIdsArray; return $this; } public function getDistributionRotatings(): array { return $this->distributionRotatingsRelation; } public function getRotatingProducts(): array { return $this->rotatingProductsRelation; } /* Relations */ public function getProducerRelation(): ActiveQuery { return $this->hasOne(Producer::class, ['id' => 'id_producer']); } public function getRotatingProductsRelation() { return $this->hasMany(RotatingProduct::class, ['id_rotating' => 'id']); } public function getDistributionRotatingsRelation() { return $this->hasMany(DistributionRotating::class, ['id_rotating' => 'id']); } /* Méthodes */ public function getDayAsString(string $lang = 'fr'): string { return Date::getDayOfWeekStringByNumber($this->getDay(), $lang); } }