public void Setup()
        {
            var movies = Mock.Of<IRepository<Movie>>(r => r.FindAsync(movie.MovieId) == Task.FromResult(movie));
            var theatres = Mock.Of<IRepository<MovieTheater>>(r => r.FindAsync(theater.MovieTheaterId) == Task.FromResult(theater));
            var showtimes = Mock.Of<IShowtimesRepository>();

            UnitOfWork = Mock.Of<IUnitOfWork>(u =>
                u.MovieTheatres == theatres &&
                u.Movies == movies &&
                u.Showtimes == showtimes
            );

            Sut = new ShowtimesSchedulingService(UnitOfWork);
        }
        public void Setup()
        {
            var movies    = Mock.Of <IRepository <Movie> >(r => r.FindAsync(movie.MovieId) == Task.FromResult(movie));
            var theatres  = Mock.Of <IRepository <MovieTheater> >(r => r.FindAsync(theater.MovieTheaterId) == Task.FromResult(theater));
            var showtimes = Mock.Of <IShowtimesRepository>();

            UnitOfWork = Mock.Of <IUnitOfWork>(u =>
                                               u.MovieTheatres == theatres &&
                                               u.Movies == movies &&
                                               u.Showtimes == showtimes
                                               );

            Sut = new ShowtimesSchedulingService(UnitOfWork);
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
        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());
            }
        }