/** * @param $sub_category * * @return BetssonCategoryLeague|null|static * @throws \BetssonSports\Exception */ protected function StoreCategoryLeague($sub_category) { // Load or store category if (!($BetssonCategory = BetssonCategory::findOne(['CategoryID' => intval($sub_category->CategoryID), 'LanguageCode' => $sub_category->LanguageCode]))) { $BetssonCategory = new BetssonCategory(); $BetssonCategory->CategoryID = intval($sub_category->CategoryID); $BetssonCategory->LanguageCode = $sub_category->LanguageCode; } // TODO: temporary fix to prevent errors when Betsson provides no category name $BetssonCategory->CategoryName = $sub_category->CategoryName ? $sub_category->CategoryName : 'Not provided'; $BetssonCategory->CacheDate = $sub_category->CacheDate; $BetssonCategory->CacheExpireDate = $sub_category->CacheExpireDate; $BetssonCategory->ErrorMessage = $sub_category->ErrorMessage; if (!$this->storeDataRecord($BetssonCategory)) { return false; } // Load or store category league if (!($BetssonCategoryLeague = BetssonCategoryLeague::findOne(['LeagueID' => intval($sub_category->SubCategoryID), 'LanguageCode' => $sub_category->LanguageCode]))) { $BetssonCategoryLeague = new BetssonCategoryLeague(); $BetssonCategoryLeague->LeagueID = intval($sub_category->SubCategoryID); $BetssonCategoryLeague->LanguageCode = $sub_category->LanguageCode; } $BetssonCategoryLeague->CategoryID = intval($sub_category->CategoryID); $BetssonCategoryLeague->LeagueName = $sub_category->SubCategoryName; $BetssonCategoryLeague->LeagueURL = $sub_category->SubCategoryURL; $BetssonCategoryLeague->CacheDate = gmdate("Y-m-d H:i:s", strtotime($sub_category->CacheDate)); $BetssonCategoryLeague->CacheExpireDate = gmdate("Y-m-d H:i:s", strtotime($sub_category->CacheExpireDate)); $BetssonCategoryLeague->ErrorMessage = $sub_category->ErrorMessage; if (!$this->storeDataRecord($BetssonCategoryLeague)) { return false; } return true; }
/** * @return \yii\db\ActiveQuery */ public function getLeagues() { return $this->hasMany(BetssonCategoryLeague::className(), ['CategoryID' => 'CategoryID'])->inverseOf('category'); }
/** * @param null|integer $EventID * @param null|integer $LeagueID * @param null|integer $CategoryID * * @return array */ public static function getForDropdown($EventID = null, $LeagueID = null, $CategoryID = null) { $query = static::find()->andFilterWhere([self::tableName() . '.EventID' => $EventID])->orderBy('BetGroupName')->groupBy('BetGroupName'); if (!is_null($LeagueID) && $LeagueID != '') { $query->innerJoinWith('event')->andWhere([BetssonLeagueEvent::tableName() . '.LeagueID' => $LeagueID]); } if (!is_null($CategoryID) && $CategoryID != '') { $query->innerJoinWith('event.league')->andWhere([BetssonCategoryLeague::tableName() . '.CategoryID' => $CategoryID]); } $models = $query->all(); return ArrayHelper::map($models, 'BetGroupID', 'BetGroupName'); }
/** * @return \yii\db\ActiveQuery */ public function getLeague() { return $this->hasOne(BetssonCategoryLeague::className(), ['LeagueID' => 'LeagueID'])->inverseOf('events'); }