コード例 #1
0
        public SlackHelper(TriviaContext _dbcontext)
        {
            dbcontext         = _dbcontext;
            pendingQuestionId = Guid.Empty;


            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("authentication.json", false, false)
                          .AddJsonFile("conversations.json", false, true);

            Configuration = builder.Build();

            string token = Configuration["auth"];

            client = new SlackSocketClient(token);

            workingTriviaChannelId = Configuration["workingchannel"];
            triviaChannelId        = Configuration["triviaChannelId"];
            //triviaChannelId = Configuration["workingchannel"];
            adminId = Configuration["adminId"];
            adminDM = Configuration["adminDM"];
            string timeSpanString = Configuration["timespan"];

            int.TryParse(timeSpanString, out int timeSpanHours);
            //timespan = new TimeSpan(0, timeSpanHours, 0, 0);
            timespan = new TimeSpan(0, 1, 0, 0);
        }
コード例 #2
0
        public async Task <ActionResult> Statistics()
        {
            var db = new TriviaContext();
            var statisticsService = new StatisticsService(db);

            return(View(await statisticsService.GenerateStatistics()));
        }
コード例 #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="triviaContext"></param>
        /// <param name="isTeam">If true, will look for team. If false, will look for user.</param>
        /// <returns></returns>
        public async Task <TriviaLeaderboard[]> GetLeaderboardAsync(TriviaContext triviaContext, bool isTeam)
        {
            TriviaLeaderboard[] triviaLeaderboard = null;

            string requestUri = isTeam ? TriviaLeaderboardTeamUri : TriviaLeaderboardUserUri;

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

            string response = null;

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

                System.Diagnostics.Debug.WriteLine($"Received response: {response}");
                triviaLeaderboard = JsonConvert.DeserializeObject <TriviaLeaderboard[]>(response);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine($"Failed to get leaderboard: {e.Message}");
            }

            return(triviaLeaderboard);
        }
コード例 #4
0
 public TriviaController()
 {
     this.db = new TriviaContext();
     this.questionsService  = new QuestionsService(db);
     this.answersService    = new AnswersService(db);
     this.statisticsService = new StatisticsService(db);
 }
コード例 #5
0
        public void TestGetLeaderboard()
        {
            TriviaContext triviaContext = new TriviaContext()
            {
                TeamId      = "",
                ChannelId   = "",
                Locale      = "",
                Theme       = "",
                EntityId    = "",
                SubEntityId = "",
                Upn         = "",
                Tid         = "",
                GroupId     = ""
            };

            TriviaLeaderboard[] triviaLeaderboard =
                _triviaApiClient.GetLeaderboardAsync(triviaContext, true).Result;

            Assert.AreNotEqual(null, triviaLeaderboard);

            if (triviaLeaderboard.Length > 0)
            {
                string teamId = triviaLeaderboard[0].Id;
                Assert.AreEqual(false, string.IsNullOrEmpty(teamId));
                System.Diagnostics.Debug.WriteLine($"Deserialized team ID: {teamId}");

                string teamName = triviaLeaderboard[0].Name;
                Assert.AreEqual(false, string.IsNullOrEmpty(teamName));
                System.Diagnostics.Debug.WriteLine($"Deserialized team name: {teamName}");
            }
        }
コード例 #6
0
ファイル: TriviaPlugin.cs プロジェクト: detmach/SharpIrcBot
        protected virtual void CheckForCorrectAnswer(string nick, string message)
        {
            Debug.Assert(GameState != null);

            lock (GameState.Lock)
            {
                string trimmedLowerMessage = message.Trim().ToLowerInvariant();
                bool   hit = false;
                foreach (string answer in GameState.CurrentQuestion.Answers)
                {
                    Debug.Assert(answer == answer.Trim().ToLowerInvariant());
                    if (trimmedLowerMessage == answer)
                    {
                        hit = true;
                        break;
                    }
                }

                if (!hit)
                {
                    return;
                }

                // got it!
                StopTimer();

                ConnectionManager.SendChannelMessage(
                    Config.TriviaChannel,
                    $"{nick} got it! The correct answer was: {GameState.CurrentQuestion.MainAnswer}"
                    );

                string user      = ConnectionManager.RegisteredNameForNick(nick) ?? nick;
                string userLower = user.ToLowerInvariant();
                using (TriviaContext ctx = GetNewContext())
                {
                    LeaderboardEntry entry = ctx.LeaderboardEntries.FirstOrDefault(le => le.NicknameLowercase == userLower);
                    if (entry == null)
                    {
                        entry = new LeaderboardEntry
                        {
                            NicknameLowercase = userLower,
                            CorrectAnswers    = 1
                        };
                        ctx.LeaderboardEntries.Add(entry);
                    }
                    else
                    {
                        ++entry.CorrectAnswers;
                    }
                    ctx.SaveChanges();
                }

                NewQuestion();
            }
        }
コード例 #7
0
 public async Task <ActionResult> AddNewTest(TestViewModel test)
 {
     //TriviaDatabaseInitializer
     if (test != null)
     {
         TriviaContext context = new TriviaContext();
         await Task.Run(() =>
         {
             var triviaTest = _triviaService.ConvertToTriviaAsync(test).Result;
             _triviaRepository.Add(triviaTest);
             _triviaRepository.Commit();
         });
     }
     return(null);
 }
