示例#1
0
        public IActionResult GetLessonCommentList(int id, DataTableParametersViewData gridData)
        {
            UserSessionContext userContext = new UserSessionContext(this.HttpContext);

            int pageIndex = (gridData.iDisplayStart / gridData.iDisplayLength) + 1;

            pageIndex = pageIndex <= 0 ? 0 : pageIndex - 1;
            var pageSize = gridData.iDisplayLength;
            int totalCount;

            LessonBusiness lessonBusinessManager = new LessonBusiness(DbContext);

            var comments = lessonBusinessManager.GetLessonComments(id, userContext.CurrentUser, userContext.CurrentUser.RoleId == (int)Enumerations.Role.Administrator, out totalCount);

            if (comments == null)
            {
                return(Json(null));
            }

            List <object> result = new List <object>();

            foreach (var comment in comments)
            {
                Dictionary <string, string> commentData = new Dictionary <string, string>();
                commentData.Add("Enabled", comment.Enabled.ToString());
                commentData.Add("Id", comment.Id.ToString());
                commentData.Add("Date", comment.CreateDate.ToDisplayDate());
                commentData.Add("User", HttpUtility.HtmlEncode(comment.CreateUser));
                commentData.Add("Type", comment.CommentType.Name + (comment.Enabled == true ? "" : " (Deleted)"));
                commentData.Add("Comment", HttpUtility.HtmlEncode(comment.Content));
                //@Url.Action("Delete", "Lesson", new { id = Model.Id }, "http")
                string buttonHtml = userContext.CurrentUser.RoleId == (int)Enumerations.Role.Administrator ?
                                    string.Format("<div><a href='#' class='{0}delete-comment float-left' data-url='{1}' data-commentType='{2}'><span class='float-left web-sprite sprite-{3}'></span>&nbsp;{0}Delete</a><div class='clear'></div></div>",
                                                  comment.Enabled == true ? "" : "Un-",
                                                  Url.Action((comment.Enabled == true ? "" : "Un") + "DeleteComment", "Lesson", new { id = comment.Id, lessonId = id }, "http"),
                                                  comment.CommentType.Name,
                                                  comment.Enabled == true ? "delete16" : "arrow-undo")
                    : "";
                commentData.Add("Actions", buttonHtml);

                var rawCommentData = (from c in commentData
                                      select c.Value).ToArray();

                result.Add(rawCommentData);
            }

            return(Json(
                       new
            {
                eEcho = gridData.sEcho,
                iTotalRecords = totalCount,
                iTotalDisplayRecords = totalCount,
                aaData = result
            }));
        }
