public ActionResult Create(int curriculumAssignmentId, CreateStageTimelineModel createTimelineModel)
        {
            try
            {
                Timeline timeline = createTimelineModel.Timeline;
                timeline.CurriculumAssignmentRef = curriculumAssignmentId;
                timeline.StageRef = createTimelineModel.StageId;

                AddValidationErrorsToModelState(Validator.ValidateStageTimeline(timeline).Errors);

                if (ModelState.IsValid)
                {
                    Storage.AddTimeline(timeline);

                    return RedirectToAction("Index", new { CurriculumAssignmentId = curriculumAssignmentId });
                }
                else
                {
                    SaveValidationErrors();

                    return RedirectToAction("Create");
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public ActionResult Edit(int timelineId, CreateStageTimelineModel editStageTimelineModel)
        {
            try
            {
                Timeline timeline = editStageTimelineModel.Timeline;

                timeline.CurriculumAssignmentRef = Storage.GetTimeline(timelineId).CurriculumAssignmentRef;
                timeline.StageRef = editStageTimelineModel.StageId;
                timeline.Id = timelineId;

                AddValidationErrorsToModelState(Validator.ValidateStageTimeline(timeline).Errors);

                if (ModelState.IsValid)
                {
                    Storage.UpdateTimeline(timeline);

                    return RedirectToRoute("StageTimelines", new { action = "Index", CurriculumAssignmentId = Session["CurriculumAssignmentId"] });
                }
                else
                {
                    SaveValidationErrors();

                    return RedirectToAction("Edit");
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public ActionResult Create(int curriculumAssignmentId)
        {
            try
            {
                LoadValidationErrors();

                CurriculumAssignment curriculumAssignment = Storage.GetCurriculumAssignment(curriculumAssignmentId);
                Curriculum curriculum = Storage.GetCurriculum(curriculumAssignment.CurriculumRef);
                Group group = Storage.GetGroup(curriculumAssignment.UserGroupRef);
                CreateStageTimelineModel createTimelineModel = new CreateStageTimelineModel(new Timeline(),
                    Storage.GetStages(curriculumAssignment.CurriculumRef), 0);

                ViewData["GroupName"] = group.Name;
                ViewData["CurriculumName"] = curriculum.Name;
                return View(createTimelineModel);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        public ActionResult Edit(int timelineId)
        {
            try
            {
                LoadValidationErrors();

                Timeline timeline = Storage.GetTimeline(timelineId);
                CurriculumAssignment curriculumAssignment = Storage.GetCurriculumAssignment(timeline.CurriculumAssignmentRef);
                Curriculum curriculum = Storage.GetCurriculum(curriculumAssignment.CurriculumRef);
                Group group = Storage.GetGroup(curriculumAssignment.UserGroupRef);
                CreateStageTimelineModel editStageTimelineModel = new CreateStageTimelineModel(timeline,
                    Storage.GetStages(Storage.GetCurriculumAssignment(timeline.CurriculumAssignmentRef).CurriculumRef), (int)timeline.StageRef);

                Session["CurriculumAssignmentId"] = timeline.CurriculumAssignmentRef;
                ViewData["GroupName"] = group.Name;
                ViewData["CurriculumName"] = curriculum.Name;
                return View(editStageTimelineModel);
            }
            catch (Exception e)
            {
                throw e;
            }
        }