public StdResult<AnswerChoice> SetAnswer(User u, int questionNumber, int answerChosen)
        {
            using (CollectContext context = new CollectContext())
            {
                if(!context.Users.Any(user => user.Id == u.Id))
                    return StdResult<AnswerChoice>.BadResult("User introuvable en base.");

                var query = context.AnswerChoices.Where(answerChoice => answerChoice.User.Id == u.Id && answerChoice.QuestionNumber == questionNumber);
                bool alreadyAnswered = query.Any();
                AnswerChoice ac = null;
                if (query.Any())
                {
                    ac = query.FirstOrDefault();
                    ac.AnswerChosen = answerChosen;
                }
                else
                {
                    ac = new AnswerChoice
                    {
                        UserId = u.Id,
                        AnswerChosen = answerChosen,
                        QuestionNumber = questionNumber
                    };
                    context.AnswerChoices.Add(ac);

                    context.SaveChanges();
                    u.AnswerChoices.Add(ac);
                }

                context.SaveChanges();
                return StdResult<AnswerChoice>.OkResultInstance(ac);
            }
        }
        public StdResult<InstantGagnant> WinInstantGagnant(User MainUser)
        {
            using (CollectContext context = new CollectContext())
            {
                DateTime now = DateTime.Now;
                var query = from ig in context.InstantsGagnants
                            where now > ig.StartDateTime
                            && !ig.Won
                            orderby ig.StartDateTime
                            select ig;
                if (query.Any<InstantGagnant>())
                {
                    InstantGagnant ig = query.First<InstantGagnant>();

                    ig.UserId = MainUser.Id;
                    ig.Won = true;
                    ig.WonDate = DateTime.Now;
                    MainUser.InstantsGagnantWon.Add(ig);
                    context.SaveChanges();
                    return StdResult<InstantGagnant>.OkResultInstance(ig);
                }
                else
                    return StdResult<InstantGagnant>.BadResult("Pas d'instant gagnant disponible");
            }
        }
        public StdResult<InstantGagnant> AddInstantGagnant(InstantGagnant instance)
        {
            using (CollectContext context = new CollectContext())
            {
                context.InstantsGagnants.Add(instance);
                context.SaveChanges();

                return StdResult<InstantGagnant>.OkResultInstance(instance);
            }
        }
        public static void SetTradeDoublerSequenceNumber(int value)
        {
            using (CollectContext context = new CollectContext())
            {
                var sequenceNumber = (from seq in context.TradeDoublerIndex
                                      where seq.Id == 1
                                      select seq).FirstOrDefault();
                if (sequenceNumber != null)
                {
                    sequenceNumber.Value = value;

                    context.SaveChanges();
                }
            }
        }
        public StdResult<InstantGagnant> DeleteInstantsGagnant()
        {
            using (CollectContext context = new CollectContext())
            {
                foreach (User user in context.Users)
                {
                    user.InstantsGagnantWon = null;
                }

                foreach (InstantGagnant ig in context.InstantsGagnants)
                {
                    context.InstantsGagnants.Remove(ig);
                }
                context.SaveChanges();

                return StdResult<InstantGagnant>.OkResult;
            }
        }