PurplePen.EventDB.FixCourseSortOrders C# (CSharp) Method

FixCourseSortOrders() private method

private FixCourseSortOrders ( ) : void
return void
        void FixCourseSortOrders()
        {
            List<Id<Course>> courseIds = new List<Id<Course>>(AllCourseIds);

            if (courseIds.Exists(delegate(Id<Course> courseId) { return GetCourse(courseId).sortOrder <= 0; })) {
                // Some or all course orders are missing. Sort by name.
                courseIds.Sort(delegate(Id<Course> courseId1, Id<Course> courseId2) {
                    string name1 = GetCourse(courseId1).name;
                    string name2 = GetCourse(courseId2).name;
                    return string.Compare(name1, name2, StringComparison.CurrentCultureIgnoreCase);
                });

                // Assign course orders. Note that we are modifying course objects directly, which is normally a BAD thing, because is bypasses the 
                // undo manager. But in this case, it is what we want to do because this is a load-time operation which shouldn't be undoable.
                for (int i = 0; i < courseIds.Capacity; ++i)
                    GetCourse(courseIds[i]).sortOrder = i + 1;
            }
        }