Exemplo n.º 1
0
        public int GetWordsCountForGame(GetWordsForGameInputModel model)
        {
            var sql = @"
                    select WordsToWords.BaseWordId from WordsToWords

                    left join Words as WordsBase
                    on WordsToWords.BaseWordId = WordsBase.Id

                    left join Words as WordsTarget
                    on WordsToWords.TargetWordId = WordsTarget.Id

                    where WordsBase.LanguageId = @DefaultBaseLanguage and WordsTarget.LanguageId = @DefaultTargetLanguage
                        ";

            if (model.BookId != 0)
            {
                sql += " AND WordsToWords.BookId = @BookId ";
                if (model.ChapterId != 0)
                {
                    sql += " AND WordsToWords.ChapterId = @ChapterId ";
                }
            }

            sql += " group by WordsToWords.BaseWordId";
            return(db.Query <string>(sql, model).Count());
        }
Exemplo n.º 2
0
        public List <GetWordsForGameResponseModel> GetWordsForGame(GetWordsForGameInputModel model)
        {
            var result = new List <GetWordsForGameResponseModel>();
            var sql    = @"
                    select top " + model.Count + @"
                    wordsBase.Word as BaseWord,
                    BaseSpeech.Code as BaseWordSpeechCode,
                    BaseSpeech.Status as BaseWordSpeechStatus,
                    WordsTarget.Word as Translate,
                    TargetSpeech.Code as TargetWordSpeechCode,
                    TargetSpeech.Status as TargetWordSpeechStatus,
                    WordsToWords.BookId,
                    WordsToWords.ChapterId,
                    WordsBase.LanguageId as DefaultBaseLanguage,
                    WordsTarget.LanguageId as DefaultTargetLanguage
                    from WordsToWords

                    left join Words as WordsBase
                    on WordsToWords.BaseWordId = WordsBase.Id

                    left join Words as WordsTarget
                    on WordsToWords.TargetWordId = WordsTarget.Id

                    left join Speech as BaseSpeech
                    on WordsBase.SpeechId = BaseSpeech.Id

                    left join Speech as TargetSpeech
                    on WordsTarget.SpeechId = TargetSpeech.Id

                    where WordsBase.LanguageId = @DefaultBaseLanguage and WordsTarget.LanguageId = @DefaultTargetLanguage
                    ";

            if (model.BookId != 0)
            {
                sql += "AND BookId = @BookId ";
                if (model.ChapterId != 0)
                {
                    sql += "AND ChapterId = @ChapterId";
                }
            }
            var words = db.Query <WordForGameModel>(sql, model).ToList();

            foreach (var word in words.GroupBy(x => x.BaseWord))
            {
                result.Add(new GetWordsForGameResponseModel
                {
                    Key        = word.Key,
                    Translates = words.Where(x => x.BaseWord == word.Key).Select(x => new Translate {
                        SpeechCode   = x.TargetWordSpeechCode,
                        SpeechStatus = x.TargetWordSpeechStatus,
                        Value        = x.Translate
                    }).ToList(),
                    SpeechCode   = words.Where(x => x.BaseWord == word.Key).FirstOrDefault().BaseWordSpeechCode,
                    SpeechStatus = words.Where(x => x.BaseWord == word.Key).FirstOrDefault().BaseWordSpeechStatus
                });
            }
            return(result);
        }
        public void GetWordsForGame_Should_Provide_Words_For_Specific_Game()
        {
            // Arrange
            var fakeGetWordsForGameInputModel = new GetWordsForGameInputModel
            {
                BookId    = 1,
                ChapterId = 1
            };
            var fakeGetWordsForGameInputViewModel = new GetWordsForGameInputViewModel
            {
                BookId    = 1,
                ChapterId = 1
            };

            _mockRepo.Setup(repo => repo.GetWordsForGame(It.IsAny <GetWordsForGameInputModel>())).Returns(_fakeGetWordsForGameResponse);

            // Act
            var methodResult = _mockController.GetWordsForGame(fakeGetWordsForGameInputViewModel);

            // Assert
            var testResult = methodResult.Result as OkObjectResult;

            Assert.Equal(2, _fakeGetWordsForGameResponse.Count());
        }