diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SingleSourceProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/MorskaT3SingleSourceProcessor.cs similarity index 97% rename from src/Backend/DiunaBI.Plugins.Morska/Processors/T3SingleSourceProcessor.cs rename to src/Backend/DiunaBI.Plugins.Morska/Processors/MorskaT3SingleSourceProcessor.cs index 57c0fa6..15e7602 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SingleSourceProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/MorskaT3SingleSourceProcessor.cs @@ -7,13 +7,13 @@ using Google.Apis.Sheets.v4; namespace DiunaBI.Plugins.Morska.Processors; -public class T3SingleSourceProcessor : MorskaBaseProcessor +public class MorskaT3SingleSourceProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T3.SingleSource"; + public override string ProcessorType => "Morska.Process.T3.SingleSource"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; - private readonly ILogger _logger; + private readonly ILogger _logger; // Configuration properties loaded from layer records private int Year { get; set; } @@ -22,10 +22,10 @@ public class T3SingleSourceProcessor : MorskaBaseProcessor private string? Source { get; set; } private Layer? SourceImportWorker { get; set; } - public T3SingleSourceProcessor( + public MorskaT3SingleSourceProcessor( AppDbContext db, SpreadsheetsResource.ValuesResource googleSheetValues, - ILogger logger) + ILogger logger) { _db = db; _googleSheetValues = googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R1Processor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R1Processor.cs index d5801e6..f7a2ebd 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R1Processor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R1Processor.cs @@ -12,7 +12,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T1R1Processor : MorskaBaseProcessor { - public override string ProcessorType => "T1.R1"; + public override string ProcessorType => "Morska.Process.T1.R1"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R3Processor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R3Processor.cs index 7a4cc34..c61df8a 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R3Processor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T1R3Processor.cs @@ -12,7 +12,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T1R3Processor : MorskaBaseProcessor { - public override string ProcessorType => "T1.R3"; + public override string ProcessorType => "Morska.Process.T1.R3"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesProcessor-TO_REMOVE.cs similarity index 100% rename from src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesProcessor.cs rename to src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesProcessor-TO_REMOVE.cs diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesYearSummaryProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesYearSummaryProcessor-TO_REMOVE.cs similarity index 100% rename from src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesYearSummaryProcessor.cs rename to src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceCopySelectedCodesYearSummaryProcessor-TO_REMOVE.cs diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceSummaryProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceSummaryProcessor.cs index e7f642d..ce7247a 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceSummaryProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceSummaryProcessor.cs @@ -9,7 +9,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T3MultiSourceSummaryProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T3.MultiSourceSummary"; + public override string ProcessorType => "Morska.Process.T3.MultiSourceSummary"; private readonly AppDbContext _db; private readonly ILogger _logger; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceYearSummaryProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceYearSummaryProcessor.cs index 75b8f43..66d1a13 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceYearSummaryProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3MultiSourceYearSummaryProcessor.cs @@ -9,7 +9,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T3MultiSourceYearSummaryProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T3.MultiSourceYearSummary"; + public override string ProcessorType => "Morska.Process.T3.MultiSourceYearSummary"; private readonly AppDbContext _db; private readonly ILogger _logger; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SourceYearSummaryProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SourceYearSummaryProcessor.cs index 0fcd769..2b1f4da 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SourceYearSummaryProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T3SourceYearSummaryProcessor.cs @@ -9,7 +9,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T3SourceYearSummaryProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T3.SourceYearSummary"; + public override string ProcessorType => "Morska.Process.T3.SourceYearSummary"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T4R2Processor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T4R2Processor.cs index e2fccf9..357e877 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T4R2Processor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T4R2Processor.cs @@ -11,7 +11,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T4R2Processor : MorskaBaseProcessor { - public override string ProcessorType => "T4.R2"; + public override string ProcessorType => "Morska.Process.T4.R2"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T4SingleSourceProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T4SingleSourceProcessor.cs index 73368aa..30cdab3 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T4SingleSourceProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T4SingleSourceProcessor.cs @@ -8,7 +8,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T4SingleSourceProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T4.SingleSource"; + public override string ProcessorType => "Morska.Process.T4.SingleSource"; private readonly AppDbContext _db; private readonly SpreadsheetsResource.ValuesResource _googleSheetValues; diff --git a/src/Backend/DiunaBI.Plugins.Morska/Processors/T5LastValuesProcessor.cs b/src/Backend/DiunaBI.Plugins.Morska/Processors/T5LastValuesProcessor.cs index 8bc2d3f..4f290dd 100644 --- a/src/Backend/DiunaBI.Plugins.Morska/Processors/T5LastValuesProcessor.cs +++ b/src/Backend/DiunaBI.Plugins.Morska/Processors/T5LastValuesProcessor.cs @@ -8,7 +8,7 @@ namespace DiunaBI.Plugins.Morska.Processors; public class T5LastValuesProcessor : MorskaBaseProcessor { - public override string ProcessorType => "T5.LastValues"; + public override string ProcessorType => "Morska.Process.T5.LastValues"; private readonly AppDbContext _db; private readonly ILogger _logger; diff --git a/src/Backend/DiunaBI.WebAPI/Controllers/LayersController.cs b/src/Backend/DiunaBI.WebAPI/Controllers/LayersController.cs index 5288bd7..0158348 100644 --- a/src/Backend/DiunaBI.WebAPI/Controllers/LayersController.cs +++ b/src/Backend/DiunaBI.WebAPI/Controllers/LayersController.cs @@ -757,31 +757,66 @@ public class LayersController : Controller } } + [HttpGet] + [Route("CheckProcessors")] + [AllowAnonymous] + public IActionResult CheckProcessors() + { + // get list od all enabled processors and check if they has record 'Plugin' + var enabledProcessors = _db.Layers + .Include(x => x.Records) + .Where(x => + x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ProcessWorker") && + x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True") + ) + .OrderByDescending(x => x.CreatedAt) + .AsNoTracking() + .ToList(); + + _logger.LogInformation("CheckProcessors: Found {ProcessorCount} enabled processors", enabledProcessors.Count); + foreach (var processor in enabledProcessors) + { + var pluginRecord = processor.Records!.FirstOrDefault(x => x.Code == "Plugin"); + if (pluginRecord == null) + { + _logger.LogWarning("CheckProcessors: No Plugin record found for processor {ProcessorName} ({ProcessorId}), skipping", + processor.Name, processor.Id); + continue; + } + + var pluginName = pluginRecord.Desc1; + if (string.IsNullOrEmpty(pluginName)) + { + _logger.LogWarning("CheckProcessors: Empty Plugin name for processor {ProcessorName} ({ProcessorId}), skipping", + processor.Name, processor.Id); + continue; + } + + var processorInstance = _pluginManager.GetProcessor(pluginName); + if (processorInstance == null) + { + _logger.LogWarning("CheckProcessors: Processor {PluginName} not found for {ProcessorName} ({ProcessorId}), skipping", + pluginName, processor.Name, processor.Id); + continue; + } + } + _logger.LogInformation("CheckProcessors: Completed checking processors"); + + return Ok(); + } + [HttpGet] [Route("AddPluginName")] [AllowAnonymous] public IActionResult AddPluginName() { - var record = new Record - { - Id = Guid.NewGuid(), - LayerId = Guid.Parse("eb5b4d0e-1607-4445-bbe5-65b9b8416787"), - Code = "Plugin", - Desc1 = "Morska.Import.Standard", - CreatedAt = DateTime.UtcNow, - ModifiedAt = DateTime.UtcNow, - CreatedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"), - ModifiedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D") - }; - _db.Records.Add(record); - _db.SaveChanges(); - - /* + var importWorkerLayers = _db.Layers .Include(x => x.Records) .Where(x => - x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ImportWorker") && - x.Records!.Any(y => y.Code == "ImportType" && y.Desc1 == "Import-D3") + x.Records!.Any(y => y.Code == "Type" && y.Desc1 == "ProcessWorker") && + x.Records!.Any(y => y.Code == "IsEnabled" && y.Desc1 == "True") && + x.Records!.Any(y => y.Code == "ProcessType" && y.Desc1 == "T1-R3") ) .OrderByDescending(x => x.CreatedAt) .AsNoTracking() @@ -794,21 +829,20 @@ public class LayersController : Controller Id = Guid.NewGuid(), LayerId = importWorker.Id, Code = "Plugin", - Desc1 = "Morska.Import.D3", + Desc1 = "Morska.Process.T1.R3", CreatedAt = DateTime.UtcNow, ModifiedAt = DateTime.UtcNow, CreatedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D"), ModifiedById = Guid.Parse("F392209E-123E-4651-A5A4-0B1D6CF9FF9D") }; - //_db.Records.Add(record); + _db.Records.Add(record); } - //_db.SaveChanges(); - */ + _db.SaveChanges(); + return Ok(); } - private static void WriteToConsole(params string[] messages) { foreach (var message in messages) diff --git a/tools/http-tests/AutoProcess.http b/tools/http-tests/AutoProcess.http index 97419fc..c807c75 100644 --- a/tools/http-tests/AutoProcess.http +++ b/tools/http-tests/AutoProcess.http @@ -1,3 +1,3 @@ ### -GET http://localhost:5400/api/Layers/AutoProcess/10763478CB738D4ecb2h76g803478CB738D4e +GET http://localhost:5400/api/Layers/CheckProcessors Timeout: 500000 diff --git a/tools/http-tests/BackupDatabase.http b/tools/http-tests/BackupDatabase.http index 539564b..043e64e 100644 --- a/tools/http-tests/BackupDatabase.http +++ b/tools/http-tests/BackupDatabase.http @@ -1,2 +1,2 @@ ### -GET http://localhost:5400/api/Admin/BackupDatabase/10763478CB738D4ecb2h76g803478CB738D4e +GET http://localhost:5400/api/Layers/AddPluginName