diff --git a/Management/Models/Local/LocalCourse.cs b/Management/Models/Local/LocalCourse.cs index 234d4ea..c1ee743 100644 --- a/Management/Models/Local/LocalCourse.cs +++ b/Management/Models/Local/LocalCourse.cs @@ -1,3 +1,5 @@ +using YamlDotNet.Serialization; + namespace LocalModels; public record LocalCourse @@ -18,6 +20,13 @@ public record LocalCourseSettings public SimpleTimeOnly DefaultDueTime { get; init; } = new SimpleTimeOnly(); public IEnumerable AssignmentTemplates { get; init; } = Enumerable.Empty(); + + public string ToYaml() + { + var serializer = new SerializerBuilder().DisableAliases().Build(); + var yaml = serializer.Serialize(this); + return yaml; + } } public record SimpleTimeOnly diff --git a/Management/Services/YamlManager.cs b/Management/Services/YamlManager.cs index 11bb7f3..becb3d3 100644 --- a/Management/Services/YamlManager.cs +++ b/Management/Services/YamlManager.cs @@ -38,18 +38,26 @@ public class YamlManager { var courseDirectory = $"../storage/{course.Settings.Name}"; + await SaveSettings(course, courseDirectory); foreach (var module in course.Modules) { var moduleDirectory = courseDirectory + "/" + module.Name; if (!Directory.Exists(moduleDirectory)) Directory.CreateDirectory(moduleDirectory); - + await SaveQuizzes(course, module); await SaveAssignments(course, module); } } + private static async Task SaveSettings(LocalCourse course, string courseDirectory) + { + var settingsFilePath = courseDirectory + "/settings.yml"; ; + var settingsYaml = course.Settings.ToYaml(); + await File.WriteAllTextAsync(settingsFilePath, settingsYaml); + } + public async Task SaveQuizzes(LocalCourse course, LocalModule module) { var quizzesDirectory = $"../storage/{course.Settings.Name}/{module.Name}/quizzes";