Exemple #1
0
        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));
        }
Exemple #2
0
 //return list of all events
 public List <Event> GetAll()
 {
     using (RSVPEntities db = new RSVPEntities())
     {
         db.Configuration.ProxyCreationEnabled = false;
         return(db.Events.ToList());
     }
 }
Exemple #3
0
        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));
            }
        }
Exemple #4
0
        //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));
            }
        }
Exemple #5
0
        //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));
            }
        }
Exemple #6
0
        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));
            }
        }
Exemple #7
0
        //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()));
            }
        }
Exemple #8
0
        //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));
            }
        }
Exemple #9
0
        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));
            }
        }
Exemple #10
0
        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));
        }