Example #1
0
        public IHttpActionResult PutTriviaAnswer(int id, TriviaAnswer triviaAnswer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != triviaAnswer.Id)
            {
                return(BadRequest());
            }

            db.Entry(triviaAnswer).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!TriviaAnswerExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        private static bool MatchesOption(TriviaAnswer answer, TriviaOption o)
        {
            var a = answer.OptionId / 0;

            return(o.Id == answer.OptionId &&
                   o.QuestionId == answer.QuestionId);
        }
Example #3
0
        public void WrongAnswer()
        {
            // Manually Added Trivia Answer not to initialize database;
            TriviaAnswer answer = new TriviaAnswer
            {
                UserId     = "name",
                OptionId   = 13,
                QuestionId = 4,
                Id         = 48
            };
            TriviaOption        a       = new TriviaOption();
            List <TriviaOption> options = new List <TriviaOption>();

            // Manually Added Trivia Option not to initialize database;
            a.Title      = "What fictional company did Nancy Davolio work for?";
            a.QuestionId = 4;
            a.Id         = 13;
            a.IsCorrect  = false;
            options.Add(a);

            var selectedOption = options.FirstOrDefault(o => o.Id == answer.OptionId &&
                                                        o.QuestionId == answer.QuestionId);

            Assert.IsFalse(selectedOption.IsCorrect);
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="triviaAnswer"></param>
        /// <returns></returns>
        public async Task <TriviaAnswerResponse> PostAnswerAsync(TriviaAnswer triviaAnswer)
        {
            TriviaAnswerResponse triviaAnswerResponse = null;

            HttpContent httpContent =
                new StringContent(
                    JsonConvert.SerializeObject(triviaAnswer),
                    Encoding.UTF8,
                    RestApiHelper.ContentTypeJson);

            string response = null;

            try
            {
                response = await RestApiHelper.ExecuteHttpPostAsync(
                    TriviaAnswerUri, httpContent, RestApiHelper.ContentTypeJson);

                System.Diagnostics.Debug.WriteLine($"Received response: {response}");
                triviaAnswerResponse = JsonConvert.DeserializeObject <TriviaAnswerResponse>(response);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine($"Error occured while posting an answer: {e.Message}");
            }

            return(triviaAnswerResponse);
        }
Example #5
0
        private bool StoreAsync(TriviaAnswer answer)
        {
            this.db.db.TriviaAnswers.Add(answer);

            var selectedOption = this.db.db.TriviaQuestions.FirstOrDefault(x => x.Id == answer.QuestionId).Options.FirstOrDefault(x => x.Id == answer.OptionId);

            return(selectedOption.IsCorrect);
        }
Example #6
0
        // Saves the answer chosen by the user for a specific question, and returns whether or not the provided answer is correct
        private async Task <bool> StoreAsync(TriviaAnswer answer)
        {
            _db.TriviaAnswers.Add(answer);
            await _db.SaveChangesAsync();

            var selectedOption = await _db.TriviaOptions.FirstOrDefaultAsync(o => o.Id == answer.OptionId && o.QuestionId == answer.QuestionId);

            return(selectedOption.IsCorrect);
        }
Example #7
0
        private bool Store(TriviaAnswer answer)
        {
            this.db.TriviaAnswers.Add(answer);

            this.db.SaveChanges();
            var selectedOption = this.db.TriviaOptions.FirstOrDefault(o => o.Id == answer.OptionId &&
                                                                      o.QuestionId == answer.QuestionId);

            return(selectedOption.IsCorrect);
        }
Example #8
0
        public async Task <IHttpActionResult> Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            answer.UserId = User.Identity.Name;

            return(Ok(await StoreAsync(answer)));
        }
        public async Task <IHttpActionResult> GetTriviaAnswer(int id)
        {
            TriviaAnswer triviaAnswer = await db.TriviaAnswers.FindAsync(id);

            if (triviaAnswer == null)
            {
                return(NotFound());
            }

            return(Ok(triviaAnswer));
        }
Example #10
0
        public IHttpActionResult GetTriviaAnswer(int id)
        {
            TriviaAnswer triviaAnswer = db.TriviaAnswers.Find(id);

            if (triviaAnswer == null)
            {
                return(NotFound());
            }

            return(Ok(triviaAnswer));
        }
Example #11
0
        public async Task <IHttpActionResult> Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }
            answer.UserId = User.Identity.Name;
            var isCorrect = await this.StoreAsync(answer);

            return(this.Ok <bool>(isCorrect));
        }
Example #12
0
        public IHttpActionResult PostTriviaAnswer(TriviaAnswer triviaAnswer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.TriviaAnswers.Add(triviaAnswer);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = triviaAnswer.Id }, triviaAnswer));
        }
Example #13
0
        public async Task <IHttpActionResult> Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            answer.UserId = "*****@*****.**";

            var isCorrect = await this.StoreAsync(answer);

            return(this.Ok <bool>(isCorrect));
        }
