public ActionResult GetCinemasAvailable(int movieId, int movieFormatId, string beginDate, string finishDate, string beginHour, string hoursRange) { var cinemaSchedulesToValidate = CinemaSchedulerManager.GenerateCinemaSchedules(movieId, beginDate, finishDate, beginHour, hoursRange); var cinemasByFormat = db.Cinema.Where(item => item.MovieFormatId == movieFormatId).Select(item => item.CinemaId).ToList(); var cinemaSchedulesByCinema = db.CinemaSchedule.Where(item => cinemasByFormat.Contains(item.CinemaId)); Dictionary <int, bool> cinemasUsed = new Dictionary <int, bool>(); foreach (var cinemaScheduleToValidate in cinemaSchedulesToValidate) { foreach (var cinemaRegistered in cinemaSchedulesByCinema) { if (!cinemasUsed.ContainsKey(cinemaRegistered.CinemaId)) { if (cinemaRegistered.BeginDatetime.IsInRange(cinemaRegistered.BeginDatetime, cinemaRegistered.FinishDatetime) || cinemaRegistered.FinishDatetime.IsInRange(cinemaRegistered.BeginDatetime, cinemaRegistered.FinishDatetime)) { cinemasUsed.Add(cinemaRegistered.CinemaId, true); } } } } var cinemasAvailable = db.Cinema.Where(item => item.MovieFormatId == movieFormatId && !cinemasUsed.Keys.Contains(item.CinemaId)).ToList(); var cinemas = new SelectList(cinemasAvailable, "CinemaId", "Name"); return(Json(cinemas, JsonRequestBehavior.AllowGet)); }
public ActionResult Create(CinemaScheduleViewModel cinemaSchedule) { if (ModelState.IsValid) { CinemaSchedulerManager.SaveCinemaSchedules(cinemaSchedule, User.Identity.GetUserName()); return(RedirectToAction("Index")); } ViewBag.MovieId = new SelectList(db.Movie, "MovieId", "Name", cinemaSchedule.MovieId); ViewBag.MovieFormatId = new SelectList(db.MovieFormat, "MovieFormatId", "Name", cinemaSchedule.MovieFormatId); return(View(cinemaSchedule)); }