diff --git a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs index 178704b..6191c6d 100644 --- a/Endpoint/Controllers/V1/Configuration/ScheduleController.cs +++ b/Endpoint/Controllers/V1/Configuration/ScheduleController.cs @@ -2,6 +2,7 @@ using Cronos; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; @@ -191,15 +192,20 @@ public class ScheduleController(ILogger logger, IOptionsSnap filePaths.Add((filePath, defaultCampus[i])); } - var sync = (ScheduleSynchronizer)ActivatorUtilities.GetServiceOrCreateInstance(provider, typeof(ScheduleSynchronizer)); - if (force) { - dbContext.Lessons.RemoveRange(dbContext.Lessons.ToList()); + dbContext.Lessons.RemoveRange(await dbContext.Lessons.ToListAsync()); await dbContext.SaveChangesAsync(); } - _ = sync.StartSync(filePaths, CancellationToken.None); + var scopeFactory = provider.GetRequiredService(); + _ = Task.Run(async () => + { + using var scope = scopeFactory.CreateScope(); + var sync = scope.ServiceProvider.GetRequiredService(); + + await sync.StartSync(filePaths, CancellationToken.None); + }, CancellationToken.None); return Ok(); }