public function levelUp($id)
 {
     /** @var MyDragon $myDragon */
     $myDragon = MyDragon::find($id);
     $this->authorize('owner', $myDragon);
     $this->myDragonService->levelUp($myDragon);
     if ($myDragon->training) {
         Notification::add('success', $myDragon->getPresenter()->fullName . ' set as in training');
         return Redirect::to(Session::get('table', 'my-dragon'));
     } else {
         if (!$this->dragonLevelService->isComplete($myDragon->dragon_id, $myDragon->level)) {
             Notification::add('info', $myDragon->getPresenter()->fullName . ' levelled up - but there is missing information for level ' . $myDragon->level);
             return Redirect::route('dragon.level.edit', ['id' => $myDragon->dragon->id, 'level' => $myDragon->level]);
         } elseif (!$this->dragonLevelService->isUpToDate($myDragon->dragon_id, $myDragon->level)) {
             Notification::add('warning', $myDragon->getPresenter()->fullName . ' levelled up - but the data for level ' . $myDragon->level . ' may be out of date. Please verify it is correct:');
             return Redirect::route('dragon.level.edit', ['id' => $myDragon->dragon->id, 'level' => $myDragon->level]);
         } else {
             Notification::add('success', $myDragon->getPresenter()->fullName . ' levelled up');
             return Redirect::to(Session::get('table', 'my-dragon'));
         }
     }
 }
 public function update(DragonLevelRequest $request, $id, $level)
 {
     $dragon = $this->dragonLevelService->update($id, (int) $level, $request->all());
     Notification::add('success', $dragon->getPresenter()->fullName . ' level ' . $level . ' updated');
     return Redirect::to(Session::get('level-update-redirect', Session::get('table', 'my-dragon')));
 }