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:
@@ -16,7 +16,7 @@
|
|||||||
@inject CanvasService canvas
|
@inject CanvasService canvas
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject QuizEditorContext quizContext
|
@inject QuizEditorContext quizContext
|
||||||
@inject ILogger<QuizFormPage> logger
|
@inject MyLogger<QuizFormPage> logger
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
@@ -45,12 +45,12 @@
|
|||||||
if (loading)
|
if (loading)
|
||||||
{
|
{
|
||||||
loading = false;
|
loading = false;
|
||||||
logger.LogInformation($"loading quiz {CourseName} {QuizName}");
|
logger.Log($"loading quiz {CourseName} {QuizName}");
|
||||||
if (planner.LocalCourse == null)
|
if (planner.LocalCourse == null)
|
||||||
{
|
{
|
||||||
var courses = await fileStorageManager.LoadSavedCourses();
|
var courses = await fileStorageManager.LoadSavedCourses();
|
||||||
planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName);
|
planner.LocalCourse = courses.First(c => c.Settings.Name == CourseName);
|
||||||
logger.LogInformation($"set course to '{planner.LocalCourse?.Settings.Name}'");
|
logger.Log($"set course to '{planner.LocalCourse?.Settings.Name}'");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quizContext.Quiz == null)
|
if (quizContext.Quiz == null)
|
||||||
@@ -62,7 +62,7 @@
|
|||||||
.FirstOrDefault(q => q.Name == QuizName);
|
.FirstOrDefault(q => q.Name == QuizName);
|
||||||
|
|
||||||
quizContext.Quiz = quiz;
|
quizContext.Quiz = quiz;
|
||||||
logger.LogInformation($"set quiz to '{quizContext.Quiz?.Name}'");
|
logger.Log($"set quiz to '{quizContext.Quiz?.Name}'");
|
||||||
}
|
}
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ global using Management.Web.Shared.Components.Forms;
|
|||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.AspNetCore.Components.Web;
|
using Microsoft.AspNetCore.Components.Web;
|
||||||
using dotenv.net;
|
using dotenv.net;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server;
|
||||||
|
using Microsoft.AspNetCore.Hosting.Server.Features;
|
||||||
|
|
||||||
DotEnv.Load();
|
DotEnv.Load();
|
||||||
|
|
||||||
@@ -60,6 +62,8 @@ builder.Services.AddSignalR(e =>
|
|||||||
e.MaximumReceiveMessageSize = 102400000;
|
e.MaximumReceiveMessageSize = 102400000;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
@@ -79,4 +83,14 @@ app.UseRouting();
|
|||||||
app.MapBlazorHub();
|
app.MapBlazorHub();
|
||||||
app.MapFallbackToPage("/_Host");
|
app.MapFallbackToPage("/_Host");
|
||||||
|
|
||||||
app.Run();
|
|
||||||
|
app.Start();
|
||||||
|
|
||||||
|
var addresses = app.Services.GetService<IServer>().Features.Get<IServerAddressesFeature>().Addresses;
|
||||||
|
|
||||||
|
foreach (var address in addresses)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Running at: " + address);
|
||||||
|
}
|
||||||
|
|
||||||
|
app.WaitForShutdown();
|
||||||
@@ -167,31 +167,16 @@
|
|||||||
<div class="flex-grow-1 d-flex flex-column">
|
<div class="flex-grow-1 d-flex flex-column">
|
||||||
@if (assignmentContext.Assignment != null)
|
@if (assignmentContext.Assignment != null)
|
||||||
{
|
{
|
||||||
<div class="m-1">
|
@* <ButtonSelect
|
||||||
<label class="form-label">
|
|
||||||
Name
|
|
||||||
</label>
|
|
||||||
<input class="form-control" @bind="name" @oninput="handleNameChange" />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ButtonSelect
|
|
||||||
Label="Assignment Group"
|
Label="Assignment Group"
|
||||||
Options="planner.LocalCourse?.Settings.AssignmentGroups"
|
Options="planner.LocalCourse?.Settings.AssignmentGroups"
|
||||||
GetName="(g) => g?.Name"
|
GetName="(g) => g?.Name"
|
||||||
OnSelect="(g) => setAssignmentGroup(g)"
|
OnSelect="(g) => setAssignmentGroup(g)"
|
||||||
SelectedOption="selectedAssignmentGroup"
|
SelectedOption="selectedAssignmentGroup"
|
||||||
/>
|
/> *@
|
||||||
<div class="m-1 flex-grow-1">
|
<div class="m-1 flex-grow-1">
|
||||||
<AssignmentMarkdownEditor />
|
<AssignmentMarkdownEditor />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@* <div class="container">
|
|
||||||
<RubricMarkdownEditor />
|
|
||||||
<hr>
|
|
||||||
<div class="mx-5 px-5">
|
|
||||||
<SubmissionTypeSelector />
|
|
||||||
</div>
|
|
||||||
</div> *@
|
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -55,15 +55,6 @@
|
|||||||
{
|
{
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@* if (assignmentContext.Assignment != null)
|
|
||||||
{
|
|
||||||
var newAssignment = assignmentContext.Assignment with
|
|
||||||
{
|
|
||||||
Description = newRawAssignment
|
|
||||||
};
|
|
||||||
assignmentContext.SaveAssignment(newAssignment);
|
|
||||||
} *@
|
|
||||||
}
|
}
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
@inject FileStorageManager fileStorageManager
|
@inject FileStorageManager fileStorageManager
|
||||||
@inject CoursePlanner planner
|
@inject CoursePlanner planner
|
||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
@inject ILogger<CurrentFiles> logger
|
@inject MyLogger<CurrentFiles> logger
|
||||||
|
|
||||||
@code
|
@code
|
||||||
{
|
{
|
||||||
@@ -17,10 +17,8 @@
|
|||||||
|
|
||||||
void handleClick(MouseEventArgs e, LocalCourse course)
|
void handleClick(MouseEventArgs e, LocalCourse course)
|
||||||
{
|
{
|
||||||
@* logger.LogInformation("here"); *@
|
|
||||||
planner.LocalCourse = course;
|
planner.LocalCourse = course;
|
||||||
Navigation.NavigateTo("/course/" + course.Settings.Name);
|
Navigation.NavigateTo("/course/" + course.Settings.Name);
|
||||||
Console.WriteLine("navigated to course detail");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
@inject NavigationManager Navigation
|
@inject NavigationManager Navigation
|
||||||
@inject AssignmentEditorContext assignmentContext
|
@inject AssignmentEditorContext assignmentContext
|
||||||
|
|
||||||
@inject ILogger<AssignmentInDay> logger
|
@inject MyLogger<AssignmentInDay> logger
|
||||||
@inherits DroppableAssignment
|
@inherits DroppableAssignment
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
{
|
{
|
||||||
assignmentContext.Assignment = Assignment;
|
assignmentContext.Assignment = Assignment;
|
||||||
Navigation.NavigateTo("/course/" + planner.LocalCourse.Settings.Name + "/assignment/" + Assignment.Name);
|
Navigation.NavigateTo("/course/" + planner.LocalCourse.Settings.Name + "/assignment/" + Assignment.Name);
|
||||||
logger.LogInformation("navigating to assignment page");
|
logger.Log("navigating to assignment page");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"DetailedErrors": true,
|
"DetailedErrors": true,
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Error",
|
||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Error"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
"Default": "Information",
|
"Default": "Error",
|
||||||
"Microsoft.AspNetCore": "Warning"
|
"Microsoft.AspNetCore": "Warning"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -49,15 +49,15 @@ public class AssignmentEditorContext
|
|||||||
? currentModule with
|
? currentModule with
|
||||||
{
|
{
|
||||||
Assignments = currentModule.Assignments
|
Assignments = currentModule.Assignments
|
||||||
.Select(a => a == Assignment ? newAssignment : a)
|
.Select(a => a.Name == Assignment.Name ? newAssignment : a)
|
||||||
.ToArray()
|
.ToArray()
|
||||||
}
|
}
|
||||||
: m
|
: m
|
||||||
)
|
)
|
||||||
.ToArray();
|
.ToArray();
|
||||||
|
planner.LocalCourse = planner.LocalCourse with { Modules = updatedModules };
|
||||||
|
|
||||||
Assignment = newAssignment;
|
Assignment = newAssignment;
|
||||||
planner.LocalCourse = planner.LocalCourse with { Modules = updatedModules };
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,17 +7,20 @@ using CanvasModel.Modules;
|
|||||||
using Management.Services.Canvas;
|
using Management.Services.Canvas;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using CanvasModel.Quizzes;
|
using CanvasModel.Quizzes;
|
||||||
|
using Management.Services;
|
||||||
|
|
||||||
namespace Management.Planner;
|
namespace Management.Planner;
|
||||||
|
|
||||||
public class CoursePlanner
|
public class CoursePlanner
|
||||||
{
|
{
|
||||||
|
private readonly MyLogger<CoursePlanner> logger;
|
||||||
private readonly FileStorageManager fileStorageManager;
|
private readonly FileStorageManager fileStorageManager;
|
||||||
private readonly CanvasService canvas;
|
private readonly CanvasService canvas;
|
||||||
public bool LoadingCanvasData { get; internal set; } = false;
|
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.fileStorageManager = fileStorageManager;
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
}
|
}
|
||||||
@@ -41,6 +44,14 @@ public class CoursePlanner
|
|||||||
|
|
||||||
var verifiedCourse = value.GeneralCourseCleanup();
|
var verifiedCourse = value.GeneralCourseCleanup();
|
||||||
|
|
||||||
|
if (_localCourse == null)
|
||||||
|
{
|
||||||
|
_localCourse = verifiedCourse;
|
||||||
|
_lastSavedCourse = verifiedCourse;
|
||||||
|
StateHasChanged?.Invoke();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_debounceTimer?.Dispose();
|
_debounceTimer?.Dispose();
|
||||||
_debounceTimer = new Timer(
|
_debounceTimer = new Timer(
|
||||||
async (_) => await saveCourseToFile(verifiedCourse),
|
async (_) => await saveCourseToFile(verifiedCourse),
|
||||||
@@ -61,16 +72,25 @@ public class CoursePlanner
|
|||||||
// ignore initial load of course
|
// ignore initial load of course
|
||||||
if (LocalCourse == null)
|
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);
|
await fileStorageManager.SaveCourseAsync(courseAsOfDebounce, null);
|
||||||
_lastSavedCourse = courseAsOfDebounce;
|
_lastSavedCourse = courseAsOfDebounce;
|
||||||
}
|
}
|
||||||
else
|
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;
|
var courseToSave = LocalCourse;
|
||||||
await fileStorageManager.SaveCourseAsync(courseToSave, _lastSavedCourse);
|
await fileStorageManager.SaveCourseAsync(courseToSave, _lastSavedCourse);
|
||||||
_lastSavedCourse = courseToSave;
|
_lastSavedCourse = courseToSave;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -115,7 +135,7 @@ public class CoursePlanner
|
|||||||
|
|
||||||
public async Task CreateModule(LocalModule newModule)
|
public async Task CreateModule(LocalModule newModule)
|
||||||
{
|
{
|
||||||
if(LocalCourse == null)
|
if (LocalCourse == null)
|
||||||
return;
|
return;
|
||||||
var canvasCourseId =
|
var canvasCourseId =
|
||||||
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to use to create module");
|
LocalCourse.Settings.CanvasId ?? throw new Exception("no course canvas id to use to create module");
|
||||||
@@ -132,7 +152,7 @@ public class CoursePlanner
|
|||||||
|
|
||||||
public async Task SyncAssignmentGroups()
|
public async Task SyncAssignmentGroups()
|
||||||
{
|
{
|
||||||
if(LocalCourse == null)
|
if (LocalCourse == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var canvasCourseId =
|
var canvasCourseId =
|
||||||
|
|||||||
@@ -8,17 +8,17 @@ public class CanvasAssignmentGroupService
|
|||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor;
|
private readonly IWebRequestor webRequestor;
|
||||||
private readonly CanvasServiceUtils utils;
|
private readonly CanvasServiceUtils utils;
|
||||||
private readonly ILogger<CanvasAssignmentGroupService> log;
|
private readonly MyLogger<CanvasAssignmentGroupService> logger;
|
||||||
|
|
||||||
public CanvasAssignmentGroupService(
|
public CanvasAssignmentGroupService(
|
||||||
IWebRequestor webRequestor,
|
IWebRequestor webRequestor,
|
||||||
CanvasServiceUtils utils,
|
CanvasServiceUtils utils,
|
||||||
ILogger<CanvasAssignmentGroupService> logger
|
MyLogger<CanvasAssignmentGroupService> logger
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.webRequestor = webRequestor;
|
this.webRequestor = webRequestor;
|
||||||
this.utils = utils;
|
this.utils = utils;
|
||||||
this.log = logger;
|
this.logger = logger;
|
||||||
}
|
}
|
||||||
public async Task<IEnumerable<CanvasAssignmentGroup>> GetAll(ulong courseId)
|
public async Task<IEnumerable<CanvasAssignmentGroup>> GetAll(ulong courseId)
|
||||||
{
|
{
|
||||||
@@ -35,7 +35,7 @@ public class CanvasAssignmentGroupService
|
|||||||
LocalAssignmentGroup localAssignmentGroup
|
LocalAssignmentGroup localAssignmentGroup
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
log.LogInformation($"creating assignment group: {localAssignmentGroup.Name}");
|
logger.Log($"creating assignment group: {localAssignmentGroup.Name}");
|
||||||
var url = $"courses/{canvasCourseId}/assignment_groups";
|
var url = $"courses/{canvasCourseId}/assignment_groups";
|
||||||
var request = new RestRequest(url);
|
var request = new RestRequest(url);
|
||||||
var body = new
|
var body = new
|
||||||
@@ -59,7 +59,7 @@ public class CanvasAssignmentGroupService
|
|||||||
LocalAssignmentGroup localAssignmentGroup
|
LocalAssignmentGroup localAssignmentGroup
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
log.LogInformation($"updating assignment group: {localAssignmentGroup.Name}");
|
logger.Log($"updating assignment group: {localAssignmentGroup.Name}");
|
||||||
if (localAssignmentGroup.CanvasId == null)
|
if (localAssignmentGroup.CanvasId == null)
|
||||||
throw new Exception("cannot update assignment group if canvas id is null");
|
throw new Exception("cannot update assignment group if canvas id is null");
|
||||||
var url = $"courses/{canvasCourseId}/assignment_groups/{localAssignmentGroup.CanvasId}";
|
var url = $"courses/{canvasCourseId}/assignment_groups/{localAssignmentGroup.CanvasId}";
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ public class CanvasService
|
|||||||
{
|
{
|
||||||
private readonly IWebRequestor webRequestor;
|
private readonly IWebRequestor webRequestor;
|
||||||
private readonly CanvasServiceUtils utils;
|
private readonly CanvasServiceUtils utils;
|
||||||
private readonly ILogger<CanvasService> logger;
|
private readonly MyLogger<CanvasService> logger;
|
||||||
|
|
||||||
public CanvasAssignmentService Assignments { get; }
|
public CanvasAssignmentService Assignments { get; }
|
||||||
public CanvasAssignmentGroupService AssignmentGroups { get; }
|
public CanvasAssignmentGroupService AssignmentGroups { get; }
|
||||||
@@ -26,7 +26,7 @@ public class CanvasService
|
|||||||
CanvasAssignmentGroupService AssignmentGroups,
|
CanvasAssignmentGroupService AssignmentGroups,
|
||||||
CanvasModuleService Modules,
|
CanvasModuleService Modules,
|
||||||
CanvasQuizService Quizzes,
|
CanvasQuizService Quizzes,
|
||||||
ILogger<CanvasService> logger
|
MyLogger<CanvasService> logger
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
this.webRequestor = webRequestor;
|
this.webRequestor = webRequestor;
|
||||||
@@ -64,8 +64,8 @@ public class CanvasService
|
|||||||
|
|
||||||
if (data == null)
|
if (data == null)
|
||||||
{
|
{
|
||||||
logger.LogError(response.Content);
|
logger.Error(response.Content);
|
||||||
logger.LogError(response.ResponseUri?.ToString());
|
logger.Error(response.ResponseUri?.ToString());
|
||||||
throw new Exception("error getting course from canvas");
|
throw new Exception("error getting course from canvas");
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
@@ -95,7 +95,7 @@ public class CanvasService
|
|||||||
CanvasModuleItem item
|
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 url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items/{item.Id}";
|
||||||
var body = new { module_item = new { title = item.Title, position = item.Position } };
|
var body = new { module_item = new { title = item.Title, position = item.Position } };
|
||||||
var request = new RestRequest(url);
|
var request = new RestRequest(url);
|
||||||
@@ -114,7 +114,7 @@ public class CanvasService
|
|||||||
ulong contentId
|
ulong contentId
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
logger.LogInformation($"creating new module item {title}");
|
logger.Log($"creating new module item {title}");
|
||||||
var url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items";
|
var url = $"courses/{canvasCourseId}/modules/{canvasModuleId}/items";
|
||||||
var body = new
|
var body = new
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class FileStorageManager
|
|||||||
this.logger.Log("Using storage directory: " + _basePath);
|
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);
|
await _saveMarkdownCourse.Save(course, previouslyStoredCourse);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Threading.Tasks.Sources;
|
||||||
using LocalModels;
|
using LocalModels;
|
||||||
using Management.Services;
|
using Management.Services;
|
||||||
|
|
||||||
@@ -12,16 +13,16 @@ public class MarkdownCourseSaver
|
|||||||
_basePath = FileConfiguration.GetBasePath();
|
_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}";
|
var courseDirectory = $"{_basePath}/{course.Settings.Name}";
|
||||||
if (!Directory.Exists(courseDirectory))
|
if (!Directory.Exists(courseDirectory))
|
||||||
Directory.CreateDirectory(courseDirectory);
|
Directory.CreateDirectory(courseDirectory);
|
||||||
await saveSettings(course, 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)
|
foreach (var module in course.Modules)
|
||||||
{
|
{
|
||||||
@@ -30,7 +31,7 @@ public class MarkdownCourseSaver
|
|||||||
Directory.CreateDirectory(moduleDirectory);
|
Directory.CreateDirectory(moduleDirectory);
|
||||||
|
|
||||||
await saveQuizzes(course, module);
|
await saveQuizzes(course, module);
|
||||||
await saveAssignments(course, module);
|
await saveAssignments(course, module, previouslyStoredCourse);
|
||||||
}
|
}
|
||||||
|
|
||||||
var moduleNames = course.Modules.Select(m => m.Name);
|
var moduleNames = course.Modules.Select(m => m.Name);
|
||||||
@@ -91,19 +92,26 @@ 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";
|
var assignmentsDirectory = $"{_basePath}/{course.Settings.Name}/{module.Name}/assignments";
|
||||||
if (!Directory.Exists(assignmentsDirectory))
|
if (!Directory.Exists(assignmentsDirectory))
|
||||||
Directory.CreateDirectory(assignmentsDirectory);
|
Directory.CreateDirectory(assignmentsDirectory);
|
||||||
|
|
||||||
foreach (var assignment in module.Assignments)
|
foreach (var assignment in module.Assignments)
|
||||||
|
{
|
||||||
|
|
||||||
|
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 assignmentMarkdown = assignment.ToMarkdown();
|
||||||
|
|
||||||
var filePath = assignmentsDirectory + "/" + assignment.Name + ".md";
|
var filePath = assignmentsDirectory + "/" + assignment.Name + ".md";
|
||||||
await File.WriteAllTextAsync(filePath, assignmentMarkdown);
|
await File.WriteAllTextAsync(filePath, assignmentMarkdown);
|
||||||
Console.WriteLine("saving file");
|
logger.Trace("saving assignment " + filePath);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
removeOldAssignments(assignmentsDirectory, module);
|
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