// // 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); }
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); }