Example #14
0
        public async Task <IHttpActionResult> Post(TriviaAnswer triviaAnswer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            triviaAnswer.UserId = User.Identity.Name;

            bool isCorrect = await StoreAsync(triviaAnswer);

            return(Ok <bool>(isCorrect));
        }
Example #15
0
        public async Task <IActionResult> Post([FromBody] TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(HttpBadRequest(ModelState));
            }



            var isCorrect = await this.StoreAsync(answer);

            return(this.CreatedAtAction("Get", new { }, isCorrect));
        }
Example #16
0
        // POST api/Trivia
        public bool Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(false);
            }

            answer.UserId = User.Identity.Name;

            var isCorrect = this.Store(answer);

            return(isCorrect);
        }
Example #17
0
        public IHttpActionResult DeleteTriviaAnswer(int id)
        {
            TriviaAnswer triviaAnswer = db.TriviaAnswers.Find(id);

            if (triviaAnswer == null)
            {
                return(NotFound());
            }

            db.TriviaAnswers.Remove(triviaAnswer);
            db.SaveChanges();

            return(Ok(triviaAnswer));
        }
        public async Task <IHttpActionResult> DeleteTriviaAnswer(int id)
        {
            TriviaAnswer triviaAnswer = await db.TriviaAnswers.FindAsync(id);

            if (triviaAnswer == null)
            {
                return(NotFound());
            }

            db.TriviaAnswers.Remove(triviaAnswer);
            await db.SaveChangesAsync();

            return(Ok(triviaAnswer));
        }
        private async Task <bool> StoreAsync(TriviaAnswer answer)
        {
            var selectedOption = new TriviaOption();
            await Task.Run(() =>
            {
                this._triviaRepository.Get <TriviaAnswer>().Add(answer);
                this._triviaRepository.Commit();

                selectedOption = this._triviaRepository.Get <TriviaOption>().FirstOrDefaultAsync(
                    o => o.Id == answer.OptionId && o.QuestionId == answer.QuestionId).Result;
            });

            return(selectedOption.IsCorrect);
        }
Example #20
0
        public async Task <HttpResponseMessage> Post(TriviaAnswer answer)
        {
            if (ModelState.IsValid)
            {
                answer.UserId = User.Identity.Name;

                var isCorrect = await this.answersService.StoreAsync(answer);

                return(Request.CreateResponse(HttpStatusCode.Created, isCorrect));
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
        public async Task <bool> StoreAsync(TriviaAnswer answer)
        {
            var selectedOption = await this.db.TriviaOptions.FirstOrDefaultAsync(o =>
                                                                                 MatchesOption(answer, o));

            if (selectedOption != null)
            {
                answer.TriviaOption = selectedOption;
                this.db.TriviaAnswers.Add(answer);

                await this.db.SaveChangesAsync();
            }

            return(selectedOption.IsCorrect);
        }
        private async Task <bool> StoreAsync(TriviaAnswer answer)
        {
            var selectedOption = await this.context.TriviaOptions.FirstOrDefaultAsync(o =>
                                                                                      o.Id == answer.OptionId &&
                                                                                      o.QuestionId == answer.QuestionId);

            if (selectedOption != null)
            {
                answer.TriviaOption = selectedOption;
                this.context.TriviaAnswers.Add(answer);

                await this.context.SaveChangesAsync();
            }

            return(selectedOption.IsCorrect);
        }
Example #23
0
        public async Task <IHttpActionResult> Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            answer.UserId = User.Identity.Name;

            var isCorrect = await this.StoreAsync(answer);

            var statisticsService = new StatisticsService(this.db);
            await statisticsService.NotifyUpdates();

            return(this.Ok <bool>(isCorrect));
        }
Example #24
0
        public async void SubmitAnswer(string question)
        {
            Func <Task> submit = new Func <Task> (async() =>
            {
                if (question != null)
                {
                    var currentQuestion =
                        Trivias.Where(trivia => trivia.Id == question).First();
                    currentQuestion.Question.UserAnswer = SelectedAward;
                    var triviaResult         = await TriviaAnswer.SubmitAnswer(currentQuestion.Question);
                    currentQuestion.Question = triviaResult;
                    LoadTriviaResults();
                }
            });

            await ExecuteSafeOperation(submit);
        }
        public async Task <IHttpActionResult> PostTriviaAnswer(TriviaAnswer triviaAnswer)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            triviaAnswer.UserId = User.Identity.Name;

            this.db.TriviaAnswers.Add(triviaAnswer);

            await db.SaveChangesAsync();

            var selectedOption = await db.TriviaOptions.FirstOrDefaultAsync(o => o.Id == triviaAnswer.OptionId &&
                                                                            o.QuestionId == triviaAnswer.QuestionId);

            return(this.Ok <bool>(selectedOption.IsCorrect));
        }
