public ContestData(string question, string[] answers, string[][] corrections, bool[] correct, string[] sentences = null, string[] finalSentences = null) { IContestSentence[] correctionsSentences = new IContestSentence[numberOfAnswers]; IContestSentence final = finalSentences == null? null : SentenceListWithEffects(finalSentences); for (int i = 0; i < numberOfAnswers; i++) { correctionsSentences[i] = SentenceListWithEffects(corrections[i], final); } ContestQuestion q = new ContestQuestion(this, question, answers, correct, correctionsSentences); start = SentenceListWithEffects(sentences, q); }
public ActionResult QuestionForm(ContestQuestion contestQuestion) { var contestQuestionDb = _context.ContestQuestions .Include(cq => cq.Question) .Include(cq => cq.ContestQuestionUsers) .SingleOrDefault(cq => cq.Id == contestQuestion.Id); var questionDb = _context.Questions.Include(q => q.Answers).SingleOrDefault(q => q.Id == contestQuestionDb.Question.Id); if (contestQuestionDb.ContestQuestionUsers == null) { contestQuestionDb.ContestQuestionUsers = new List <ContestQuestionUser>(); } int radioIndex = Int32.Parse(Request.Form["UserAnswer"]); contestQuestionDb.ContestQuestionUsers.Add(new ContestQuestionUser() { UserId = User.FindFirstValue(ClaimTypes.NameIdentifier), ContestQuestion = contestQuestionDb, IsAnsweredCorrectly = questionDb.Answers[radioIndex].IsCorrect }); var UserId = User.FindFirstValue(ClaimTypes.NameIdentifier); var isRegularUser = _userManager.GetUsersInRoleAsync("User").Result.Any(user => user.Id == UserId); /* * admin a moderator mozu otazku zobrazit lubovolny pocet krat bez zvysenia poctu zobrazeni (dolezite len pre pouzivatelov) * avsak pri ich odpovedi je potrebne zapocitat aj zobrazenie (aby sa nestalo ze odpovedi je viac ako zobrazeni) */ if (!isRegularUser) { contestQuestionDb.ViewCount++; } _context.SaveChanges(); return(RedirectToAction("MyContests")); }
public ActionResult Delete(Contest contest) { var contestDb = _context.Contests.Include(c => c.ContestQuestions).SingleOrDefault(q => q.Id == contest.Id); var contestHasAnswers = _context.ContestQuestionUsers.Include(cqu => cqu.ContestQuestion). Where(cqu => cqu.ContestQuestion.ContestId == contestDb.Id).Any(); if (contestHasAnswers) { //error handling return(View("ErrorOnDelete", contestDb)); } while (contestDb.ContestQuestions.Any()) { ContestQuestion contestQuestion = contestDb.ContestQuestions[0]; contestDb.ContestQuestions.RemoveAt(0); _context.ContestQuestions.Remove(contestQuestion); } _context.Contests.Remove(contestDb); _context.SaveChanges(); return(RedirectToAction("Index")); }
public void Copy(OjsDbContext context, TelerikContestSystemEntities oldDb) { var cSharpSubmissionType = context.SubmissionTypes.FirstOrDefault(x => x.Name == "C# code"); var cPlusPlusSubmissionType = context.SubmissionTypes.FirstOrDefault(x => x.Name == "C++ code"); var javaScriptSubmissionType = context.SubmissionTypes.FirstOrDefault(x => x.Name == "JavaScript code (NodeJS)"); foreach (var oldContest in oldDb.Contests) { var contest = new Contest { OldId = oldContest.Id, CreatedOn = oldContest.AddedOn, PreserveCreatedOn = true, StartTime = oldContest.ActiveFrom, EndTime = oldContest.ActiveTo, ContestPassword = oldContest.Password, PracticePassword = oldContest.Password, OrderBy = oldContest.Order, Name = oldContest.Name.Trim(), IsVisible = oldContest.IsVisible, LimitBetweenSubmissions = oldContest.SubmissionsTimeLimit, }; // Practice times if (!oldContest.ActiveFrom.HasValue && !oldContest.ActiveTo.HasValue) { contest.PracticeStartTime = DateTime.Now; contest.PracticeEndTime = null; } else if (oldContest.CanBePracticedAfterContest) { contest.PracticeStartTime = oldContest.ActiveTo; contest.PracticeEndTime = null; } else if (oldContest.CanBePracticedDuringContest) { contest.PracticeStartTime = oldContest.ActiveFrom; contest.PracticeEndTime = null; } else { contest.PracticeStartTime = null; contest.PracticeEndTime = null; } // Contest category var categoryName = oldContest.ContestType.Name; var category = context.ContestCategories.FirstOrDefault(x => x.Name == categoryName); contest.Category = category; // Contest question if (oldContest.Question != null) { var question = new ContestQuestion { AskOfficialParticipants = true, AskPracticeParticipants = true, Text = oldContest.Question.Trim(), Type = ContestQuestionType.Default, }; if (oldContest.Answers != null) { var answers = oldContest.Answers.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (var answerText in answers) { if (!string.IsNullOrWhiteSpace(answerText)) { var answer = new ContestQuestionAnswer { Text = answerText.Trim() }; question.Answers.Add(answer); } } } contest.Questions.Add(question); } // Contest submission types if (oldContest.ContestType.AllowCSharpCode) { contest.SubmissionTypes.Add(cSharpSubmissionType); } if (oldContest.ContestType.AllowCPlusPlusCode) { contest.SubmissionTypes.Add(cPlusPlusSubmissionType); } if (oldContest.ContestType.AllowJavaScriptCode) { contest.SubmissionTypes.Add(javaScriptSubmissionType); } context.Contests.Add(contest); Console.WriteLine(contest); } context.SaveChanges(); }