private string AnswerPost(string sender, string raceId, string postId, string answerid, Sms sms) { var team = FindByNumber(sender, raceId); Race r = null; if (team != null) r = team.Race; else r = context.Races.Find(int.Parse(raceId)); var p = r.Posts.Where(q => q.Id == int.Parse(postId)).FirstOrDefault(); var pa = p.Answers.Where(k => k.Id == int.Parse(answerid)).FirstOrDefault(); var noOfTriesForTeam = context.Answers.Count(an => an.Team.Id == team.Id && an.Post.Id == p.Id); if ((r.NoOfTriesPerPost > 0 && noOfTriesForTeam >= r.NoOfTriesPerPost) || (noOfTriesForTeam >= p.Answers.Count)) { return "Posten er allerede besvaret"; } var a = new Answer { AnsweredAt = DateTime.Now, Team = team, ChosenAnswer = pa, Post = p, Sms = sms, CorrectAnswerChosen = pa.CorrectAnswer }; context.Answers.Add(a); context.SaveChanges(); var textToShow = (pa.CorrectAnswer ? p.CorrectAnswerText : p.WrongAnswerText); if (r.ShowNextPost && pa.NextPost != null) { textToShow += ". Næste post er " + pa.NextPost.Title; if (pa.NextPost.lattitude != 0 || pa.NextPost.longitude != 0) { textToShow += "Den er placereret på: "; textToShow += "(" + pa.NextPost.lattitude.ToString() + ", "; textToShow += pa.NextPost.longitude.ToString() + ")"; } } var checkinForTeam = context.Checkins.Where(c => c.TeamId == team.Id && c.PostId == p.Id).ToList(); checkinForTeam.ForEach(s => s.CheckOut = DateTime.Now); context.SaveChanges(); return textToShow; }
public ActionResult AnswerWebPost(int answerid) { var answer = db.PostAnswers.Find(answerid); if (answer == null) return HttpNotFound(); var team = db.Teams.Find(Session["TeamId"]); Race r = null; if (team != null) { r = team.Race; } var p = db.Posts.Find(Session["PostToAnswer"]); var pa = p.Answers.Where(k => k.Id == answerid).FirstOrDefault(); Answer answerIsThere = null; answerIsThere = db.Answers.Where(a => a.Team.Id == team.Id && a.ChosenAnswer.Id == pa.Id && a.Post.Id == p.Id).FirstOrDefault(); var noOfTriesForTeam = db.Answers.Count(a => a.Team.Id == team.Id && a.Post.Id == p.Id); if ((r.NoOfTriesPerPost > 0 && noOfTriesForTeam >= r.NoOfTriesPerPost) || (noOfTriesForTeam >= p.Answers.Count)) { ViewBag.TextToShow = new List<string> { "Posten er allerede besvaret" }; return View("AnswerWebPost"); } if (answerIsThere == null) { var a = new Answer { AnsweredAt = DateTime.Now, Team = team, ChosenAnswer = pa, Post = p, Sms = null, CorrectAnswerChosen = pa.CorrectAnswer }; db.Answers.Add(a); db.SaveChanges(); } var textToShow = new List<String>(); textToShow.Add((pa.CorrectAnswer ? p.CorrectAnswerText : p.WrongAnswerText)); if (r.ShowNextPost && pa.NextPost != null) { textToShow.Add("Næste post er " + pa.NextPost.Title); if (pa.NextPost.lattitude != 0 || pa.NextPost.longitude != 0) { textToShow.Add("Den er placereret på:"); textToShow.Add(pa.NextPost.lattitude.ToString()); textToShow.Add(pa.NextPost.longitude.ToString()); } } var checkinForTeam = db.Checkins.Where(c => c.TeamId == team.Id && c.PostId == p.Id).ToList(); checkinForTeam.ForEach(s => s.CheckOut = DateTime.Now); db.SaveChanges(); ViewBag.TextToShow = textToShow; return View("AnswerWebPost"); }