protected function performValidation() { if (is_null($this->product)) { return $this->fail(); } if (!$this->checkProductHasNoActiveAttributeGroupsWhenInputHasNone()) { return $this->fail(); } // TODO rewrite to use repository $this->productActiveAttributeGroups = $this->product->activeAttributeGroups()->with('attributeOption')->get()->keyBy('id'); if (!$this->checkProductHasSameActiveAttributeGroupIdsAsInput() or !$this->checkEachOptionBelongsToCorrectAttributeGroupGroup()) { return $this->fail(); } return $this->pass(); }