Example #1
0
        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;
        }
Example #2
0
        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");
        }