private Course GetCourse()
        {
            RockContext rockContext = new RockContext();

            var courseId = PageParameter(PageParameterKeys.CourseId).AsIntegerOrNull();

            if (courseId != null)
            {
                CourseService courseService = new CourseService(rockContext);
                return(courseService.Get(courseId.Value));
            }

            var chapterId = PageParameter(PageParameterKeys.ChapterId).AsIntegerOrNull();

            if (chapterId != null)
            {
                ChapterService chapterService = new ChapterService(rockContext);
                var            chapter        = chapterService.Get(chapterId.Value);
                return(chapter.Course);
            }

            var coursePageId = PageParameter(PageParameterKeys.CoursePageId).AsIntegerOrNull();

            if (coursePageId != null)
            {
                CoursePageService coursePageService = new CoursePageService(rockContext);
                return(coursePageService.Get(coursePageId.Value).Chapter.Course);
            }

            return(null);
        }
        protected void btnDelete_Click(object sender, RowEventArgs e)
        {
            var               id                = ( int )e.RowKeyValue;
            RockContext       rockContext       = new RockContext();
            CoursePageService coursePageService = new CoursePageService(rockContext);
            var               coursePage        = coursePageService.Get(id);

            if (coursePage != null)
            {
                coursePageService.Delete(coursePage);
                rockContext.SaveChanges();
            }

            BindGrid();
        }
        private CoursePage GetCoursePage(CoursePageService coursePageService)
        {
            var coursePageId = PageParameter(PageParameterKey.CoursePageId).AsIntegerOrNull();

            if (!coursePageId.HasValue)   //if there is no page parameter for the page the user doesn't want it
            {
                return(null);
            }

            var coursePage = coursePageService.Get(coursePageId.Value);

            if (coursePage == null)
            {
                var chapterId   = PageParameter(PageParameterKey.ChapterId).AsInteger();
                var coursePages = coursePageService
                                  .Queryable()
                                  .Where(p => p.ChapterId == chapterId)
                                  .OrderBy(cc => cc.Order).ToList();

                int order = 0;
                if (coursePages.Any())
                {
                    order = coursePages.Last().Order + 1;
                }

                if (!EntityGuid.HasValue)
                {
                    EntityGuid = Guid.NewGuid();
                }

                var pageCourseComponent = GetCoursePageComponent(coursePage);

                coursePage = new CoursePage
                {
                    ChapterId     = chapterId,
                    EntityTypeId  = PageComponentId ?? 0,
                    Guid          = EntityGuid.Value,
                    Order         = order,
                    Configuration = string.Empty
                };
            }
            return(coursePage);
        }