public ActionResult Assigned(string isbn, string httpVerb)
        {
            var param = Session[SESSION_KEY] as SessionParameters;

            if (param == null)
            {
                return(View("BookError"));
            }

            ICourse course = new Course(param);

            string errorMessage = string.Empty;

            try {
                switch (httpVerb)
                {
                case "GET":
                    var items   = course.AssignedBooks();
                    var results = new BookItemResults {
                        Items = items, CanEdit = param.CanEdit
                    };
                    return(View("BookList", results));

                case "POST":
                    errorMessage = "Unable to assign book(" + isbn + ") to course.";
                    course.AddBook(isbn);
                    return(Json(new { Error = false }));

                case "DELETE":
                    errorMessage = "Unable to remove book(" + isbn + ") from course.";
                    course.RemoveBook(isbn);
                    return(Json(new { Error = false }));
                }
            } catch (InvalidOperationException e) {
                if (httpVerb == "GET")
                {
                    ViewBag.ErrorMessage = e.Message;
                    return(View("BookError"));
                }

                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(new { Error = true, Message = errorMessage + e.Message }));
            }

            return(View("BookError"));
        }