示例#1
0
        public ActionResult Index(SweatyTShirt sweatyTShirt)
        {
            int userID = UserID;

            sweatyTShirt.UserID = userID;

            using (CompetitionRepository competitionRepository = new CompetitionRepository())
            {
                if (sweatyTShirt.IsSave)
                {
                    sweatyTShirt.CreatedDate = DateTime.Now;
                    competitionRepository.AddSweatyTShirt(sweatyTShirt);
                    ViewBag.Purr = new Purr()
                    {
                        Title = "Success", Message = "Sweaty-T-Shirt was successfully added."
                    };
                }

                sweatyTShirt.Competitions = competitionRepository
                                            .GetUserInCompetitionsForUser(userID)
                                            .Where(o => o.IsActive)
                                            .Select(o => o.Competition).ToList();

                if (sweatyTShirt.Competitions.Count > 0)
                {
                    if (sweatyTShirt.CompetitionID > 0)
                    {
                        sweatyTShirt.Competition = sweatyTShirt.Competitions.FirstOrDefault(o => o.CompetitionID == sweatyTShirt.CompetitionID);
                    }
                    else
                    {
                        sweatyTShirt.Competition   = sweatyTShirt.Competitions[0];
                        sweatyTShirt.CompetitionID = sweatyTShirt.Competition.CompetitionID;
                    }

                    if (sweatyTShirt.Competition == null)
                    {
                        throw new ApplicationException(string.Format("Unable to retrieve Competition object for sweatyTShirt.CompetitionID {0}", sweatyTShirt.CompetitionID));
                    }

                    sweatyTShirt.Competition.CompetitionProgressBars =
                        ControllerHelpers.GetCompetitionProgressBars(competitionRepository,
                                                                     sweatyTShirt.CompetitionID);

                    if (sweatyTShirt.IsSave)
                    {
                        /* emails are sent in separate thread, see global.asax.cs*/
                        if (sweatyTShirt.PostToFacebook)
                        {
                            FacebookRepository.PostToFacebook(sweatyTShirt);
                        }
                    }
                }
            }

            if (TempData[ControllerHelpers.PURR] != null)
            {
                ViewBag.Purr = TempData[ControllerHelpers.PURR];
                TempData[ControllerHelpers.PURR] = null;
            }

            sweatyTShirt.IsSave      = false;
            sweatyTShirt.Description = null;
            //will get client side validation errors because manually adding model to view, need to clear them.
            ModelState.Clear();
            return(View(sweatyTShirt));
        }