예제 #1
0
        public async Task <ActionResult> CatchForm(IFormCollection form)
        {
            var quizid = Convert.ToString(form["QuizID"]);
            var QuizID = quizid.Split(",").ToList()[0];

            var           stringvragen = Convert.ToString(form["QuestionID"]);
            List <string> vragen       = stringvragen.Split(",").ToList();

            if (form.Count() != (vragen.Count() + 7))
            {
                throw new Exception("Please fill in all the questions");
                // return RedirectToAction("Play", "QuestionsAnswers", new { id = QuizID });
            }
            else
            {
                var            stringvragentext = Convert.ToString(form["QuestionText"]);
                List <string>  StringQuestion   = stringvragentext.Split(",").ToList();
                List <string>  Iscorrect        = new List <string>();
                List <History> Histories        = new List <History>();
                for (int i = 0; i < vragen.Count(); i++)
                {
                    var    correct = Convert.ToString(form.ElementAt(i + 6));
                    string pattern = @"^(\[){1}(.*?)(\]){1}$";
                    correct = Regex.Replace(correct, pattern, "$2");
                    correct = correct.Trim();
                    var DefCorrect = correct.Split(",");
                    Iscorrect.Add(DefCorrect[1].Trim());
                    History history = new History {
                        QuestionID = Guid.Parse(vragen[i]), Correct = Convert.ToByte(Iscorrect[i]), UserId = User.FindFirstValue(ClaimTypes.NameIdentifier), HistoryID = Guid.NewGuid(), QuestionText = StringQuestion[i], QuizID = Guid.Parse(QuizID)
                    };
                    Histories.Add(history);
                    TempData["Histories"] = JsonConvert.SerializeObject(Histories);
                    var created = await historyRepo.Add(history);

                    if (created == null)
                    {
                        throw new Exception("Invalid Entry");
                    }
                }
                return(RedirectToAction("Index", "History", new { length = Histories.Count() }));
            }
        }
예제 #2
0
        public async Task <IActionResult> Index(IFormCollection collection)
        {
            var collectedAnswers = new List <AnswersTable>();
            var collectedResult  = collection.Take(collection.Count() - 1);

            foreach (var item in collectedResult)
            {
                var ans = new AnswersTable();

                ans.Answer        = item.Value;
                ans.QuestionId    = Convert.ToInt32(item.Key);
                ans.DateSubmitted = DateTime.Now.ToShortDateString();

                collectedAnswers.Add(ans);

                await _specialHelper.QuestionTypeAccess(ans.QuestionId, ans.Answer);
            }

            await _contex.Answers.AddRangeAsync(collectedAnswers);

            await _contex.SaveChangesAsync();

            return(RedirectToAction("ThankYouPage"));
        }
        /// <summary>
        /// 生成 authorization_code(authorization code 授权方式)、生成 access_token (implicit 授权模式)
        /// </summary>
        public override async Task AuthorizeEndpoint(OAuthAuthorizeEndpointContext context)
        {
            string          redirectUri = string.Empty, clientId = string.Empty, clientSecret = string.Empty;
            IFormCollection formColls = await context.Request.ReadFormAsync();

            //form类型的参数
            if (formColls != null && formColls.Count() > 0)
            {
                redirectUri  = formColls["redirect_uri"];
                clientId     = formColls["client_id"];
                clientSecret = formColls["client_secret"];
            }
            else
            {
                //url类型的参数
                redirectUri  = context.Request.Query["redirect_uri"];
                clientId     = context.Request.Query["client_id"];
                clientSecret = context.Request.Query["client_secret"];
            }
            OauClient client = Clients.ApiClients.FirstOrDefault(a => a.AppId == clientId && a.AppSecret == clientSecret);

            if (context.AuthorizeRequest.IsImplicitGrantType)
            {
                logger.Debug("AuthorizeEndpoint,implicit");
                //implicit 授权方式
                HandleImplicitGrant(context, client, redirectUri);
            }
            else if (context.AuthorizeRequest.IsAuthorizationCodeGrantType)
            {
                //authorization code 授权方式
                if (client != null)
                {
                    await HandleAuthorizationCodeGrant(context, client, redirectUri);
                }
            }
        }