Beispiel #1
0
        public MovieModule(OrmLiteConnectionFactory db)
            : base("/movies")
        {
            Get["/"] = _ =>
            {
                var movies = new MovieController(db);
                return(movies.ListAll());
            };

            Get["/{movie}"] = req =>
            {
                var movies = new MovieController(db);
                var movie  = movies.Lookup(req.movie);
                if (movie == null)
                {
                    return(404);
                }
                return(View["MovieDetail", movie]);
            };

            Get["/create"] = _ => { return(View["NewMovie"]); };

            Post["/create"] = _ =>
            {
                var movie           = this.Bind <Movie>(); // Binds the POST result to movie variable (as a movie object)
                var movieController = new MovieController(db);
                movieController.Add(movie);
                return(Response.AsRedirect(ModulePath + "/" + movie.GetPrettyTitleLink()));
            };

            Post["/update/{id}"] = _ => { return(500); };
        }
Beispiel #2
0
        public ShowingsModule(OrmLiteConnectionFactory db)
            : base("/showings")
        {
            Get["/"] = _ =>
            {
                var showings = new ShowingsController(db);
                return View["ShowingList", showings.ListAll()];
            };

            Get["/{showing}"] = req =>
            {
                var showings = new ShowingsController(db);
                var showing = showings.Get(req.showing);
                if (showing == null)
                    return 404;
                return View["ShowingDetail", showing];
            };

            Get["/create"] = _ =>
            {
                var movieController = new MovieController(db);
                var movies = movieController.ListAll().Movies;
                var selectlist = movies.Select(movie => new SelectListItem(movie.Title, movie.MovieId.ToString(), false)).ToList();
                return View["NewShowing", selectlist];
            };

            Post["/create"] = _ =>
            {
                var showing = this.Bind<Showing>();
                LogTo.Debug("Adding showing: {0}", showing);
                var showingsController = new ShowingsController(db);
                var showingId = showingsController.Add(showing);
                return Response.AsRedirect(ModulePath + "/" + showingId);
            };

            Post["/update/{id}"] = _ => { return 500; };
        }
Beispiel #3
0
        public ShowingModule(OrmLiteConnectionFactory db)
            : base("/showings")
        {
            Get["/"] = _ =>
            {
                var showings = new ShowingsController(db);
                return(View["ShowingList", showings.ListAll()]);
            };

            Get["/{showing}"] = req =>
            {
                var showings = new ShowingsController(db);
                var showing  = showings.Get(req.showing);
                if (showing == null)
                {
                    return(404);
                }
                return(View["ShowingDetail", showing]);
            };

            Get["/create"] = _ =>
            {
                var movieController = new MovieController(db);
                ViewBag["Movies"] = movieController.ListAll().GetSelectList();
                return(View["NewShowing", new Showing()]);
            };

            Post["/create"] = _ =>
            {
                var showing = this.Bind <Showing>();
                LogTo.Debug("Adding showing: {0}", showing);
                var showingsController = new ShowingsController(db);
                var showingId          = showingsController.Add(showing);
                return(Response.AsRedirect(ModulePath + "/" + showingId));
            };

            Get["{showing}/edit"] = req =>
            {
                // Look up the showing with given ID
                var showings = new ShowingsController(db);
                var showing  = showings.Get(req.showing);
                if (showing == null)
                {
                    return(404);
                }

                // Tell the view where to POST to
                ViewBag["action"] = ModulePath + $"/{req.showing}/edit";

                // Do usual showing view stuff (see the create view) - it would be great if we could consolodate the the two into one function
                var movieController = new MovieController(db);
                ViewBag["Movies"] = movieController.ListAll().GetSelectList();
                return(View["NewShowing", showing]);
            };

            Post["{showing}/edit"] = req =>
            {
                int showingID;
                if (!int.TryParse(req.showing, out showingID))
                {
                    return(404); // User tried to edit a showing with an invalid (non-numeric) ID
                }
                var editedShowing = this.Bind <Showing>();
                var showings      = new ShowingsController(db);
                var oldshowing    = showings.Get(showingID);
                if (oldshowing == null)
                {
                    return(404); // User tried to edit a nonexistent showing
                }
                var filledSeats = oldshowing.TotalSeats - oldshowing.AvailableSeats;
                editedShowing.AvailableSeats = editedShowing.TotalSeats - filledSeats;

                //if(editedShowing.AvailableSeats < 0)
                //  return "Error: negative seats available"; // is this really an error condition? Maybe they're okay with making an overbooked show..

                editedShowing.ShowingId = showingID;
                showings.Update(editedShowing);
                return(Response.AsRedirect(ModulePath + "/" + showingID));
            };

            Post["{showing}/delete"] = req =>
            {
                // Again, this code duplication is pretty nasty
                int showingID;
                if (!int.TryParse(req.showing, out showingID))
                {
                    return(500); // User tried to edit a showing with an invalid (non-numeric) ID
                }
                var showings = new ShowingsController(db);
                if (showings.Get(showingID) == null)
                {
                    return(404); // User tried to edit a nonexistent showing
                }
                showings.Delete(showingID);
                return(Response.AsRedirect(ModulePath + "/"));
            };
        }