public ActionResult RSVP(AuthenticationViewModel viewModel) { if (ModelState.IsValid) { // Massage data viewModel.FirstName = viewModel.FirstName.Trim(); viewModel.LastName = viewModel.LastName.Trim(); using (RSVPEntities db = new RSVPEntities()) { // Try to find guest based on first/last names Guest guest = db.Guests.FirstOrDefault(x => x.FirstName == viewModel.FirstName && x.LastName == viewModel.LastName); if (guest == null) { ModelState.AddModelError("NotFound", "Sorry, we couldn't find you on the guest list."); } else if (guest.GuestEventJunctions.Count(x => x.RepliesID == null) > 0) { CookieHelper.SetCookie("gid", StringCipher.Encrypt(guest.GuestID.ToString())); return(RedirectToAction("Reserve")); } else { ModelState.AddModelError("Completed", "RSVP process already completed, thank you!"); } } } return(View(viewModel)); }
//return list of all events public List <Event> GetAll() { using (RSVPEntities db = new RSVPEntities()) { db.Configuration.ProxyCreationEnabled = false; return(db.Events.ToList()); } }
public IHttpActionResult GetEventInfoFromName(string FirstAndLastName) { char[] seperator = { '?', ' ', '_' }; String[] Name = FirstAndLastName.Split(seperator, 2, StringSplitOptions.RemoveEmptyEntries); string FirstName = Name[0]; string LastName = Name[1]; using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.FirstName == FirstName && x.LastName == LastName); //GuestDTO guestDTO = new GuestDTO //{ // GuestID = guest.GuestID, // GuestGroupID = guest.GuestGroupID, // FirstName = guest.FirstName, // LastName = guest.LastName //}; //return Ok(guestDTO); List <GuestEventJunction> guestEventJunction = db.GuestEventJunctions.Where(x => x.GuestID == guest.GuestID).ToList(); GuestEventDTO guestEventDTO = new GuestEventDTO() { GuestEventList = guestEventJunction.Select(x => x.EventID).ToList() }; //return Ok(guestEventDTO); List <EventDTO> eventDTO = new List <EventDTO>(); foreach (int eventx in guestEventDTO.GuestEventList) { Event eventi = db.Events.FirstOrDefault(x => x.EventID == eventx); eventDTO.Add(new EventDTO() { EventID = eventi.EventID, Title = eventi.Title, Subtitle = eventi.Subtitle, Description = eventi.Description, EventStartDate = eventi.EventStartDate.ToString("MMMM dd, yyyy"), EventEndDate = eventi.EventEndDate.ToString("MMMM dd, yyyy"), Venue = eventi.Venue, Address = eventi.Address, EventStartTime = eventi.EventStartTime.ToString(), EventEndTime = eventi.EventEndTime.ToString(), Details = eventi.Details }); } return(Ok(eventDTO)); } }
//return list of all event ids that a guest (Id) is invited to public IHttpActionResult GetEventsForGuest(int Id) { using (RSVPEntities db = new RSVPEntities()) { List <GuestEventJunction> guestEventJunction = db.GuestEventJunctions.Where(x => x.GuestID == Id).ToList(); GuestEventDTO guestEventDTO = new GuestEventDTO() { GuestEventList = guestEventJunction.Select(x => x.EventID).ToList() }; return(Ok(guestEventDTO)); } }
//return guest of specific id public IHttpActionResult GetGuest(int Id) { using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == Id); GuestDTO guestDTO = new GuestDTO { GuestID = guest.GuestID, GuestGroupID = guest.GuestGroupID, FirstName = guest.FirstName, LastName = guest.LastName }; return(Ok(guestDTO)); } }
public ActionResult Reserve() { // Validation string redirect = "RSVP"; HttpCookie cookie = CookieHelper.GetCookie("gid"); if (cookie == null) { return(RedirectToAction(redirect)); } int guestId = Convert.ToInt32(StringCipher.Decrypt(cookie.Value)); // Find configuration for this user using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == guestId); // Redirect if user already has completed form previously if (guest == null || guest.GuestEventJunctions.Count(x => x.RepliesID == null) == 0) { return(RedirectToAction(redirect)); } ReservationViewModel viewModel = new ReservationViewModel(); viewModel.IsBringingGuest = null; viewModel.Guest = new GuestViewModel(guest); viewModel.ReplyList = guest.GuestEventJunctions.Select(x => x.Event).Select(x => new ReplyViewModel() { Attending = null, Event = new EventViewModel(x), EventMeals = x.EventMeals.Where(z => z.IsChild == guest.IsChild).ToList() }).ToList(); return(View(viewModel)); } }
//return list of all guest ids that a event (Id) is invited to public IHttpActionResult GetGuestsForEvent(int Id) { using (RSVPEntities db = new RSVPEntities()) { db.Configuration.ProxyCreationEnabled = false; List <GuestEventJunction> guestEventJunction = db.GuestEventJunctions.Where(x => x.EventID == Id).ToList(); GuestEventDTO guestEventDTO = new GuestEventDTO() { GuestEventList = guestEventJunction.Select(x => x.GuestID).ToList() }; List <Guest> guests = new List <Guest>(); foreach (int guestId in guestEventDTO.GuestEventList) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == guestId); guests.Add(guest); } return(Ok(guests.ToList())); } }
//return events with specified ids public IHttpActionResult GetEvent(int Id) { using (RSVPEntities db = new RSVPEntities()) { Event eventx = db.Events.FirstOrDefault(x => x.EventID == Id); EventDTO eventDTO = new EventDTO() { EventID = eventx.EventID, Title = eventx.Title, Subtitle = eventx.Subtitle, Description = eventx.Description, EventStartDate = eventx.EventStartDate.ToString("MMMM dd, yyyy"), EventEndDate = eventx.EventEndDate.ToString("MMMM dd, yyyy"), Venue = eventx.Venue, Address = eventx.Address, EventStartTime = eventx.EventStartTime.ToString(), EventEndTime = eventx.EventEndTime.ToString(), Details = eventx.Details }; return(Ok(eventDTO)); } }
public IHttpActionResult GetGuestFromName(string FirstAndLastName) { char[] seperator = { '?', '_' }; String[] Name = FirstAndLastName.Split(seperator, 2, StringSplitOptions.RemoveEmptyEntries); string FirstName = Name[0]; string LastName = Name[1]; using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.FirstName == FirstName && x.LastName == LastName); GuestDTO guestDTO = new GuestDTO { GuestID = guest.GuestID, GuestGroupID = guest.GuestGroupID, FirstName = guest.FirstName, LastName = guest.LastName }; return(Ok(guestDTO)); } }
public ActionResult Reserve(ReservationViewModel viewModel) { if (ModelState.IsValid) { // Start validating submissions if accept or decline is clicked for (int i = 0; i < viewModel.ReplyList.Count; i++) { if (viewModel.ReplyList[i].Attending.Value == true) { // Add errors for empty meals if (!viewModel.ReplyList[i].SelectedMeal.HasValue) { ModelState.AddModelError("ReplyList[" + i + "].SelectedMeal", "Please select a meal!"); } using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == viewModel.Guest.GuestId); if (guest.CanBringGuest && !viewModel.IsBringingGuest.HasValue) { ModelState.AddModelError("IsBringingGuest", "Please let us know if you will be bringing a guest."); if (string.IsNullOrEmpty(viewModel.GuestFirstName)) { ModelState.AddModelError("GuestFirstName", "Please provide the first name of your guest."); } if (string.IsNullOrEmpty(viewModel.GuestLastName)) { ModelState.AddModelError("GuestLastName", "Please provide the last name of your guest."); } } } } } // Check if ModelState is valid once more after custom validation if (ModelState.IsValid) { // Massage data viewModel.AttendeeEmail = viewModel.AttendeeEmail.Trim(); viewModel.GuestFirstName = viewModel.GuestFirstName?.Trim(); viewModel.GuestLastName = viewModel.GuestLastName?.Trim(); try { using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == viewModel.Guest.GuestId); // Redirect if user already has completed form previously if (guest.GuestEventJunctions.Count(x => x.RepliesID == null) == 0) { return(RedirectToAction("RSVP")); } // Create each reply foreach (var reply in viewModel.ReplyList) { Reply newReply = new Reply(); newReply.AttendeeEmail = viewModel.AttendeeEmail; newReply.Attending = reply.Attending.Value; // If user is attending this event then add the rest if (reply.Attending.Value == true) { newReply.MealId = reply.SelectedMeal; newReply.Notes = reply.Notes; newReply.LicensePlate = reply.LicensePlate; } db.Replies.Add(newReply); db.SaveChanges(); guest.GuestEventJunctions.FirstOrDefault(x => x.GuestID == viewModel.Guest.GuestId && x.EventID == reply.Event.EventId).RepliesID = newReply.RepliesID; db.SaveChanges(); } // Create another guest if user is bringing a guest if (guest.CanBringGuest && viewModel.IsBringingGuest.Value) { Guest newGuest = new Guest() { FirstName = viewModel.GuestFirstName, LastName = viewModel.GuestLastName, CanBringGuest = false, IsChild = false, ReferenceGuestID = guest.GuestID }; db.Guests.Add(newGuest); db.SaveChanges(); List <GuestEventJunction> originalGuestEventJunctions = guest.GuestEventJunctions.ToList(); foreach (var item in originalGuestEventJunctions) { if (viewModel.ReplyList.Any(x => item.EventID == x.Event.EventId && x.Attending.Value)) { GuestEventJunction guestEventJunction = new GuestEventJunction() { EventID = item.EventID, RepliesID = null, GuestID = newGuest.GuestID }; db.GuestEventJunctions.Add(guestEventJunction); } } db.SaveChanges(); } } return(RedirectToAction("Confirmation")); } catch (Exception ex) { // Handle exception here } } } // If there are any errors then repopulate model and send back using (RSVPEntities db = new RSVPEntities()) { Guest guest = db.Guests.FirstOrDefault(x => x.GuestID == viewModel.Guest.GuestId); for (int i = 0; i < viewModel.ReplyList.Count; i++) { int eventId = viewModel.ReplyList[i].Event.EventId; Event currentEvent = db.Events.FirstOrDefault(x => x.EventID == eventId); viewModel.Guest = new GuestViewModel(guest); viewModel.ReplyList[i].Event = new EventViewModel(currentEvent); viewModel.ReplyList[i].EventMeals = currentEvent.EventMeals.Where(x => x.IsChild == guest.IsChild).ToList(); } } return(View(viewModel)); }