public static CourseFileModel Load(CourseFile courseFile) { var courseFileModel = new CourseFileModel(); courseFileModel.Header = courseFile; courseFileModel.Folder = new FolderModel { Name = "Root", Folders = LoadFolders(courseFile), Courses = LoadCourses(courseFile, 0) }; courseFileModel.Folder.Courses.ForEach(course => course.Folder = courseFileModel.Folder); courseFileModel.Courses = courseFileModel.Folder .Courses .Concat(courseFileModel.Folder .Folders .SelectRecursive(folder => folder.Folders, folder => folder.Courses) .SelectMany(v => v) .ToList()) .ToList(); courseFileModel.Folder.IsChecked = true; return(courseFileModel); }
private static List <Course> SaveCourses(CourseFileModel courseFileModel, Dictionary <FolderModel, int> indexFolder) { var index = 0; return(courseFileModel.Courses.Select(v => new Course { Id = ++index, Name = v.Name, Parent = indexFolder.ContainsKey(v.Folder) ? indexFolder[v.Folder] : 0, Waypoints = SaveWaypoints(v.Waypoints) }).ToList()); }
private static CourseFile Save(CourseFileModel courseFileModel) { var courseFile = new CourseFile { CourseplayHud = courseFileModel.Header.CourseplayHud, Course2D = courseFileModel.Header.Course2D, CourseManagement = courseFileModel.Header.CourseManagement, CourseplayFields = courseFileModel.Header.CourseplayFields, CourseplayInGameMap = courseFileModel.Header.CourseplayInGameMap, CourseplayWages = courseFileModel.Header.CourseplayWages, }; Dictionary <FolderModel, int> indexFolder; courseFile.Folders = SaveFolders(courseFileModel, out indexFolder); courseFile.Courses = SaveCourses(courseFileModel, indexFolder); return(courseFile); }
private static List <Folder> SaveFolders(CourseFileModel courseFileModel, out Dictionary <FolderModel, int> dictionary) { var index = 0; var foldersDic = courseFileModel.Folder.Folders.SelectRecursive(v => v.Folders, v => v).ToDictionary(k => k, v => new Folder { Id = ++index, Name = v.Name, }); foldersDic.ForEach(v => { var folder = foldersDic.Where(v2 => v2.Key.Folders.Contains(v.Key)).Select(v3 => v3.Value).SingleOrDefault(); v.Value.Parent = folder == null ? 0 : folder.Id; }); dictionary = foldersDic.ToDictionary(k => k.Key, v => v.Value.Id); return(foldersDic.Select(v => v.Value).ToList()); }