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));
        }