From e9616b18ee263904002df255c53680bae8b02c3c Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Fri, 27 Feb 2026 10:49:21 +0000 Subject: [PATCH] Able to load the latest workflow template for editing --- .../IWorkflowTemplateManager.cs | 2 +- .../Controllers/WorkflowTemplateController.cs | 2 +- .../Repository/WorkflowTemplateRepository.cs | 2 +- .../WorkflowTemplateManager.cs | 24 ++++++++++++------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/e-suite.API.Common/e-suite.API.Common/IWorkflowTemplateManager.cs b/e-suite.API.Common/e-suite.API.Common/IWorkflowTemplateManager.cs index dde909f..b609737 100644 --- a/e-suite.API.Common/e-suite.API.Common/IWorkflowTemplateManager.cs +++ b/e-suite.API.Common/e-suite.API.Common/IWorkflowTemplateManager.cs @@ -104,7 +104,7 @@ public interface IWorkflowTemplateManager Task> GetWorkflowTemplatesAsync(Paging paging, CancellationToken cancellationToken); Task> GetWorkflowTemplateVersionsAsync(Paging paging, CancellationToken cancellationToken); - Task GetWorkflowTemplateVersionAsync(GeneralIdRef generalIdRef, CancellationToken cancellationToken); + Task GetWorkflowTemplateAsync(GeneralIdRef generalIdRef, CancellationToken cancellationToken); Task EditTemplateVersion(AuditUserDetails auditUserDetails, EditWorkflowTemplateVersion template, CancellationToken cancellationToken); Task PatchTemplateVersion(AuditUserDetails auditUserDetails, IGeneralIdRef templateId, PatchWorkflowTemplateVersion patchTemplate, CancellationToken cancellationToken); Task PostTemplateVersion(AuditUserDetails auditUserDetails, CreateWorkflowTemplateVersion template, CancellationToken cancellationToken); diff --git a/e-suite.API/eSuite.API/Controllers/WorkflowTemplateController.cs b/e-suite.API/eSuite.API/Controllers/WorkflowTemplateController.cs index 0c06e60..78f90f7 100644 --- a/e-suite.API/eSuite.API/Controllers/WorkflowTemplateController.cs +++ b/e-suite.API/eSuite.API/Controllers/WorkflowTemplateController.cs @@ -77,7 +77,7 @@ public class WorkflowTemplateController : ESuiteControllerBase CancellationToken cancellationToken = default! ) { - var result = await _workflowTemplateManager.GetWorkflowTemplateVersionAsync(generalIdRef, cancellationToken); + var result = await _workflowTemplateManager.GetWorkflowTemplateAsync(generalIdRef, cancellationToken); return Ok(result); } diff --git a/e-suite.Modules.WorkflowTemplatesManager/Repository/WorkflowTemplateRepository.cs b/e-suite.Modules.WorkflowTemplatesManager/Repository/WorkflowTemplateRepository.cs index 9f8d836..4a6bac1 100644 --- a/e-suite.Modules.WorkflowTemplatesManager/Repository/WorkflowTemplateRepository.cs +++ b/e-suite.Modules.WorkflowTemplatesManager/Repository/WorkflowTemplateRepository.cs @@ -165,7 +165,7 @@ public class WorkflowTemplateRepository : RepositoryBase, IWorkflowTemplateRepos public IQueryable GetWorkflowVersions() { - return DatabaseDbContext.WorkflowVersions; + return DatabaseDbContext.WorkflowVersions.Include( x => x.Domain); } public async Task EditWorkflowVersionAsync(AuditUserDetails auditUserDetails, e_suite.Database.Core.Tables.Workflow.WorkflowVersion workflowVersion, CancellationToken cancellationToken) diff --git a/e-suite.Modules.WorkflowTemplatesManager/WorkflowTemplateManager.cs b/e-suite.Modules.WorkflowTemplatesManager/WorkflowTemplateManager.cs index c83588c..a1c4255 100644 --- a/e-suite.Modules.WorkflowTemplatesManager/WorkflowTemplateManager.cs +++ b/e-suite.Modules.WorkflowTemplatesManager/WorkflowTemplateManager.cs @@ -78,9 +78,13 @@ public class WorkflowTemplateManager : IWorkflowTemplateManager }; } - public async Task GetWorkflowTemplateVersionAsync(GeneralIdRef generalIdRef, CancellationToken cancellationToken) + public async Task GetWorkflowTemplateAsync(GeneralIdRef generalIdRef, CancellationToken cancellationToken) { - var dbWorkflowTemplate = await _workflowTemplateRepository.GetWorkflowVersions().FindByGeneralIdRefAsync(generalIdRef, cancellationToken) ?? throw new NotFoundException("Unable to find Workflow Version"); + var workflow = await _workflowTemplateRepository.GetWorkflows().FindByGeneralIdRefAsync(generalIdRef, cancellationToken) ?? throw new NotFoundException("Unable to find Workflow"); + + var dbWorkflowTemplate = _workflowTemplateRepository.GetWorkflowVersions().Where(x => x.WorkflowId == workflow.Id).OrderByDescending( x => x.Version).First(); + //var dbWorkflowTemplate = await _workflowTemplateRepository.GetWorkflowVersions().FindByGeneralIdRefAsync(generalIdRef, cancellationToken) ?? throw new NotFoundException("Unable to find Workflow Version"); + //var workflowTemplate = _workflowConverter.DeserialiseFromDatabase(dbWorkflowTemplate); return new GetWorkflowTemplateVersion(dbWorkflowTemplate); @@ -101,7 +105,7 @@ public class WorkflowTemplateManager : IWorkflowTemplateManager version.Description = template.Description; version.ActivityNameTemplate = template.ActivityNameTemplate; version.Deleted = false; - version.Version = template.Version; + version.Version = template.Version+1; version.Tasks = template.Tasks; }, cancellationToken); } @@ -142,7 +146,7 @@ public class WorkflowTemplateManager : IWorkflowTemplateManager await _workflowTemplateRepository.AddWorkflow(auditUserDetails, workflow, cancellationToken); - var workflowDomain = await _domainRepository.GetDomainById(template.DomainId, cancellationToken); + var workflowDomain = await _domainRepository.GetDomainById(template.DomainId, cancellationToken) ?? throw new NotFoundException("Unable to find domain"); var dbWorkflowTemplate = new WorkflowVersion { @@ -152,13 +156,15 @@ public class WorkflowTemplateManager : IWorkflowTemplateManager Domain = workflowDomain, Tasks = template.Tasks, Workflow = workflow, + Version = 1 }; - Workflow.Core.WorkflowVersion? workflowTemplate = _workflowConverter.DeserialiseFromDatabase(dbWorkflowTemplate); - if (workflowTemplate is null) - { - throw new InvalidDataException("The workflow template is not valid"); - } + //This will attempt to parse the data onto the internal workflow structure. + //Workflow.Core.WorkflowVersion? workflowTemplate = _workflowConverter.DeserialiseFromDatabase(dbWorkflowTemplate); + //if (workflowTemplate is null) + //{ + // throw new InvalidDataException("The workflow template is not valid"); + //} await _workflowTemplateRepository.AddWorkflowVersion(auditUserDetails, dbWorkflowTemplate, cancellationToken);