public ActionResult Create(EventEditCreationModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("EditCreate", viewModel));
            }
            else
            {
                //Get event owner and create event
                MeetupModel model  = new MeetupModel();
                int?        infoID = this.UserId();
                if (infoID is null)
                {
                    return(RedirectToAction("Index", "Home"));
                }

                //get event ID
                int    randomNumber;
                Random random = new Random();
                do
                {
                    randomNumber = random.Next(0, int.MaxValue);
                }while(model.Events.Any(e => e.Id == randomNumber));

                //Create event
                Event newEvent = new Event(viewModel.Name,
                                           viewModel.Description,
                                           model.Users.SingleOrDefault(u => u.Id == infoID.Value),
                                           new Address(viewModel.Address.Country, viewModel.Address.City, Convert.ToInt32(viewModel.Address.CityZipCode), viewModel.Address.StreetName, viewModel.Address.StreetNumber),
                                           randomNumber);
                newEvent.BeginningTime = viewModel.Time.Value;

                //Save event
                model.Events.Add(newEvent);
                model.SaveChanges();

                return(RedirectToAction("Index"));
            }
        }
        public ActionResult Edit(EventEditCreationModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                viewModel.Editing = true;
                return(View("EditCreate", viewModel));
            }
            else
            {
                MeetupModel model = new MeetupModel();

                //Check if user owns the event
                int?infoID = this.UserId();
                if (infoID is null)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                Event editEvent = model.Events.SingleOrDefault(e => e.Id == viewModel.EditingId && e.HostUserId == infoID);
                if (editEvent is null)
                {
                    return(RedirectToAction("Index"));
                }

                //Fill in the event with the view model
                editEvent.Name                 = viewModel.Name;
                editEvent.Description          = viewModel.Description;
                editEvent.BeginningTime        = viewModel.Time.Value;
                editEvent.Address.CityName     = viewModel.Address.City;
                editEvent.Address.Country      = viewModel.Address.Country;
                editEvent.Address.StreetName   = viewModel.Address.StreetName;
                editEvent.Address.StreetNumber = viewModel.Address.StreetNumber;
                editEvent.Address.ZipCode      = Convert.ToInt32(viewModel.Address.CityZipCode);

                model.SaveChanges();
                return(RedirectToAction("Page", new { eventId = viewModel.EditingId }));
            }
        }
        /// <summary>
        /// An action returning a page where the user can edit an event
        /// </summary>
        /// <param name="id">The id of the event to edit</param>
        /// <returns>If user owns the event: Returns a page to edit an event</returns>
        public ActionResult Edit(int id)
        {
            MeetupModel model = new MeetupModel();

            //Checks if user owns the event
            int?infoID = this.UserId();

            if (infoID is null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            Event editEvent = model.Events.SingleOrDefault(e => e.Id == id && e.HostUserId == infoID);

            if (editEvent is null)
            {
                return(RedirectToAction("Index"));
            }

            //Fill in view model
            EventEditCreationModel viewModel = new EventEditCreationModel();

            viewModel.Address              = new AddressModel();
            viewModel.Address.City         = editEvent.Address.CityName;
            viewModel.Address.Country      = editEvent.Address.Country;
            viewModel.Address.CityZipCode  = editEvent.Address.ZipCode.ToString();
            viewModel.Address.StreetName   = editEvent.Address.StreetName;
            viewModel.Address.StreetNumber = editEvent.Address.StreetNumber;

            viewModel.Description = editEvent.Description;
            viewModel.EditingId   = editEvent.Id;
            viewModel.Name        = editEvent.Name;
            viewModel.Time        = editEvent.BeginningTime;
            viewModel.Editing     = true;

            return(View("EditCreate", viewModel));
        }