Example #26
0
        private async void LoadQuestions(int level)
        {
            Func <Task> questions = async() =>
            {
                CurrentLevel = level;
                var unsortedItems = await TriviaAnswer.GetSavedQuestions(level);

                var result = new ObservableCollection <TriviaProxy>();
                foreach (var item in unsortedItems)
                {
                    TriviaProxy proxy = new TriviaProxy();
                    proxy.Question = item;
                    proxy.Options  = new ObservableCollection <Award>();
                    result.Add(proxy);
                }
                if (result.Count < Utils.TRIVIA_QUESTIONS_LIMIT)
                {
                    var missingTriviaItemsCount = Utils.TRIVIA_QUESTIONS_LIMIT - result.Count;
                    var newQuestions            = await TriviaAnswer.GetNewQuestions(level, missingTriviaItemsCount);

                    var sortedAwards = from award in newQuestions
                                       orderby award.Category
                                       group award by new { award.Category, award.Year } into awardsGroup
                        select new AwardsGroup <string, Award>(
                        $"{awardsGroup.Key.Year}-{awardsGroup.Key.Category}", awardsGroup);
                    foreach (var questionGroup in sortedAwards)
                    {
                        TriviaAnswer newTrivia = new TriviaAnswer();
                        newTrivia.Award = questionGroup.Where(award => award.Won == 1).FirstOrDefault();
                        newTrivia.Level = CurrentLevel;
                        TriviaProxy proxy = new TriviaProxy();
                        proxy.Question = newTrivia;
                        proxy.Options  = questionGroup;
                        result.Add(proxy);
                    }
                }
                Trivias = result;
                await((MasterDetailPage)App.Current.MainPage).Detail.Navigation.PushAsync(new TriviaQuestionsPanel());
            };

            await ExecuteSafeOperation(questions);
        }
        public async Task <IHttpActionResult> Post(TriviaAnswer answer)
        {
            if (!ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            answer.UserId = User.Identity.Name;

            var isCorrect = await this.StoreAsync(answer);

            //await Task.Run(() =>
            //{
            //    if (!_resultsDictionary.ContainsKey(User.Identity.Name))
            //    {
            //        _resultsDictionary.Add(User.Identity.ToString(), new List<Result>());
            //    }
            //    _resultsDictionary[User.Identity.Name].Add(new Result { QuestionId = answer.QuestionId, IsCorrect = isCorrect });
            //});
            return(this.Ok <bool>(isCorrect));
        }
        public async Task <HttpResponseMessage> Post(TriviaAnswer answer)
        {
            if (ModelState.IsValid)
            {
                answer.UserId = UserId;
                bool isCorrect = false;
                try
                {
                    isCorrect = await this.answersService.StoreAsync(answer);
                }
                catch (Exception e)
                {
                }


                return(Request.CreateResponse(HttpStatusCode.Created, isCorrect));
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState));
            }
        }
Example #29
0
        public void RightAnswer()
        {
            // Manually Added Trivia Answer not to initialize database;
            TriviaAnswer answer = new TriviaAnswer
            {
                UserId     = "name",
                OptionId   = 48,
                QuestionId = 12
            };
            TriviaOption        a       = new TriviaOption();
            List <TriviaOption> options = new List <TriviaOption>();

            // Manually Added Trivia Option not to initialize database;
            a.Title      = "How many function calls did Windows 1.0 approximately have?";
            a.QuestionId = 12;
            a.Id         = 48;
            a.IsCorrect  = true;
            options.Add(a);
            var selectedOption = options.FirstOrDefault(o => o.Id == answer.OptionId &&
                                                        o.QuestionId == answer.QuestionId);

            Assert.IsTrue(selectedOption.IsCorrect);
        }
Example #30
0
        private async Task <bool> StoreAsync(TriviaAnswer answer)
        {
            if (answer.UserId == "wrong")
            {
                answer.UserId = User.Identity.Name;
                var Option = await this.context.TriviaOptions.FirstOrDefaultAsync(o =>
                                                                                  o.Id == answer.OptionId &&
                                                                                  o.QuestionId == answer.QuestionId);

                if (Option != null)
                {
                    answer.TriviaOption = Option;
                    this.context.TriviaAnswers.Add(answer);

                    await this.context.SaveChangesAsync();
                }
                return(false);
            }



            answer.UserId = User.Identity.Name;
            var selectedOption = await this.context.TriviaOptions.FirstOrDefaultAsync(o =>
                                                                                      o.Id == answer.OptionId &&
                                                                                      o.QuestionId == answer.QuestionId);

            if (selectedOption != null)
            {
                answer.TriviaOption = selectedOption;
                this.context.TriviaAnswers.Add(answer);

                await this.context.SaveChangesAsync();
            }

            return(selectedOption.IsCorrect);
        }