// GET: Schedule/Edit/5 public async Task<ActionResult> Edit(int movieTheaterId, int movieId, DateTime? date) { var d = date ?? DateTime.Today; var showtimes = await unitOfWork.Showtimes.GetAllByDateAsync(d, movieTheaterId, movieId); await FillMoviesSelectList(movieId); await FillMovieTheatresSelectList(movieTheaterId); var model = new ShowtimesEdit { MovieTheaterId = movieTheaterId, MovieId = movieId, Date = d, SessionTimesStr = string.Join("\n", showtimes.Select(_ => _.SessionTime.TimeOfDay.ToString("hh\\:mm"))) }; return View(model); }
// GET: Schedule/Edit/5 public async Task <ActionResult> Edit(int movieTheaterId, int movieId, DateTime?date) { var d = date ?? DateTime.Today; var showtimes = await unitOfWork.Showtimes.GetAllByDateAsync(d, movieTheaterId, movieId); await FillMoviesSelectList(movieId); await FillMovieTheatresSelectList(movieTheaterId); var model = new ShowtimesEdit { MovieTheaterId = movieTheaterId, MovieId = movieId, Date = d, SessionTimesStr = string.Join("\n", showtimes.Select(_ => _.SessionTime.TimeOfDay.ToString("hh\\:mm"))) }; return(View(model)); }
public async Task <ActionResult> Edit([Bind(Include = "MovieTheaterId, MovieId, Date, SessionTimesStr")] ShowtimesEdit model) { try { if (!string.IsNullOrWhiteSpace(model.SessionTimesStr)) { TimeSpan ts; var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimesAreInCorrectFormat = sessionTimesInput .All(s => TimeSpan.TryParseExact(s, new[] { "h\\:mm", "hh\\:mm" }, null, out ts)); if (!sessionTimesAreInCorrectFormat) { ModelState.AddModelError("SessionTimesStr", "Session Times are invalid"); } else if (sessionTimesInput.Distinct().Count() != sessionTimesInput.Count()) { ModelState.AddModelError("SessionTimesStr", "Duplicate session times"); } } if ((await unitOfWork.MovieTheatres.FindAsync(model.MovieTheaterId)) == null) { ModelState.AddModelError("MovieTheaterId", "Movie theater doesn't exist"); } if ((await unitOfWork.Movies.FindAsync(model.MovieId)) == null) { ModelState.AddModelError("MovieId", "Movie doesn't exist"); } if (ModelState.IsValid) { var sessionTimesInput = model.SessionTimesStr .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Select(s => s.Trim()); var sessionTimes = sessionTimesInput .Select(t => model.Date.Date + TimeSpan.ParseExact(t, new[] { "h\\:mm", "hh\\:mm" }, null)) .ToArray(); var service = new ShowtimesSchedulingService(unitOfWork); await service.ScheduleShowtimes(model.MovieTheaterId, model.MovieId, sessionTimes); await unitOfWork.SaveAsync(); return(RedirectToAction("Index", new { date = model.Date.ToString(Constants.UrlDateFormat) })); } await FillMoviesSelectList(model.MovieId); await FillMovieTheatresSelectList(model.MovieTheaterId); return(View(model)); } catch { return(View()); } }