diff --git a/SfeduSchedule/Program.cs b/SfeduSchedule/Program.cs index 9b0790f..a3f3f0f 100644 --- a/SfeduSchedule/Program.cs +++ b/SfeduSchedule/Program.cs @@ -68,8 +68,11 @@ builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration) // Загружаем плагины (изолированно), даём им зарегистрировать DI и подключаем контроллеры var loaded = PluginLoader.LoadPlugins(pluginsPath); +Console.WriteLine("Plugins count: " + loaded.Count); foreach (var p in loaded) { + Console.WriteLine("Loading plugin: " + p.Instance.Name); + // DI из плагина p.Instance.ConfigureServices(builder.Services); diff --git a/SfeduSchedule/Services/ModeusService.cs b/SfeduSchedule/Services/ModeusService.cs index 07c28d9..c159da6 100644 --- a/SfeduSchedule/Services/ModeusService.cs +++ b/SfeduSchedule/Services/ModeusService.cs @@ -84,38 +84,61 @@ namespace SfeduSchedule.Services return personId; } - public async Task GetIcsAsync(ModeusScheduleRequest msr) + public async Task GetScheduleJsonAsync(ModeusScheduleRequest msr) { var schedule = await GetScheduleAsync(msr); if (schedule == null) { - _logger.LogError("GetIcsAsync: Schedule is null. Request: {@msr}", msr); - return null; + _logger.LogError("GetScheduleJsonAsync: Schedule is null. Request: {@msr}", msr); + throw new Exception("Schedule is null"); // Недопустимое состояние } Schedule? scheduleJson; try { scheduleJson = Schedule.FromJson(schedule); + switch (scheduleJson) + { + case null: + _logger.LogError( + "GetScheduleJsonAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {@msr}", + schedule, msr); + break; + case { Embedded: null }: + _logger.LogError( + "GetScheduleJsonAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {@msr}", + scheduleJson, msr); + break; + case { Embedded.Events: null }: + _logger.LogError( + "GetScheduleJsonAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {@msr}", + scheduleJson.Embedded, msr); + break; + case { Embedded.Events.Length: 0 }: + _logger.LogWarning( + "GetScheduleJsonAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {@msr}", + scheduleJson.Embedded, msr); + break; + default: + return scheduleJson; + } } catch (Exception ex) { - _logger.LogError(ex, "GetIcsAsync: Deserialization failed. Schedule: {Schedule}\n Request: {@msr}", schedule, msr); - return null; + _logger.LogError(ex, + "GetScheduleJsonAsync: Deserialization failed. Schedule: {Schedule}\n Request: {@msr}", schedule, + msr); } - if (scheduleJson?.Embedded?.Events is not { Length: > 0 } events) + return null; + } + + public async Task GetIcsAsync(ModeusScheduleRequest msr) + { + Schedule? scheduleJson = await GetScheduleJsonAsync(msr); + if (scheduleJson == null) { - if (scheduleJson == null) - _logger.LogError("GetIcsAsync: scheduleJson is null. Schedule: {Schedule}\n Request: {@msr}", schedule, msr); - else if (scheduleJson.Embedded == null) - _logger.LogError("GetIcsAsync: scheduleJson.Embedded is null. scheduleJson: {@scheduleJson}\n Request: {@msr}", scheduleJson, msr); - else if (scheduleJson.Embedded.Events == null) - _logger.LogError("GetIcsAsync: scheduleJson.Embedded.Events is null. Embedded: {@Embedded}\n Request: {@msr}", - scheduleJson.Embedded, msr); - else - _logger.LogWarning("GetIcsAsync: scheduleJson.Embedded.Events is empty. Embedded: {@Embedded}\n Request: {@msr}", - scheduleJson.Embedded, msr); + _logger.LogError("GetIcsAsync: scheduleJson is null after deserialization. Request: {@msr}", msr); return null; }