public function presentAllLevels()
 {
     $levels = [];
     foreach ($this->data as $rate) {
         $levels[$rate->level] = ['rate' => $rate->rate];
     }
     for ($i = 1; $i <= Setting::get('max-level'); $i++) {
         if (!isset($levels[$i])) {
             $levels[$i] = ['rate' => isset($levels[Setting::get('max-level')]) ? $this->percentageService->estimateRate($i, $levels[Setting::get('max-level')]->rate) : null, 'rate_estimate' => true];
         }
     }
     ksort($levels);
     return $levels;
 }
 /**
  * If values are missing, estimate them
  * @param object $dragon
  */
 protected function setEstimatesForMax(&$dragon)
 {
     if ($dragon['collect_time'] === null) {
         if ($dragon['max_collect_time']) {
             $dragon['collect_time'] = $this->percentageService->estimateTime(Auth::user()->academyLevel->max_dragon_level, $dragon['max_collect_time']);
             $dragon['collect_time_estimate'] = true;
         }
     }
     if ($dragon['wood_rate'] === null) {
         if ($dragon['max_wood_rate']) {
             $dragon['wood_rate'] = $this->percentageService->estimateRate(Auth::user()->academyLevel->max_dragon_level, $dragon['max_wood_rate']);
             $dragon['wood_rate_estimate'] = true;
             $dragon['wood_user_collect_estimate'] = true;
         }
     }
     if ($dragon['fish_rate'] === null) {
         if ($dragon['max_fish_rate']) {
             $dragon['fish_rate'] = $this->percentageService->estimateRate(Auth::user()->academyLevel->max_dragon_level, $dragon['max_fish_rate']);
             $dragon['fish_rate_estimate'] = true;
             $dragon['fish_user_collect_estimate'] = true;
         }
     }
 }
 public function allLevelsRate(&$levels, $attribute, $key, $startLevel)
 {
     foreach ($attribute->data as $wRate) {
         $levels[$wRate->level][$key] = $wRate->rate;
         $levels[$wRate->level][$key . '_updated_at'] = $wRate->updated_at;
     }
     $fillTo = $startLevel !== null ? $startLevel : Setting::get('max-level') + 1;
     for ($i = 1; $i < $fillTo; $i++) {
         $levels[$i][$key] = 0;
         $levels[$i][$key . '_updated_at'] = null;
     }
     foreach ($levels as $level => &$data) {
         if ($data[$key] === null) {
             $data[$key] = $this->percentageService->estimateRate($level, $levels[Setting::get('max-level')][$key]);
             $data[$key . '_estimate'] = true;
         }
     }
 }