diff --git a/SeaHaven.Services/Implementation/ServicesRegistryService.cs b/SeaHaven.Services/Implementation/ServicesRegistryService.cs index 1a702bb..29bd32b 100644 --- a/SeaHaven.Services/Implementation/ServicesRegistryService.cs +++ b/SeaHaven.Services/Implementation/ServicesRegistryService.cs @@ -5,6 +5,7 @@ using SeaHaven.DataServices.Interfaces; using SeaHaven.DataServices.Models; using SeaHaven.Services.DTOs; using SeaHaven.Services.Exceptions; +using SeaHaven.Services.Helpers; using SeaHaven.Services.Interfaces; namespace SeaHaven.Services.Implementation @@ -34,8 +35,9 @@ namespace SeaHaven.Services.Implementation public async Task> GetAllAsync(bool? isActive, WorkOrderType? workOrderType, CancellationToken cancellationToken) { - ValidateWorkOrderTypeFilter(workOrderType); - var rows = await _dataService.GetServiceRowsAsync(isActive, workOrderType, cancellationToken); + var catalogType = WorkOrderCatalogType.For(workOrderType); + ValidateWorkOrderTypeFilter(catalogType); + var rows = await _dataService.GetServiceRowsAsync(isActive, catalogType, cancellationToken); return rows.Select(MapToDto).ToList(); } diff --git a/SeaHaven.Services/Implementation/WorkOrderCompletionService.cs b/SeaHaven.Services/Implementation/WorkOrderCompletionService.cs index f2f0895..c748c3d 100644 --- a/SeaHaven.Services/Implementation/WorkOrderCompletionService.cs +++ b/SeaHaven.Services/Implementation/WorkOrderCompletionService.cs @@ -33,7 +33,7 @@ namespace SeaHaven.Services.Implementation public async Task> GetTemplatesAsync(string? serviceKey, WorkOrderType? workOrderType) { - var rows = await _templateData.GetActiveAsync(serviceKey, workOrderType); + var rows = await _templateData.GetActiveAsync(serviceKey, WorkOrderCatalogType.For(workOrderType)); return rows.Select(WorkOrderDetailService.MapTemplate).ToList(); } diff --git a/SeaHavenIndustries.Tests/WorkOrderOverdueTypeTests.cs b/SeaHavenIndustries.Tests/WorkOrderOverdueTypeTests.cs index 0b3657b..35c04e6 100644 --- a/SeaHavenIndustries.Tests/WorkOrderOverdueTypeTests.cs +++ b/SeaHavenIndustries.Tests/WorkOrderOverdueTypeTests.cs @@ -278,6 +278,56 @@ public class WorkOrderOverdueTypeTests Assert.Equal("PM Completion", detail.Completion.Template!.Name); } + [Fact] + public async Task ListServices_Overdue_ReturnsPmCatalog() + { + await using var context = NewContext(); + SeedServices(context); + await context.SaveChangesAsync(); + + var services = await new ServicesRegistryService(new ServicesRegistryDataService(context)) + .GetAllAsync(true, WorkOrderType.Overdue, CancellationToken.None); + + Assert.Equal(new[] { PmServiceId }, services.Select(s => s.Id).ToArray()); + } + + [Fact] + public async Task ListTemplates_Overdue_ReturnsPmTemplates() + { + await using var context = NewContext(); + context.CompletionDocTemplates.AddRange( + new CompletionDocTemplate + { + Name = "PM Completion", + ServiceKey = "pm-generic", + WorkOrderType = WorkOrderType.PM, + TemplateUrl = "https://example.com/pm.pdf", + IsActive = true + }, + new CompletionDocTemplate + { + Name = "Reactive Completion", + ServiceKey = "reactive-generic", + WorkOrderType = WorkOrderType.Reactive, + TemplateUrl = "https://example.com/reactive.pdf", + IsActive = true + }); + await context.SaveChangesAsync(); + + var service = new WorkOrderCompletionService( + new WorkOrderCompletionDataService(context), + new CompletionDocTemplateDataService(context), + new WorkOrderDetailDataService(context), + new WorkOrderAuditService( + new WorkOrderAuditDataService(context), + new WorkOrderFieldLockService(new WorkOrderFieldLockDataService(context))), + WorkOrderAccountTestHelpers.Resolver(context)); + + var templates = await service.GetTemplatesAsync(null, WorkOrderType.Overdue); + + Assert.Equal(new[] { "PM Completion" }, templates.Select(t => t.Name).ToArray()); + } + [Fact] public async Task Search_TypeOverdue_ReturnsOverdueTypeOnly_NotPastDueRows() {