/// <summary>
        /// Controller method to navigate to the page for
        /// creating a Dimension. This takes the ID of a 
        /// staging dataset which is used to find the values 
        /// for the new dimension.
        /// 
        /// Accessed via /Dataset/CreateDimension
        /// </summary>
        /// <param name="stagingDatasetID"> The Database ID of the staging dataset</param>
        /// <returns></returns>
        public ActionResult CreateDimension(int stagingDatasetID)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            CreateDimensionModel model = dataAccess.PopulateCreateDimensionModel(stagingDatasetID);

            List<Breadcrumb> trail = new List<Breadcrumb>();

            trail.Add(new Breadcrumb() { LinkText = "Home", Action = "Index", Controller = "Home", isCurrent = false });
            trail.Add(new Breadcrumb() { LinkText = "Staging Index", Action = "Index", Controller = "Staging", isCurrent = false });
            trail.Add(new Breadcrumb() { LinkText = "Create Dimension", Action = "", Controller = "", isCurrent = true });

            model.Breadcrumbs = trail;

            return View(model);
        }
        public ActionResult CreateDimension(CreateDimensionModel model)
        {
            DatasetDataAccess dataAccess = new DatasetDataAccess();

            if (!dataAccess.IsCreateDimensionModelValid(model))
            {
                ModelState.AddModelError("DimensionName", "The Dimension Name must be unique");

                model = dataAccess.PopulateCreateDimensionModel(model.StagingDatasetID);

                List<Breadcrumb> trail = new List<Breadcrumb>();

                trail.Add(new Breadcrumb() { LinkText = "Home", Action = "Index", Controller = "Home", isCurrent = false });
                trail.Add(new Breadcrumb() { LinkText = "Staging Index", Action = "Index", Controller = "Staging", isCurrent = false });
                trail.Add(new Breadcrumb() { LinkText = "Create Dimension", Action = "", Controller = "", isCurrent = true });

                model.Breadcrumbs = trail;

                return View(model);
            }

            try
            {
                dataAccess.CreateDimension(model);
            }
            catch (SqlException)
            {
                ModelState.AddModelError("", "An error occured when creating the dimension. Please ensure that the Dimension Name is unique and that the values are unique within it.");

                model = dataAccess.PopulateCreateDimensionModel(model.StagingDatasetID);

                List<Breadcrumb> trail = new List<Breadcrumb>();

                trail.Add(new Breadcrumb() { LinkText = "Home", Action = "Index", Controller = "Home", isCurrent = false });
                trail.Add(new Breadcrumb() { LinkText = "Staging Index", Action = "Index", Controller = "Staging", isCurrent = false });
                trail.Add(new Breadcrumb() { LinkText = "Create Dimension", Action = "", Controller = "", isCurrent = true });

                model.Breadcrumbs = trail;

                return View(model);
            }

            TempData["SuccessMessage"] = String.Format("The Dimension - {0}, was successfully created", model.DimensionName);
            return RedirectToAction("Index", "Staging");
        }