/**
  * Get the validation messages.
  * @return array
  */
 public function messages()
 {
     return TrainingSkill::getValidationMessages('name', 'category_id', 'description', 'requirements_level1', 'requirements_level2', 'requirements_level3');
 }
 /**
  * Attach a list of skills for the given user.
  */
 private function attachMemberSkills()
 {
     View::composer(['members.partials.skills', 'training.skills.index'], function ($view) {
         // Get the categories and uncategorised skills
         $categories = TrainingCategory::orderBy('name', 'ASC')->get();
         $uncategorised = TrainingSkill::whereNull('category_id')->orderBy('name', 'ASC')->get();
         // Add the uncategorised
         $categories->add((object) ['id' => null, 'name' => 'Uncategorised', 'skills' => $uncategorised]);
         // Create the list of skills
         $skills = $awardSkills = [];
         $user = Auth::user();
         foreach ($categories as $category) {
             $skills[$category->name] = $awardSkills[$category->name] = [];
             foreach ($category->skills as $skill) {
                 $skills[$category->name][$skill->id] = $skill->name;
                 if ($user->isAdmin() || $user->hasSkill($skill) && $user->getSkill($skill)->level == 3) {
                     $awardSkills[$category->name][$skill->id] = $skill->name;
                 }
             }
         }
         $view->with(['skillCategories' => $categories, 'awardSkills' => $awardSkills, 'skillList' => $skills]);
     });
 }