mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
fixing dotnets terrible logging
This commit is contained in:
@@ -49,15 +49,15 @@ public class AssignmentEditorContext
|
||||
? currentModule with
|
||||
{
|
||||
Assignments = currentModule.Assignments
|
||||
.Select(a => a == Assignment ? newAssignment : a)
|
||||
.Select(a => a.Name == Assignment.Name ? newAssignment : a)
|
||||
.ToArray()
|
||||
}
|
||||
: m
|
||||
)
|
||||
.ToArray();
|
||||
planner.LocalCourse = planner.LocalCourse with { Modules = updatedModules };
|
||||
|
||||
Assignment = newAssignment;
|
||||
planner.LocalCourse = planner.LocalCourse with { Modules = updatedModules };
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,17 +7,20 @@ using CanvasModel.Modules;
|
||||
using Management.Services.Canvas;
|
||||
using System.Text.RegularExpressions;
|
||||
using CanvasModel.Quizzes;
|
||||
using Management.Services;
|
||||
|
||||
namespace Management.Planner;
|
||||
|
||||
public class CoursePlanner
|
||||
{
|
||||
private readonly MyLogger<CoursePlanner> logger;
|
||||
private readonly FileStorageManager fileStorageManager;
|
||||
private readonly CanvasService canvas;
|
||||
public bool LoadingCanvasData { get; internal set; } = false;
|
||||
|
||||
public CoursePlanner(FileStorageManager fileStorageManager, CanvasService canvas)
|
||||
public CoursePlanner(MyLogger<CoursePlanner> logger, FileStorageManager fileStorageManager, CanvasService canvas)
|
||||
{
|
||||
this.logger = logger;
|
||||
this.fileStorageManager = fileStorageManager;
|
||||
this.canvas = canvas;
|
||||
}
|
||||
@@ -41,6 +44,14 @@ public class CoursePlanner
|
||||
|
||||
var verifiedCourse = value.GeneralCourseCleanup();
|
||||
|
||||
if (_localCourse == null)
|
||||
{
|
||||
_localCourse = verifiedCourse;
|
||||
_lastSavedCourse = verifiedCourse;
|
||||
StateHasChanged?.Invoke();
|
||||
return;
|
||||
}
|
||||
|
||||
_debounceTimer?.Dispose();
|
||||
_debounceTimer = new Timer(
|
||||
async (_) => await saveCourseToFile(verifiedCourse),
|
||||
@@ -61,16 +72,25 @@ public class CoursePlanner
|
||||
// ignore initial load of course
|
||||
if (LocalCourse == null)
|
||||
{
|
||||
Console.WriteLine("saving course as of debounce call time");
|
||||
logger.Trace("saving course as of debounce call time");
|
||||
await fileStorageManager.SaveCourseAsync(courseAsOfDebounce, null);
|
||||
_lastSavedCourse = courseAsOfDebounce;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Saving latest version of file");
|
||||
if (_lastSavedCourse == null)
|
||||
{
|
||||
logger.Trace("not saving course, no prevous saved course");
|
||||
_lastSavedCourse = LocalCourse ?? courseAsOfDebounce;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
logger.Trace("Saving latest version of file");
|
||||
var courseToSave = LocalCourse;
|
||||
await fileStorageManager.SaveCourseAsync(courseToSave, _lastSavedCourse);
|
||||
_lastSavedCourse = courseToSave;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +135,7 @@ public class CoursePlanner
|
||||
|
||||
public async Task CreateModule(LocalModule newModule)
|
||||
{
|
||||
if(LocalCourse == null)
|
||||
if (LocalCourse == null)
|
||||
return;
|
||||
var canvasCourseId =
|
||||
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to use to create module");
|
||||
@@ -132,13 +152,13 @@ public class CoursePlanner
|
||||
|
||||
public async Task SyncAssignmentGroups()
|
||||
{
|
||||
if(LocalCourse == null)
|
||||
if (LocalCourse == null)
|
||||
return;
|
||||
|
||||
var canvasCourseId =
|
||||
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to use to create module");
|
||||
|
||||
|
||||
|
||||
|
||||
CanvasAssignmentGroups = await canvas.AssignmentGroups.GetAll(canvasCourseId);
|
||||
|
||||
await LocalCourse.EnsureAllAssignmentGroupsExistInCanvas(canvasCourseId, CanvasAssignmentGroups, canvas);
|
||||
|
||||
@@ -8,17 +8,17 @@ public class CanvasAssignmentGroupService
|
||||
{
|
||||
private readonly IWebRequestor webRequestor;
|
||||
private readonly CanvasServiceUtils utils;
|
||||
private readonly ILogger<CanvasAssignmentGroupService> log;
|
||||
private readonly MyLogger<CanvasAssignmentGroupService> logger;
|
||||
|
||||
public CanvasAssignmentGroupService(
|
||||
IWebRequestor webRequestor,
|
||||
CanvasServiceUtils utils,
|
||||
ILogger<CanvasAssignmentGroupService> logger
|
||||
MyLogger<CanvasAssignmentGroupService> logger
|
||||
)
|
||||
{
|
||||
this.webRequestor = webRequestor;
|
||||
this.utils = utils;
|
||||
this.log = logger;
|
||||
this.logger = logger;
|
||||
}
|
||||
public async Task<IEnumerable<CanvasAssignmentGroup>> GetAll(ulong courseId)
|
||||
{
|
||||
@@ -35,7 +35,7 @@ public class CanvasAssignmentGroupService
|
||||
LocalAssignmentGroup localAssignmentGroup
|
||||
)
|
||||
{
|
||||
log.LogInformation($"creating assignment group: {localAssignmentGroup.Name}");
|
||||
logger.Log($"creating assignment group: {localAssignmentGroup.Name}");
|
||||
var url = $"courses/{canvasCourseId}/assignment_groups";
|
||||
var request = new RestRequest(url);
|
||||
var body = new
|
||||
@@ -59,7 +59,7 @@ public class CanvasAssignmentGroupService
|
||||
LocalAssignmentGroup localAssignmentGroup
|
||||
)
|
||||
{
|
||||
log.LogInformation($"updating assignment group: {localAssignmentGroup.Name}");
|
||||
logger.Log($"updating assignment group: {localAssignmentGroup.Name}");
|
||||
if (localAssignmentGroup.CanvasId == null)
|
||||
throw new Exception("cannot update assignment group if canvas id is null");
|
||||
var url = $"courses/{canvasCourseId}/assignment_groups/{localAssignmentGroup.CanvasId}";
|
||||
|
||||
@@ -12,7 +12,7 @@ public class CanvasService
|
||||
{
|
||||
private readonly IWebRequestor webRequestor;
|
||||
private readonly CanvasServiceUtils utils;
|
||||
private readonly ILogger<CanvasService> logger;
|
||||
private readonly MyLogger<CanvasService> logger;
|
||||
|
||||
public CanvasAssignmentService Assignments { get; }
|
||||
public CanvasAssignmentGroupService AssignmentGroups { get; }
|
||||
@@ -26,7 +26,7 @@ public class CanvasService
|
||||
CanvasAssignmentGroupService AssignmentGroups,
|
||||
CanvasModuleService Modules,
|
||||
CanvasQuizService Quizzes,
|
||||
ILogger<CanvasService> logger
|
||||
MyLogger<CanvasService> logger
|
||||
)
|
||||
{
|
||||
this.webRequestor = webRequestor;
|
||||
@@ -64,8 +64,8 @@ public class CanvasService
|
||||
|
||||
if (data == null)
|
||||
{
|
||||
logger.LogError(response.Content);
|
||||
logger.LogError(response.ResponseUri?.ToString());
|
||||
logger.Error(response.Content);
|
||||
logger.Error(response.ResponseUri?.ToString());
|
||||
throw new Exception("error getting course from canvas");
|
||||
}
|
||||
return data;
|
||||
@@ -95,7 +95,7 @@ public class CanvasService
|
||||
CanvasModuleItem item
|
||||
)
|
||||
{
|
||||
logger.LogInformation($"updating module item {item.Title}");
|
||||
logger.Log($"updating module item {item.Title}");
|
||||
var url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items/{item.Id}";
|
||||
var body = new { module_item = new { title = item.Title, position = item.Position } };
|
||||
var request = new RestRequest(url);
|
||||
@@ -114,7 +114,7 @@ public class CanvasService
|
||||
ulong contentId
|
||||
)
|
||||
{
|
||||
logger.LogInformation($"creating new module item {title}");
|
||||
logger.Log($"creating new module item {title}");
|
||||
var url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items";
|
||||
var body = new
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@ public class FileStorageManager
|
||||
this.logger.Log("Using storage directory: " + _basePath);
|
||||
|
||||
}
|
||||
public async Task SaveCourseAsync(LocalCourse course, LocalCourse? previouslyStoredCourse)
|
||||
public async Task SaveCourseAsync(LocalCourse course, LocalCourse previouslyStoredCourse)
|
||||
{
|
||||
await _saveMarkdownCourse.Save(course, previouslyStoredCourse);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Threading.Tasks.Sources;
|
||||
using LocalModels;
|
||||
using Management.Services;
|
||||
|
||||
@@ -12,16 +13,16 @@ public class MarkdownCourseSaver
|
||||
_basePath = FileConfiguration.GetBasePath();
|
||||
}
|
||||
|
||||
public async Task Save(LocalCourse course, LocalCourse? previouslyStoredCourse)
|
||||
public async Task Save(LocalCourse course, LocalCourse previouslyStoredCourse)
|
||||
{
|
||||
var courseDirectory = $"{_basePath}/{course.Settings.Name}";
|
||||
if (!Directory.Exists(courseDirectory))
|
||||
Directory.CreateDirectory(courseDirectory);
|
||||
await saveSettings(course, courseDirectory);
|
||||
await saveModules(course, courseDirectory);
|
||||
await saveModules(course, courseDirectory, previouslyStoredCourse);
|
||||
}
|
||||
|
||||
private async Task saveModules(LocalCourse course, string courseDirectory)
|
||||
private async Task saveModules(LocalCourse course, string courseDirectory, LocalCourse previouslyStoredCourse)
|
||||
{
|
||||
foreach (var module in course.Modules)
|
||||
{
|
||||
@@ -30,7 +31,7 @@ public class MarkdownCourseSaver
|
||||
Directory.CreateDirectory(moduleDirectory);
|
||||
|
||||
await saveQuizzes(course, module);
|
||||
await saveAssignments(course, module);
|
||||
await saveAssignments(course, module, previouslyStoredCourse);
|
||||
}
|
||||
|
||||
var moduleNames = course.Modules.Select(m => m.Name);
|
||||
@@ -91,7 +92,7 @@ public class MarkdownCourseSaver
|
||||
|
||||
}
|
||||
|
||||
private async Task saveAssignments(LocalCourse course, LocalModule module)
|
||||
private async Task saveAssignments(LocalCourse course, LocalModule module, LocalCourse? previouslyStoredCourse)
|
||||
{
|
||||
var assignmentsDirectory = $"{_basePath}/{course.Settings.Name}/{module.Name}/assignments";
|
||||
if (!Directory.Exists(assignmentsDirectory))
|
||||
@@ -99,11 +100,18 @@ public class MarkdownCourseSaver
|
||||
|
||||
foreach (var assignment in module.Assignments)
|
||||
{
|
||||
var assignmentMarkdown = assignment.ToMarkdown();
|
||||
|
||||
var filePath = assignmentsDirectory + "/" + assignment.Name + ".md";
|
||||
await File.WriteAllTextAsync(filePath, assignmentMarkdown);
|
||||
Console.WriteLine("saving file");
|
||||
var previousModule = previouslyStoredCourse?.Modules.FirstOrDefault(m => m.Name == module.Name);
|
||||
var previousAssignment = previousModule?.Assignments.FirstOrDefault(a => a == assignment);
|
||||
|
||||
if (previousAssignment == null)
|
||||
{
|
||||
var assignmentMarkdown = assignment.ToMarkdown();
|
||||
|
||||
var filePath = assignmentsDirectory + "/" + assignment.Name + ".md";
|
||||
await File.WriteAllTextAsync(filePath, assignmentMarkdown);
|
||||
logger.Trace("saving assignment " + filePath);
|
||||
}
|
||||
}
|
||||
removeOldAssignments(assignmentsDirectory, module);
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Management.Services;
|
||||
|
||||
|
||||
public class MyLogger<T>
|
||||
{
|
||||
private readonly ILogger<T> baseLogger;
|
||||
|
||||
public MyLogger(ILogger<T> baseLogger)
|
||||
{
|
||||
this.baseLogger = baseLogger;
|
||||
}
|
||||
|
||||
public void Log(
|
||||
string message,
|
||||
LogLevel logLevel = LogLevel.Information,
|
||||
[CallerMemberName] string memberName = ""
|
||||
)
|
||||
{
|
||||
var finalMessage = $"[{typeof(T)}.{memberName}] {message}";
|
||||
|
||||
// baseLogger.Log(logLevel, finalMessage);
|
||||
Console.WriteLine(finalMessage);
|
||||
}
|
||||
}
|
||||
49
Management/Services/MyLogger.cs
Normal file
49
Management/Services/MyLogger.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace Management.Services;
|
||||
|
||||
|
||||
public class MyLogger<T>
|
||||
{
|
||||
private readonly ILogger<T> baseLogger;
|
||||
|
||||
public MyLogger(ILogger<T> baseLogger)
|
||||
{
|
||||
this.baseLogger = baseLogger;
|
||||
}
|
||||
|
||||
public void Log(
|
||||
string message,
|
||||
LogLevel logLevel = LogLevel.Information,
|
||||
[CallerMemberName] string memberName = ""
|
||||
)
|
||||
{
|
||||
var finalMessage = $"[{typeof(T)}.{memberName}] {message}";
|
||||
|
||||
baseLogger.Log(logLevel, finalMessage);
|
||||
Console.WriteLine(finalMessage);
|
||||
}
|
||||
|
||||
public void Trace(
|
||||
string message,
|
||||
LogLevel logLevel = LogLevel.Trace,
|
||||
[CallerMemberName] string memberName = ""
|
||||
)
|
||||
{
|
||||
var finalMessage = $"[{typeof(T)}.{memberName}] {message}";
|
||||
|
||||
baseLogger.Log(logLevel, finalMessage);
|
||||
Console.WriteLine(finalMessage);
|
||||
}
|
||||
public void Error(
|
||||
string message,
|
||||
LogLevel logLevel = LogLevel.Error,
|
||||
[CallerMemberName] string memberName = ""
|
||||
)
|
||||
{
|
||||
var finalMessage = $"ERROR: [{typeof(T)}.{memberName}] {message}";
|
||||
|
||||
baseLogger.Log(logLevel, finalMessage);
|
||||
Console.WriteLine(finalMessage);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user