示例#1
0
 function directionTraining(Request $request)
 {
     // авторизация
     if (!Auth::check()) {
         return $this->response->onAuthError();
     }
     // валидация
     $paramsToValidate = array('trainingName' => $request->trainingName);
     $validatorRules = array('trainingName' => ['required', 'string', 'in:' . \implode(',', $this->availableTrainings)]);
     $validator = Validator::make($paramsToValidate, $validatorRules);
     if ($validator->fails()) {
         return $this->responce->validatorError($validator->messages());
     }
     // получение слов которые доступны для тренировки
     $collection = UserDictionary::where('user_id', Auth::id())->learned(false)->StageNotPassed($request->trainingName)->lastTrained($this->trainInterval)->take($this->trainWordsLimit)->get();
     if ($collection->count() === 0) {
         return $this->responce->onSuccess([]);
     }
     // добавление перевода к словам
     foreach ($collection as $word) {
         $record = Phrase::findByPhrase($word->phrase);
         if (!$record) {
             continue;
         }
         $word->translation = $record->translate;
         $word->translate = $record->translate;
         $word->meaning = $record->meaning;
     }
     // получение произвольных слов для создания теста
     // вернем ответ
     $randomWords = Phrase::select('phrase', 'translate')->random()->take(20)->get();
     return $this->responce->onSuccess(array('trainWords' => $collection->toArray(), 'randomWords' => $randomWords->toArray()));
 }