示例#2
0
        public IActionResult GetLessonList(DataTableParametersViewData gridData)
        {
            UserSessionContext userContext = new UserSessionContext(this.HttpContext);

            //Ensure iDisplayLength never causes a divide by zero exception
            gridData.iDisplayLength = (gridData.iDisplayLength == 0) ? 10 : gridData.iDisplayLength;

            int pageIndex = (gridData.iDisplayStart / gridData.iDisplayLength) + 1;

            pageIndex = pageIndex <= 0 ? 0 : pageIndex - 1;
            var pageSize   = gridData.iDisplayLength;
            int totalCount = 0;

            LessonBusiness lessonBusinessManager = new LessonBusiness(DbContext);

            string gridMessage = "";

            switch (gridData.NavigationPage)
            {
            case Enumerations.NavigationPage.Review:
            case Enumerations.NavigationPage.Edit:
            case Enumerations.NavigationPage.Validate:
                gridMessage = "Lessons Requiring Action";
                break;

            case Enumerations.NavigationPage.MyLessons:
                gridMessage = "My Lessons";
                //if (gridData.SearchModel.Status.HasValue)//TODO: Add logic for multiple options
                //{
                //    gridMessage = "My " + Utility.StringValue((Enumerations.LessonStatus)gridData.SearchModel.Status.Value) + " Lessons";
                //}
                if (gridData.SearchModel.SelectedStatus != null && gridData.SearchModel.SelectedStatus.Count > 0)   //TODO: Add logic for multiple options
                {
                    string StatusList = "";
                    foreach (int StatusID in gridData.SearchModel.SelectedStatus)
                    {
                        StatusList += Utility.StringValue((Enumerations.LessonStatus)StatusID);
                        StatusList += ", ";
                    }
                    gridMessage = "My " + StatusList + " Lessons";
                }
                break;

            case Enumerations.NavigationPage.Search:
                gridMessage = "Filtered Search Results";
                break;

            case Enumerations.NavigationPage.Submit:
                gridMessage = "My Draft Lessons";
                break;
            }

            List <Lesson> lessons = null;

            if (!gridData.SearchModel.Blank)
            {
                List <SortColumn> sortColumns = null;

                if (gridData.iSortingCols > 0)
                {
                    sortColumns = new List <SortColumn>();

                    if (gridData.iSortingCols > 5)
                    {
                        sortColumns.Add(new SortColumn {
                            Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_5, Direction = gridData.sSortDir_5 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 6
                        });
                    }

                    if (gridData.iSortingCols > 4)
                    {
                        sortColumns.Add(new SortColumn {
                            Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_4, Direction = gridData.sSortDir_4 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 5
                        });
                    }

                    if (gridData.iSortingCols > 3)
                    {
                        sortColumns.Add(new SortColumn {
                            Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_3, Direction = gridData.sSortDir_3 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 4
                        });
                    }

                    if (gridData.iSortingCols > 2)
                    {
                        sortColumns.Add(new SortColumn {
                            Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_2, Direction = gridData.sSortDir_2 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 3
                        });
                    }

                    if (gridData.iSortingCols > 1)
                    {
                        sortColumns.Add(new SortColumn {
                            Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_1, Direction = gridData.sSortDir_1 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 2
                        });
                    }

                    sortColumns.Add(new SortColumn {
                        Column = (Enumerations.LessonListSortColumn)gridData.iSortCol_0, Direction = gridData.sSortDir_0 == "asc" ? Enumerations.SortDirection.Ascending : Enumerations.SortDirection.Descending, SortOrder = 1
                    });
                }

                lessons = lessonBusinessManager.GetLessonsPaged(sortColumns, userContext.CurrentUser, gridData.SearchModel, false, true, pageIndex, pageSize, out totalCount);
            }

            userContext.LastSearchResults = lessons;

            List <object> result = new List <object>();

            if (lessons != null)
            {
                foreach (var lesson in lessons)
                {
                    Dictionary <string, string> lessonData = new Dictionary <string, string>();
                    lessonData.Add("Enabled", lesson.Enabled.ToString());
                    lessonData.Add("Selected", false.ToString());
                    lessonData.Add("Id", lesson.Id.ToString());
                    lessonData.Add("Status", lesson.Status.Name + (lesson.Enabled == true ? "" : " (Deleted)"));
                    lessonData.Add("Title", HttpUtility.HtmlEncode(lesson.Title));
                    lessonData.Add("Discipline", lesson.Discipline == null ? "" : HttpUtility.HtmlEncode(lesson.Discipline.Name));
                    lessonData.Add("SubmitDate", lesson.SubmittedDate.HasValue ? lesson.SubmittedDate.Value.ToShortDateString() : "");
                    lessonData.Add("Contact", HttpUtility.HtmlEncode(Utility.ContactToDisplayString(lesson.ContactLastName, lesson.ContactFirstName)));
                    string buttonHtml = Utils.RenderPartialViewToString(this, "GridButton", LessonViewModel.ToViewModel(this.HttpContext, lesson));
                    lessonData.Add("Actions", buttonHtml);
                    lessonData.Add("LessonId", lesson.Id.ToString());
                    lessonData.Add("StatusId", lesson.StatusId.ToString());

                    var rawLessonData = (from l in lessonData
                                         select l.Value).ToArray();

                    result.Add(rawLessonData);
                }
            }

            return(Json(
                       new
            {
                eEcho = gridData.sEcho,
                iTotalRecords = totalCount,
                iTotalDisplayRecords = totalCount,
                aaData = result,
                gridMessage = gridMessage
            }));
        }