コード例 #8
0
        public ActionResult Index()
        {
            var questions = new List <string>();

            using (var context = new TriviaContext())
            {
                foreach (var question in context.TriviaQuestions)
                {
                    questions.Add(question.Title);
                }
            }
            //  Pass Data to the View
            ViewData["active"]    = ActiveQuestion();
            ViewData["questions"] = questions;
            return(View());
        }
コード例 #9
0
ファイル: TriviaPlugin.cs プロジェクト: detmach/SharpIrcBot
        protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs args)
        {
            // merge score of old and new

            object gameLock = GameState?.Lock ?? new object();

            lock (gameLock)
            {
                var oldNickLower = args.OldBaseNick.ToLowerInvariant();
                var newNickLower = args.NewBaseNick.ToLowerInvariant();

                using (TriviaContext ctx = GetNewContext())
                {
                    LeaderboardEntry oldEntry = ctx.LeaderboardEntries
                                                .FirstOrDefault(le => le.NicknameLowercase == oldNickLower);

                    if (oldEntry == null)
                    {
                        // don't bother
                        return;
                    }

                    LeaderboardEntry newEntry = ctx.LeaderboardEntries
                                                .FirstOrDefault(le => le.NicknameLowercase == newNickLower);

                    if (newEntry == null)
                    {
                        newEntry = new LeaderboardEntry
                        {
                            NicknameLowercase = newNickLower,
                            CorrectAnswers    = oldEntry.CorrectAnswers
                        };
                        ctx.Add(newEntry);
                    }
                    else
                    {
                        newEntry.CorrectAnswers += oldEntry.CorrectAnswers;
                    }
                    ctx.Remove(oldEntry);
                    ctx.SaveChanges();
                }
            }
        }
コード例 #10
0
        public async Task <List <LeaderboardItem> > PopulateAsync()
        {
            List <LeaderboardItem> results = new List <LeaderboardItem>();


            TriviaApiClient triviaApiClient = new TriviaApiClient();
            TriviaContext   triviaContext   = new TriviaContext()
            {
                TeamId      = "",
                ChannelId   = "",
                Locale      = "",
                Theme       = "",
                EntityId    = "",
                SubEntityId = "",
                Upn         = "",
                Tid         = "",
                GroupId     = ""
            };

            TriviaLeaderboard[] triviaLeaderboards =
                await triviaApiClient.GetLeaderboardAsync(triviaContext, true);

            //TriviaLeaderboard[] triviaLeaderboard =
            //    _triviaApiClient.GetLeaderboardAsync(triviaContext, true).Result;


            if (triviaLeaderboards != null)
            {
                foreach (TriviaLeaderboard triviaLeaderboard in triviaLeaderboards)
                {
                    results.Add(new LeaderboardItem()
                    {
                        ProfileImageUri = "",
                        Name            = triviaLeaderboard.Name
                    });
                }
            }

            return(results);
        }
コード例 #11
0
 public RepositoryBase(TriviaContext repositoryContext)
 {
     this.RepositoryContext = repositoryContext;
 }
コード例 #12
0
 public OptionController(TriviaContext context)
 {
     _context = context;
 }
コード例 #13
0
 public QuizController(TriviaContext context)
 {
     _context = context;
 }
コード例 #14
0
 public CategoryRepository(TriviaContext context) : base(context)
 {
 }
コード例 #15
0
 public TriviaController(TriviaContext db)
 {
     _db = db;
 }
コード例 #16
0
 public PlayerRepository(TriviaContext context) : base(context)
 {
 }
コード例 #17
0
 public void Update(GameTime GameTime)
 {
     TriviaContext.Update(GameTime);
     GameOverContext.Update(GameTime);
     WarningContext.Update(GameTime);
 }
コード例 #18
0
 public StatisticsService(TriviaContext db)
 {
     this.db = db;
 }
コード例 #19
0
 public QuestionsService(TriviaContext db)
 {
     this.db = db;
 }
コード例 #20
0
 public RepositoryWrapper(TriviaContext repositoryContext)
 {
     _triviaContext = repositoryContext;
 }
コード例 #21
0
 public GenericRepository(TriviaContext context)
 {
     this._context = context;
 }
コード例 #22
0
 public HomeController(TriviaContext context)
 {
     _context = context;
 }
コード例 #23
0
 public AnswersService(TriviaContext db)
 {
     this.db = db;
 }
コード例 #24
0
 public AnswerRepository(TriviaContext context) : base(context)
 {
 }
コード例 #25
0
ファイル: AnswersController.cs プロジェクト: pavankay/Trivia
 public AnswersController(TriviaContext context)
 {
     _context = context;
 }
コード例 #26
0
 public void Reset()
 {
     ScoreContext.Reset();
     TriviaContext.Reset();
     GameOverContext.Reset();
 }
コード例 #27
0
 public GameplayRoomRepository(TriviaContext context) : base(context)
 {
 }
コード例 #28
0
 public DuelController(TriviaContext context, IHttpClientFactory httpClientFactory)
 {
     _context           = context;
     _httpClientFactory = httpClientFactory;
 }
コード例 #29
0
 public QuestionsController(TriviaContext context)
 {
     dbContext = context;
 }
コード例 #30
0
ファイル: LinkingController.cs プロジェクト: pavankay/Trivia
 public LinkingController(TriviaContext context)
 {
     _context = context;
 }