Пример #1
0
        //
        // GET: /Account/Rsvp
        public async Task<ActionResult> Rsvp()
        {
            RsvpModel model;

            // string userId = User.Identity.GetUserId();
            //var user = await UserManager.FindByIdAsync(userId);
            // var user = await ApplicationContext.Users.Include("Invitee").FirstOrDefaultAsync(u => u.Id == userId);
            var user = await LoadCurrentUserAsync();
            var invitee = user != null ? user.Invitee : null;
            if (invitee == null)
            {
                ViewBag.UserId = User.Identity.GetUserId();
                return View("NoInvitee");
            }
            else
            {
                ViewBag.Invitee = invitee;
                // ViewBag.InviteeName = invitee.Name;

                var groupedInvitees = await GetGroupedInvitees(invitee);
                ViewBag.GroupedInvitees = groupedInvitees;
                ViewBag.PlusOneKnown = groupedInvitees.Any(i => i.IsKnown);

                model = new RsvpModel()
                {
                    Attending = invitee.Attending,
                    ChildCount = invitee.ChildCount,
                    InterestedInChildCare = invitee.InterestedInChildCare,
                    AttendingRehearsal = invitee.AttendingRehearsal,
                    // RsvpDate = user.RsvpDate,
                    Note = invitee.Note
                };

                // Only set model.PlusOneAttending to a non-null value if there's
                // at least one grouped Invitee with a non-null Attending value:
                if (groupedInvitees.Any(i => i.Attending == true))
                {
                    model.PlusOneAttending = true;
                }
                else if (groupedInvitees.Any(i => i.Attending == false))
                {
                    model.PlusOneAttending = false;
                }
            }

            return View(model);
        }
Пример #2
0
        public async Task<ActionResult> Rsvp(RsvpModel model)
        {
            var user = await LoadCurrentUserAsync();
            var invitee = user != null ? user.Invitee : null;
            ViewBag.Invitee = invitee;
            if (ModelState.IsValid)
            {
                if (invitee == null)
                {
                    ViewBag.UserId = User.Identity.GetUserId();
                    return View("NoInvitee");
                }
                else
                {
                    user.Attending = model.Attending;
                    user.RsvpDate = DateTime.Now;

                    invitee.Attending = model.Attending;
                    invitee.RsvpDate = user.RsvpDate;

                    invitee.ChildCount = model.ChildCount;
                    invitee.InterestedInChildCare = model.InterestedInChildCare;
                    invitee.AttendingRehearsal = model.AttendingRehearsal;
                    invitee.Note = model.Note;

                    var groupedInvitees = await GetGroupedInvitees(invitee);
                    ViewBag.GroupedInvitees = groupedInvitees;
                    ViewBag.PlusOneKnown = groupedInvitees.Any(i => i.IsKnown);
                    if (model.PlusOneAttending != null)
                    {
                        // Update groups Invitees based on model.PlusOneAttending:
                        foreach (var i in groupedInvitees)
                        {
                            i.Attending = model.PlusOneAttending;
                        }
                    }

                    await ApplicationContext.SaveChangesAsync();

                    ViewBag.Attending = invitee.Attending;
                    return View("RsvpConfirm", model);
                }
            }

            // If we got this far, something failed, so redisplay form
            return View(model);
        }