Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="triviaRoster"></param>
        /// <returns></returns>
        public async Task <TriviaRegister> RegisterAsync(TriviaRoster triviaRoster)
        {
            TriviaRegister triviaRegister         = null;
            string         serializedTriviaRoster = JsonConvert.SerializeObject(triviaRoster);

            HttpContent httpContent =
                new StringContent(
                    serializedTriviaRoster,
                    Encoding.UTF8,
                    RestApiHelper.ContentTypeJson);

            string response = null;

            try
            {
                response = await RestApiHelper.ExecuteHttpPostAsync(
                    TriviaRegisterUri, httpContent, RestApiHelper.ContentTypeJson);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine($"Failed to register: {e.Message}");
            }

            if (string.IsNullOrEmpty(response))
            {
                System.Diagnostics.Debug.WriteLine("The response from register POST operation was null");
            }
            else
            {
                System.Diagnostics.Debug.WriteLine($"Received response: {response}");

                try
                {
                    triviaRegister = JsonConvert.DeserializeObject <TriviaRegister>(response);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine($"Failed to deserialize register response: {e.Message}");
                }
            }

            return(triviaRegister);
        }
Beispiel #2
0
        public void TestRegister()
        {
            TriviaRoster triviaRoster = new TriviaRoster()
            {
                TeamId = "19:[email protected]"
            };

            List <TriviaMember> triviaMembers = new List <TriviaMember>()
            {
                new TriviaMember()
                {
                    Id   = "846617cd-f4dc-46b4-8106-f24a7a0bccd7",
                    Name = "Tomi Paananen"
                }
            };

            triviaRoster.Members = triviaMembers;

            TriviaRegister triviaRegister =
                _triviaApiClient.RegisterAsync(triviaRoster).Result;

            Assert.AreNotEqual(null, triviaRegister);
            System.Diagnostics.Debug.WriteLine($"Trivia register result: Success == {triviaRegister.Success}, Message == \"{triviaRegister.Message}\"");
        }
Beispiel #3
0
        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable <object> result)
        {
            var    activity    = await result as Activity;
            string messageText = CleanMessage(activity);

            if (!string.IsNullOrEmpty(messageText))
            {
                TriviaApiClient         triviaApiClient = WebApiConfig.TriviaApiClient;
                InMemoryTriviaDatastore triviaDatastore = WebApiConfig.TriviaDatastore;

                if (messageText.Equals(CommandHelp))
                {
                    await context.PostAsync(HelpMessage);
                }
                else if (messageText.Equals(CommandQuestion))
                {
                    TriviaPlayer triviaPlayer = await GetPlayer(activity);

                    if (triviaPlayer != null)
                    {
                        TriviaQuestion triviaQuestion =
                            await triviaApiClient.GetQuestionAsync(triviaPlayer);

                        if (triviaQuestion != null &&
                            !string.IsNullOrEmpty(triviaQuestion.Text) &&
                            triviaQuestion.QuestionOptions != null &&
                            triviaQuestion.QuestionOptions.Count > 0)
                        {
                            if (triviaDatastore.PendingTriviaQuestions.ContainsKey(triviaPlayer.Id))
                            {
                                triviaDatastore.PendingTriviaQuestions[triviaPlayer.Id] = triviaQuestion.Id;
                            }
                            else
                            {
                                triviaDatastore.PendingTriviaQuestions.Add(triviaPlayer.Id, triviaQuestion.Id);
                            }

                            await context.PostAsync($"{GetFirstName(triviaPlayer)}, your question is:");

                            HeroCard questionCard  = CardFactory.CreateQuestionCard(triviaQuestion);
                            Activity replyActivity = activity.CreateReply();

                            replyActivity.Attachments = new List <Attachment>()
                            {
                                questionCard.ToAttachment()
                            };

                            await context.PostAsync(replyActivity);
                        }
                        else
                        {
                            await context.PostAsync("I'm sorry, I couldn't find a trivia question. Please try again later");
                        }
                    }
                    else
                    {
                        await context.PostAsync("I'm sorry, I couldn't find your player profile. Are you sure you have registered?");
                    }
                }
                else if (messageText.StartsWith(CommandRegister))
                {
                    string serviceUrl = activity.ServiceUrl;
                    var    memebers   = await TeamsApiClient.GetTeamsMembers(activity, serviceUrl, HavocTeamId);

                    if (memebers?.Count > 0)
                    {
                        var triviaRoster = new TriviaRoster
                        {
                            TeamId  = HavocTeamId,
                            Members = memebers
                        };

                        TriviaRegister registerResponse = await triviaApiClient.RegisterAsync(triviaRoster);

                        if (registerResponse != null)
                        {
                            if (registerResponse.Success)
                            {
                                await context.PostAsync("Team registered successfully!");
                            }
                            else
                            {
                                await context.PostAsync($"Failed to register the team: {registerResponse.Message}");
                            }
                        }
                        else
                        {
                            await context.PostAsync($"Failed to register the team, please try again later");
                        }
                    }
                }
                else
                {
                    // Check for answer
                    int  answerId = -1;
                    bool numberParsedSuccessfully = int.TryParse(messageText, out answerId);

                    if (numberParsedSuccessfully && answerId >= 0)
                    {
                        TriviaPlayer triviaPlayer = await GetPlayer(activity);

                        if (triviaPlayer != null)
                        {
                            if (triviaDatastore.PendingTriviaQuestions.ContainsKey(triviaPlayer.Id))
                            {
                                TriviaAnswer triviaAnswer = new TriviaAnswer()
                                {
                                    UserId     = triviaPlayer.Id,
                                    QuestionId = triviaDatastore.PendingTriviaQuestions[triviaPlayer.Id],
                                    AnswerId   = answerId
                                };

                                TriviaAnswerResponse triviaAnswerResponse =
                                    await triviaApiClient.PostAnswerAsync(triviaAnswer);

                                if (triviaAnswerResponse != null)
                                {
                                    triviaDatastore.PendingTriviaQuestions.Remove(triviaPlayer.Id);

                                    if (triviaAnswerResponse.Correct)
                                    {
                                        await context.PostAsync($"{GetFirstName(triviaPlayer)}: That is correct!");
                                    }
                                    else
                                    {
                                        await context.PostAsync($"{GetFirstName(triviaPlayer)}: I'm afraid that is not the correct answer. Better luck next time!");
                                    }
                                }
                                else
                                {
                                    await context.PostAsync("Sorry, something went wrong. Try again later");
                                }
                            }
                            else
                            {
                                await context.PostAsync("I haven't asked you a question yet.");

                                await context.PostAsync(HelpMessage);
                            }
                        }
                        else
                        {
                            await context.PostAsync("I'm sorry, I couldn't find your player profile. Are you sure you have registered?");
                        }
                    }
                    else
                    {
                        await context.PostAsync(HelpMessage);
                    }
                }
            }

            context.Wait(MessageReceivedAsync);
        }