public function addPhraseToTraining(Request $request)
 {
     // авторизация
     if (!Auth::check()) {
         return $this->response->onAuthError();
     }
     // валидация
     $paramsToValidate = array('phrase' => Input::get('phrase'));
     $validatorRules = array('phrase' => ['required', 'string']);
     $validator = Validator::make($paramsToValidate, $validatorRules);
     if ($validator->fails()) {
         return $this->response->validatorError($validator->messages());
     }
     // добавление фразы или слова в словарь
     // проверка есть ли фраза уже в словаре
     // добавление в словарь
     $phrase = UserDictionary::findByPhrase(Auth::id(), Input::get('phrase'));
     if ($phrase) {
         return $this->response->onError('Phrase/word is already in your dictionary');
     }
     UserDictionary::create(array('user_id' => Auth::id(), 'phrase' => Input::get('phrase')));
     // ответ
     return $this->response->onSuccess('Added');
 }
Esempio n. 2
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()));
 }