/**
  * Получение слов для словаря
  * 
  * @return Response
  */
 public function sentwords()
 {
     $user = User::find(Input::get('user_id'));
     $lastWordID = Input::has('id_last_word') ? Input::get('id_last_word') : -1;
     $words = [];
     if (!$user) {
         return $this->respondNotFound('user not found');
     }
     function sortByArray(array $array, array $orderArray)
     {
         $ordered = [];
         foreach ($orderArray as $key => $value) {
             foreach ($array as $elem) {
                 if ($elem['id'] == $value) {
                     $ordered[] = $elem;
                 }
             }
         }
         return $ordered;
     }
     $daywordID = Setting::first()->word_id;
     if ($lastWordID == '-1') {
         /* just registered */
         $dayWords = SentWordCard::where('category_id', 0)->take(20)->get();
     } else {
         $lastWord = SentWordCard::where('word_id', $lastWordID)->orderBy('id', 'DESC')->first();
         /* usual case */
         $dayWords = SentWordCard::where('category_id', '0')->where('id', '>', $lastWord->id)->orderBy('id', 'DESC')->take(20)->get();
         //@TODO Bug if subscriptions is more than 20
     }
     if ($lastWordID != $daywordID) {
         foreach ($dayWords as $dayWord) {
             $dayWordIds[] = $dayWord->word_id;
         }
         $tempWords = WordCard::whereIn('id', $dayWordIds)->get()->toArray();
         $properOrder = array_reverse(sortByArray($tempWords, $dayWordIds));
         foreach ($properOrder as $word) {
             $word['type'] = 0;
             $words[] = $word;
         }
         //TODO use array map
     } else {
         // Inluce day word if there is none
         $dw = WordCard::find($daywordID)->toArray();
         $dw['type'] = 0;
         $words[0] = $dw;
     }
     /* Subscriptions */
     foreach ($user->subscriptions as $subscription) {
         $subs[] = $subscription->id;
     }
     if (isset($subs)) {
         if (isset($lastWord)) {
             $catwords = SentWordCard::whereIn('category_id', $subs)->where('id', '>', $lastWord->id)->get();
         } else {
             $catwords = SentWordCard::whereIn('category_id', $subs)->get();
         }
         if ($catwords->isEmpty()) {
             return ['words' => [], 'id_dayword' => $daywordID];
         }
         foreach ($catwords as $catword) {
             $subCatIDs[] = $catword->word_id;
         }
         $tempCatWords = WordCard::whereIn('id', $subCatIDs)->get()->toArray();
         foreach ($tempCatWords as $catword) {
             $catword['type'] = 1;
             array_push($words, $catword);
         }
     }
     $result['words'] = $words;
     $result['id_dayword'] = $daywordID;
     return $result;
 }