public ActionResult Add(string conferenceHashTag, long[] speakerIds, Presentation presentation) { var conference = YouConfDbContext.Conferences .Include(x => x.Speakers) .FirstOrDefault(x => x.HashTag == conferenceHashTag); if (conference == null) { return HttpNotFound(); } if (ModelState.IsValid) { //Convert the start time to UTC before storing presentation.StartTime = ConvertToUtc(presentation.StartTime, conference.TimeZoneId); PopulateSpeakers(conference, presentation, speakerIds); conference.Presentations.Add(presentation); YouConfDbContext.SaveChanges(); UpdateConferenceInSolrIndex(conference.Id, Common.Messaging.SolrIndexAction.Update); return RedirectToAction("Details", "Conference", new { hashTag = conferenceHashTag }); } ViewBag.Conference = conference; ViewBag.Speakers = conference.Speakers; return View(presentation); }
// // GET: /Presentation/Create public ActionResult Add(string id) { var conference = YouConfDbContext.Conferences .FirstOrDefault(x => x.HashTag == id); if (conference == null) { return HttpNotFound(); } ModelState.Remove("id"); var presentation = new Presentation() { StartTime = conference.StartDate }; ViewBag.Conference = conference; ViewBag.Speakers = conference.Speakers; return View(presentation); }
private void PopulateSpeakers(Conference conference, Presentation presentation, long[] speakerIds) { presentation.Speakers.Clear(); //Could look at creating a custom model binder here, but doing it simple for now.... if (speakerIds == null) return; foreach (var speakerId in speakerIds) { var speaker = conference.Speakers.First(x => x.Id == speakerId); presentation.Speakers.Add(speaker); } }
public ActionResult Edit(long[] speakerIds, Presentation presentation) { var currentPresentation = YouConfDbContext.Presentations .Include(x => x.Conference) .Include(x => x.Conference.Speakers) .FirstOrDefault(x => x.Id == presentation.Id); if (currentPresentation == null) { return HttpNotFound(); } if (ModelState.IsValid) { //Convert the start time to UTC before storing presentation.StartTime = ConvertToUtc(presentation.StartTime, currentPresentation.Conference.TimeZoneId); //Overwrite the old Presentation details with the new Mapper.Map(presentation, currentPresentation); PopulateSpeakers(currentPresentation.Conference, currentPresentation, speakerIds); YouConfDbContext.SaveChanges(); UpdateConferenceInSolrIndex(currentPresentation.ConferenceId, Common.Messaging.SolrIndexAction.Update); return RedirectToAction("Details", "Conference", new { hashTag = currentPresentation.Conference.HashTag }); } ViewBag.Conference = currentPresentation.Conference; ViewBag.Speakers = currentPresentation.Conference.Speakers; return View(presentation); }