public async Task <IActionResult> Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Event evt = await _db.Events.FindAsync(id);

            if (evt == null)
            {
                return(NotFound());
            }
            ApEventVM model = new ApEventVM()
            {
                Event         = _db.Events.Include(e => e.EventSpeakers).FirstOrDefault(e => e.Id == id),
                EventSpeakers = _db.EventSpeakers.Include(es => es.Speaker),
                Speakers      = _db.Speakers
            };

            return(View(model));
        }
        public async Task <IActionResult> Edit(int?id, ApEventVM apEventVM, IFormFile File, DateTime dateTime, DateTime time)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Event evt = await _db.Events.FindAsync(id);

            if (evt == null)
            {
                return(NotFound());
            }
            if (File != null)
            {
                if (!File.isImage())
                {
                    ModelState.AddModelError(string.Empty, "Please pick a file matching the format!");
                    return(View(new ApEventVM()
                    {
                        Event = _db.Events.Include(e => e.EventSpeakers).FirstOrDefault(e => e.Id == id),
                        EventSpeakers = _db.EventSpeakers.Include(es => es.Speaker),
                        Speakers = _db.Speakers
                    }));
                }
                Extensions.DeleteImg(_env.WebRootPath, "img/event", evt.Image);
                evt.Image = await File.SaveImg(_env.WebRootPath, "img/event");
            }

            List <EventSpeaker> eventSpeakers        = _db.EventSpeakers.Where(es => es.EventId == evt.Id).ToList();
            List <EventSpeaker> currentEventSpeakers = _db.EventSpeakers.Where(es => es.EventId == evt.Id).ToList();
            List <Speaker>      currentSpeakers      = new List <Speaker>();
            List <EventSpeaker> newEventSpeakers     = new List <EventSpeaker>();

            foreach (EventSpeaker es in currentEventSpeakers)
            {
                currentSpeakers.Add(_db.Speakers.FirstOrDefault(s => s.Id == es.SpeakerId));
            }

            string test = Request.Form["states[]"];

            if (test != null)
            {
                string[]   strId = test.Split(",");
                List <int> intId = new List <int>();
                foreach (string Id in strId)
                {
                    intId.Add(Int32.Parse(Id));
                }
                foreach (int Id in intId)
                {
                    newEventSpeakers.Add(new EventSpeaker
                    {
                        EventId   = evt.Id,
                        SpeakerId = Id
                    });
                }
                currentEventSpeakers = newEventSpeakers;
                foreach (EventSpeaker es in eventSpeakers)
                {
                    _db.EventSpeakers.Remove(es);
                }
                foreach (EventSpeaker es in currentEventSpeakers)
                {
                    _db.EventSpeakers.Add(es);
                }
            }
            evt.Name        = apEventVM.Event.Name;
            evt.Description = apEventVM.Event.Description;
            evt.Date        = apEventVM.Event.Date;
            evt.Time        = apEventVM.Event.Time;
            evt.Venue       = apEventVM.Event.Venue;
            CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");

            string[] spt = apEventVM.Event.Time.Split("-");
            if (dateTime.ToString() != "1/1/0001 12:00:00 AM")
            {
                evt.Date = dateTime.ToString("dd MMMM yyyy");
                if (time.ToString() == "1/1/0001 12:00:00 AM")
                {
                    evt.Time = dateTime.ToString("t", culture) + " -" + spt[1];
                }
            }
            if (time.ToString() != "1/1/0001 12:00:00 AM")
            {
                if (dateTime.ToString() == "1/1/0001 12:00:00 AM")
                {
                    evt.Time = spt[0] + "- " + time.ToString("t", culture);
                }
                if (dateTime.ToString() != "1/1/0001 12:00:00 AM")
                {
                    evt.Time = dateTime.ToString("t", culture) + " - " + time.ToString("t", culture);
                }
            }
            await _db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }