public PartialViewResult TestEntryForm(StartListModel model) { if (ModelState.IsValid) { // Get the questionlist var questionList = db.QuestionLists.Where(ql => ql.participationCode.Equals(model.Participationcode)); // Get the participant var participant = db.Participants.Where(p => p.studentCode == model.Studentcode); // If both the codes are valid, continue if (questionList.Count() != 0 && participant.Count() != 0) { return(TestForm(model, questionList.First().idQuestionList)); } else { // One of the codes was incorrect ModelState.AddModelError(String.Empty, "The participationcode and/or studentcode was not valid."); } } else { // The data in one of the fields was invalid ModelState.AddModelError(String.Empty, "Invalid input(s)"); } // Stay on the page with the current data return(PartialView("_TestEntryForm", model)); }
public PartialViewResult TestForm(StartListModel model, int idQuestionList) { //Get questions for the questionlist string sqlStringQuestions = "select q.* from Question as q join QuestionOrder as qo on qo.Question_idQuestion = q.idQuestion " + " join QuestionList as ql on ql.idQuestionList = qo.QuestionList_idQuestionList " + " where ql.participationCode = '" + model.Participationcode + "' order by qo.[order] "; var questionData = db.Database.SqlQuery <Question>(sqlStringQuestions); //Get all matchin answeroptions string sqlStringAnswerOptions = "select ao.* from AnswerOption as ao " + "join Question as q on q.idQuestion = ao.Question_idQuestion " + "join QuestionList_Question as qlq on qlq.Question_idQuestion = q.idQuestion " + "where qlq.QuestionList_idQuestionList = " + idQuestionList; var answerOptionData = db.Database.SqlQuery <AnswerOption>(sqlStringAnswerOptions); int idParticipant = db.Participants.Where(p => p.studentCode == model.Studentcode).First().idParticipant; //Get the last attempt value, used to increment attempt count string getLastAttempt = "SELECT MAX(Q2.attempt) as lastAttempt FROM AnswerOption as ao" + " join QuestionResult Q2 on ao.idAnswer = Q2.AnswerOption_idAnswer" + " WHERE ao.Question_idQuestion = " + questionData.First().idQuestion + " AND Q2.Participant_idParticipant = " + idParticipant + " AND Q2.QuestionList_idQuestionList = " + idQuestionList; int?lastAttempt = db.Database.SqlQuery <int?>(getLastAttempt).Single(); ViewBag.attempt = lastAttempt; //List containing TestQuestionData models, used to combine all of the question data in one place List <TestQuestionData> testQuestionData = new List <TestQuestionData>(); foreach (Question question in questionData) { testQuestionData.Add(new TestQuestionData { questionData = question, answerOptions = answerOptionData.Where(ao => question.idQuestion == ao.Question_idQuestion).ToList(), idQuestionList = idQuestionList, idParticipant = idParticipant }); } //Store the questionlist data in the tempdata TempData["testQuestionData"] = testQuestionData; TempData["attempt"] = lastAttempt + 1; TempData.Keep(); return(PartialView("_TestForm")); }
private async Task <int> EvaluateRunNo(StartListModel slm) { return(await Task.Run(() => { bool run1StillRunning = false; foreach (var member in slm.StartListMembers) { if (!(member.Finished || member.Disqualified)) { run1StillRunning = true; break; } } return run1StillRunning ? 1 : 2; })); }
public async Task <StartListModel> GetStartListForRaceId(int raceId, int runNo) { return(await Task.Run(() => { StartList = new StartListModel(); StartList.raceId = raceId; StartList.StartListMembers = new ObservableCollection <StartListMemberModel>(); IEnumerable <Skier> skiers = new AdoSkierDao(connectionFactory).FindAll(); IEnumerable <RaceData> racedata = new AdoRaceDataDao(connectionFactory).FindAllByRaceId(raceId); if (skiers == null) { throw new NullReferenceException("No skiers found"); } IEnumerable <StartListMember> startListMembers = new AdoStartListDao(connectionFactory) .FindAllByRaceIdAndRunNo(raceId, runNo) .OrderBy(startListMember => startListMember.StartPos); foreach (var startListMember in startListMembers) { var skierdata = racedata.FirstOrDefault(data => data.SkierId == startListMember.SkierId); StartList.StartListMembers.Add( new StartListMemberModel() { Skier = new SkierModel(skiers.FirstOrDefault(skier => skier.Id == startListMember.SkierId)), Startposition = startListMember.StartPos, RunNo = startListMember.RunNo, Blocked = skierdata != null && skierdata.Blocked, Disqualified = skierdata != null && skierdata.Disqualified, Finished = skierdata != null && skierdata.Finished, Running = skierdata != null && skierdata.Running, RaceDataId = skierdata?.Id ?? 0 } ); } return StartList; })); }