Now able to create an activity instance. Will send a message to progress the instance after creation.
This commit is contained in:
parent
a9d5e13c2e
commit
ad8363b5d6
@ -1,10 +1,12 @@
|
|||||||
using eSuite.Core.Miscellaneous;
|
using eSuite.Core.Miscellaneous;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace e_suite.API.Common;
|
namespace e_suite.API.Common;
|
||||||
|
|
||||||
public class CreateActivity
|
public class CreateActivity
|
||||||
{
|
{
|
||||||
public GeneralIdRef WorkflowTemplateVersionId { get; set; }
|
public GeneralIdRef WorkflowTemplateId { get; set; }
|
||||||
|
|
||||||
public string ActivityName { get; set; }
|
[Required]
|
||||||
|
public string ActivityName { get; set; } = string.Empty;
|
||||||
}
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
using e_suite.Database.Audit;
|
||||||
|
|
||||||
|
namespace e_suite.API.Common;
|
||||||
|
|
||||||
|
public interface IActivityManager
|
||||||
|
{
|
||||||
|
Task CreateActivity(AuditUserDetails auditUserDetails, CreateActivity template, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
using e_suite.Database.Audit;
|
||||||
|
using e_suite.Database.Core;
|
||||||
|
using e_suite.Database.Core.Tables.Activity;
|
||||||
|
|
||||||
|
namespace e_suite.API.Common.repository;
|
||||||
|
|
||||||
|
public interface IActivityRepository : IRepository
|
||||||
|
{
|
||||||
|
Task CreateActivityInstanceAsync(AuditUserDetails auditUserDetails, Activity template, CancellationToken cancellationToken);
|
||||||
|
}
|
||||||
@ -13,6 +13,7 @@ public abstract class InternalMessagingControllerTestBase : TestBase
|
|||||||
protected Mock<ISigmaImportMessageSender> _sigmaImportMessageSenderMock = null!;
|
protected Mock<ISigmaImportMessageSender> _sigmaImportMessageSenderMock = null!;
|
||||||
protected Mock<IDatabaseMessageSender> _databaseMessageSenderMock = null!;
|
protected Mock<IDatabaseMessageSender> _databaseMessageSenderMock = null!;
|
||||||
protected Mock<IEFlowSyncMessageSender> _eFlowSyncMessageSenderMock = null!;
|
protected Mock<IEFlowSyncMessageSender> _eFlowSyncMessageSenderMock = null!;
|
||||||
|
protected Mock<IActivityMessageSender> _activityMessageSenderMock = null!;
|
||||||
protected InternalMessagingController _internalMessagingController = null!;
|
protected InternalMessagingController _internalMessagingController = null!;
|
||||||
|
|
||||||
public override async Task Setup()
|
public override async Task Setup()
|
||||||
@ -22,9 +23,10 @@ public abstract class InternalMessagingControllerTestBase : TestBase
|
|||||||
_sigmaImportMessageSenderMock = new Mock<ISigmaImportMessageSender>();
|
_sigmaImportMessageSenderMock = new Mock<ISigmaImportMessageSender>();
|
||||||
_databaseMessageSenderMock = new Mock<IDatabaseMessageSender>();
|
_databaseMessageSenderMock = new Mock<IDatabaseMessageSender>();
|
||||||
_eFlowSyncMessageSenderMock = new Mock<IEFlowSyncMessageSender>();
|
_eFlowSyncMessageSenderMock = new Mock<IEFlowSyncMessageSender>();
|
||||||
|
_activityMessageSenderMock = new Mock<IActivityMessageSender>();
|
||||||
|
|
||||||
_internalMessagingController =
|
_internalMessagingController =
|
||||||
new InternalMessagingController(_sigmaImportMessageSenderMock.Object, _databaseMessageSenderMock.Object, _eFlowSyncMessageSenderMock.Object);
|
new InternalMessagingController(_sigmaImportMessageSenderMock.Object, _databaseMessageSenderMock.Object, _eFlowSyncMessageSenderMock.Object, _activityMessageSenderMock.Object);
|
||||||
|
|
||||||
const long id = -1;
|
const long id = -1;
|
||||||
const string email = "email@mail.test";
|
const string email = "email@mail.test";
|
||||||
|
|||||||
@ -10,6 +10,13 @@ namespace eSuite.API.Controllers;
|
|||||||
[ApiController]
|
[ApiController]
|
||||||
public class ActivityController : ESuiteControllerBase
|
public class ActivityController : ESuiteControllerBase
|
||||||
{
|
{
|
||||||
|
private readonly IActivityManager _activityManager;
|
||||||
|
|
||||||
|
public ActivityController(IActivityManager activityManager)
|
||||||
|
{
|
||||||
|
_activityManager = activityManager;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create a new workflow template
|
/// Create a new workflow template
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -17,7 +24,7 @@ public class ActivityController : ESuiteControllerBase
|
|||||||
/// <param name="userRegistration">Contains the details that need to be supplied to create the user.</param>
|
/// <param name="userRegistration">Contains the details that need to be supplied to create the user.</param>
|
||||||
/// <param name="cancellationToken"></param>
|
/// <param name="cancellationToken"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Route("create")]
|
[Route("activity")]
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ProblemDetails))]
|
[ProducesResponseType(StatusCodes.Status400BadRequest, Type = typeof(ProblemDetails))]
|
||||||
@ -27,7 +34,7 @@ public class ActivityController : ESuiteControllerBase
|
|||||||
CancellationToken cancellationToken = default!
|
CancellationToken cancellationToken = default!
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
//await _workflowTemplateManager.PostTemplateVersion(AuditUserDetails, template, cancellationToken);
|
await _activityManager.CreateActivity(AuditUserDetails, template, cancellationToken);
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,7 @@
|
|||||||
using e_suite.Messaging.Common;
|
using e_suite.Messaging.Common;
|
||||||
using eSuite.API.security;
|
using eSuite.API.security;
|
||||||
using eSuite.API.Utilities;
|
using eSuite.API.Utilities;
|
||||||
|
using eSuite.Core.Miscellaneous;
|
||||||
using eSuite.Core.Security;
|
using eSuite.Core.Security;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ public class InternalMessagingController : ESuiteControllerBase
|
|||||||
private readonly ISigmaImportMessageSender _sigmaImportMessageSender;
|
private readonly ISigmaImportMessageSender _sigmaImportMessageSender;
|
||||||
private readonly IDatabaseMessageSender _databaseMessageSender;
|
private readonly IDatabaseMessageSender _databaseMessageSender;
|
||||||
private readonly IEFlowSyncMessageSender _eFlowSyncMessageSender;
|
private readonly IEFlowSyncMessageSender _eFlowSyncMessageSender;
|
||||||
|
private readonly IActivityMessageSender _activityMessageSender;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@ -22,11 +24,12 @@ public class InternalMessagingController : ESuiteControllerBase
|
|||||||
/// <param name="sigmaImportMessageSender"></param>
|
/// <param name="sigmaImportMessageSender"></param>
|
||||||
/// <param name="databaseMessageSender"></param>
|
/// <param name="databaseMessageSender"></param>
|
||||||
/// <param name="eFlowSyncMessageSender"></param>
|
/// <param name="eFlowSyncMessageSender"></param>
|
||||||
public InternalMessagingController(ISigmaImportMessageSender sigmaImportMessageSender, IDatabaseMessageSender databaseMessageSender, IEFlowSyncMessageSender eFlowSyncMessageSender)
|
public InternalMessagingController(ISigmaImportMessageSender sigmaImportMessageSender, IDatabaseMessageSender databaseMessageSender, IEFlowSyncMessageSender eFlowSyncMessageSender, IActivityMessageSender activityMessageSender)
|
||||||
{
|
{
|
||||||
_sigmaImportMessageSender = sigmaImportMessageSender;
|
_sigmaImportMessageSender = sigmaImportMessageSender;
|
||||||
_databaseMessageSender = databaseMessageSender;
|
_databaseMessageSender = databaseMessageSender;
|
||||||
_eFlowSyncMessageSender = eFlowSyncMessageSender;
|
_eFlowSyncMessageSender = eFlowSyncMessageSender;
|
||||||
|
_activityMessageSender = activityMessageSender;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -141,4 +144,22 @@ public class InternalMessagingController : ESuiteControllerBase
|
|||||||
_eFlowSyncMessageSender.SyncEFlowPrinterCategories();
|
_eFlowSyncMessageSender.SyncEFlowPrinterCategories();
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This message is used to trigger progress on an activity. This is needed to make sure that activities that are waiting for a message to progress will continue to progress even if the message that should trigger the progress was not received (e.g. because the service was down when the message was sent).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="activityGeneralIdRef"></param>
|
||||||
|
/// <param name="cancellationToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Route("ProgressActivity")]
|
||||||
|
[HttpPost]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[AccessKey(SecurityAccess.CreateActivity)]
|
||||||
|
#pragma warning disable IDE0060 // Remove unused parameter
|
||||||
|
public Task ProgressActivity( [FromBody] GeneralIdRef activityGeneralIdRef, CancellationToken cancellationToken)
|
||||||
|
#pragma warning restore IDE0060 // Remove unused parameter
|
||||||
|
{
|
||||||
|
_activityMessageSender.ProgressActivity(activityGeneralIdRef);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -55,6 +55,7 @@
|
|||||||
<ProjectReference Include="..\..\e-suite.Modules.MailTemplatesManager\e-suite.Modules.MailTemplatesManager\e-suite.Modules.MailTemplatesManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.MailTemplatesManager\e-suite.Modules.MailTemplatesManager\e-suite.Modules.MailTemplatesManager.csproj" />
|
||||||
<ProjectReference Include="..\..\e-suite.Modules.OrganisationManager\e-Suite.Modules.OrganisationsManager\e-suite.Modules.OrganisationsManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.OrganisationManager\e-Suite.Modules.OrganisationsManager\e-suite.Modules.OrganisationsManager.csproj" />
|
||||||
<ProjectReference Include="..\..\e-suite.Modules.RoleManager\e-suite.Modules.RoleManager\e-suite.Modules.RoleManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.RoleManager\e-suite.Modules.RoleManager\e-suite.Modules.RoleManager.csproj" />
|
||||||
|
<ProjectReference Include="..\..\e-suite.Modules.RunningActivityManager\e-suite.Modules.RunningActivityManager.csproj" />
|
||||||
<ProjectReference Include="..\..\e-suite.Modules.SequenceManager\e-Suite.Modules.SequenceManager\e-suite.Modules.SequenceManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.SequenceManager\e-Suite.Modules.SequenceManager\e-suite.Modules.SequenceManager.csproj" />
|
||||||
<ProjectReference Include="..\..\e-suite.Modules.SiteManager\e-suite.Modules.SiteManager\e-suite.Modules.SiteManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.SiteManager\e-suite.Modules.SiteManager\e-suite.Modules.SiteManager.csproj" />
|
||||||
<ProjectReference Include="..\..\e-suite.Modules.SpecificationManager\e-suite.Modules.SpecificationManager\e-suite.Modules.SpecificationManager.csproj" />
|
<ProjectReference Include="..\..\e-suite.Modules.SpecificationManager\e-suite.Modules.SpecificationManager\e-suite.Modules.SpecificationManager.csproj" />
|
||||||
|
|||||||
@ -41,5 +41,6 @@ public class CoreRegistrationModule : ESuiteModule
|
|||||||
builder.RegisterType<DatabaseQueueHandler>().InstancePerLifetimeScope();
|
builder.RegisterType<DatabaseQueueHandler>().InstancePerLifetimeScope();
|
||||||
builder.RegisterType<SigmaImportQueueHandler>().InstancePerLifetimeScope();
|
builder.RegisterType<SigmaImportQueueHandler>().InstancePerLifetimeScope();
|
||||||
builder.RegisterType<EFlowImportQueueHandler>().InstancePerLifetimeScope();
|
builder.RegisterType<EFlowImportQueueHandler>().InstancePerLifetimeScope();
|
||||||
|
builder.RegisterType<ActivityQueueHandler>().InstancePerLifetimeScope();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,7 +112,7 @@ public class QueueProcessorService : IHostedService
|
|||||||
}
|
}
|
||||||
catch (AlreadyClosedException)
|
catch (AlreadyClosedException)
|
||||||
{
|
{
|
||||||
//Do nothing here MqRaabbit has already shut things down.
|
//Do nothing here RabbitMq has already shut things down.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -120,6 +120,13 @@ public class QueueProcessorService : IHostedService
|
|||||||
autoAck: false,
|
autoAck: false,
|
||||||
consumer: consumer1);
|
consumer: consumer1);
|
||||||
|
|
||||||
|
channel.ChannelShutdownAsync += (sender, args) =>
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Channel shutdown: {Reason}", args.ReplyText);
|
||||||
|
return Task.CompletedTask;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return channel;
|
return channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
using e_suite.Messaging.Common.models;
|
||||||
|
using eSuite.Core.Miscellaneous;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
||||||
|
namespace e_suite.Messaging.Common;
|
||||||
|
|
||||||
|
public class ActivityMessageSender : MessageSenderBase, IActivityMessageSender
|
||||||
|
{
|
||||||
|
public ActivityMessageSender(IConfiguration configuration, IRabbitMqConnectionFactory connectionFactory) : base(configuration, connectionFactory, MessageQueueNames.Activity)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ProgressActivity(GeneralIdRef generalIdRef)
|
||||||
|
{
|
||||||
|
var progressActivityMessage = new ProgressActivityMessage
|
||||||
|
{
|
||||||
|
MessageType = ActivityMessageTypes.ProgressActivity,
|
||||||
|
ActivityId = generalIdRef
|
||||||
|
};
|
||||||
|
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await PostMessage(progressActivityMessage);
|
||||||
|
}).Wait();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,8 @@
|
|||||||
|
using eSuite.Core.Miscellaneous;
|
||||||
|
|
||||||
|
namespace e_suite.Messaging.Common;
|
||||||
|
|
||||||
|
public interface IActivityMessageSender
|
||||||
|
{
|
||||||
|
void ProgressActivity(GeneralIdRef generalIdRef);
|
||||||
|
}
|
||||||
@ -9,4 +9,4 @@ public interface IDatabaseMessageSender
|
|||||||
void PostClearOldEmailActions();
|
void PostClearOldEmailActions();
|
||||||
|
|
||||||
void PostClearOldSingleUserGuids();
|
void PostClearOldSingleUserGuids();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,5 +12,6 @@ public class IocRegistration : IIocRegistration
|
|||||||
builder.RegisterType<SigmaImportMessageSender>().As<ISigmaImportMessageSender>();
|
builder.RegisterType<SigmaImportMessageSender>().As<ISigmaImportMessageSender>();
|
||||||
builder.RegisterType<EFlowSyncMessageSender>().As<IEFlowSyncMessageSender>();
|
builder.RegisterType<EFlowSyncMessageSender>().As<IEFlowSyncMessageSender>();
|
||||||
builder.RegisterType<RabbitMqConnectionFactory>().As<IRabbitMqConnectionFactory>();
|
builder.RegisterType<RabbitMqConnectionFactory>().As<IRabbitMqConnectionFactory>();
|
||||||
|
builder.RegisterType<ActivityMessageSender>().As<IActivityMessageSender>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9,5 +9,7 @@ public class ActivityMessage
|
|||||||
|
|
||||||
public class ProgressActivityMessage : ActivityMessage
|
public class ProgressActivityMessage : ActivityMessage
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public GeneralIdRef ActivityId { get; set; }
|
public GeneralIdRef ActivityId { get; set; }
|
||||||
}
|
}
|
||||||
52
e-suite.Modules.RunningActivityManager/ActivityManager.cs
Normal file
52
e-suite.Modules.RunningActivityManager/ActivityManager.cs
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
using e_suite.API.Common;
|
||||||
|
using e_suite.API.Common.repository;
|
||||||
|
using e_suite.Database.Audit;
|
||||||
|
using e_suite.Database.Core.Extensions;
|
||||||
|
using e_suite.Database.Core.Tables.Activity;
|
||||||
|
using e_suite.Messaging.Common;
|
||||||
|
using eSuite.Core.Miscellaneous;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace e_suite.Modules.RunningActivityManager;
|
||||||
|
|
||||||
|
public class ActivityManager : IActivityManager
|
||||||
|
{
|
||||||
|
private readonly IActivityMessageSender _activityMessageSender;
|
||||||
|
private readonly IActivityRepository _activityRepository;
|
||||||
|
private readonly IWorkflowTemplateRepository _workflowTemplateRepository;
|
||||||
|
|
||||||
|
public ActivityManager(IActivityMessageSender activityMessageSender, IActivityRepository activityRepository, IWorkflowTemplateRepository workflowTemplateRepository)
|
||||||
|
{
|
||||||
|
_activityMessageSender = activityMessageSender;
|
||||||
|
_activityRepository = activityRepository;
|
||||||
|
_workflowTemplateRepository = workflowTemplateRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CreateActivity(
|
||||||
|
AuditUserDetails auditUserDetails,
|
||||||
|
CreateActivity template,
|
||||||
|
CancellationToken cancellationToken
|
||||||
|
)
|
||||||
|
{
|
||||||
|
GeneralIdRef? progressActivityRef = null;
|
||||||
|
await _activityRepository.TransactionAsync(async () =>
|
||||||
|
{
|
||||||
|
var workflowTemplate = _workflowTemplateRepository.GetWorkflows().Include( x => x.Versions).FindByGeneralIdRef(template.WorkflowTemplateId);
|
||||||
|
var workflowTemplateVersion = workflowTemplate!.Versions.OrderByDescending(x => x.Version).First();
|
||||||
|
|
||||||
|
Activity activity = new Activity
|
||||||
|
{
|
||||||
|
Guid = Guid.NewGuid(),
|
||||||
|
Name = template.ActivityName,
|
||||||
|
WorkflowVersion = workflowTemplateVersion,
|
||||||
|
};
|
||||||
|
|
||||||
|
await _activityRepository.CreateActivityInstanceAsync(auditUserDetails, activity, cancellationToken);
|
||||||
|
|
||||||
|
progressActivityRef = activity.ToGeneralIdRef();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (progressActivityRef != null)
|
||||||
|
_activityMessageSender.ProgressActivity(progressActivityRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
16
e-suite.Modules.RunningActivityManager/IocRegistration.cs
Normal file
16
e-suite.Modules.RunningActivityManager/IocRegistration.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using Autofac;
|
||||||
|
using e_suite.API.Common;
|
||||||
|
using e_suite.API.Common.repository;
|
||||||
|
using e_suite.DependencyInjection;
|
||||||
|
using e_suite.Modules.RunningActivityManager.repository;
|
||||||
|
|
||||||
|
namespace e_suite.Modules.RunningActivityManager;
|
||||||
|
|
||||||
|
public class IocRegistration : IIocRegistration
|
||||||
|
{
|
||||||
|
public void RegisterTypes(ContainerBuilder builder)
|
||||||
|
{
|
||||||
|
builder.RegisterType<ActivityManager>().As<IActivityManager>().InstancePerLifetimeScope();
|
||||||
|
builder.RegisterType<ActivityRepository>().As<IActivityRepository>().InstancePerLifetimeScope();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,15 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RootNamespace>e_suite.Modules.RunningActivityManager</RootNamespace>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\e-suite.API.Common\e-suite.API.Common\e-suite.API.Common.csproj" />
|
||||||
|
<ProjectReference Include="..\e-suite.Messaging.Common\e-suite.Messaging.Common\e-suite.Messaging.Common.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
using e_suite.API.Common.repository;
|
||||||
|
using e_suite.Database.Audit;
|
||||||
|
using e_suite.Database.Core;
|
||||||
|
using e_suite.Database.Core.Tables.Activity;
|
||||||
|
|
||||||
|
namespace e_suite.Modules.RunningActivityManager.repository;
|
||||||
|
|
||||||
|
public class ActivityRepository : RepositoryBase, IActivityRepository
|
||||||
|
{
|
||||||
|
public ActivityRepository(IEsuiteDatabaseDbContext databaseDbContext) : base(databaseDbContext)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task CreateActivityInstanceAsync(
|
||||||
|
AuditUserDetails auditUserDetails,
|
||||||
|
Activity activity,
|
||||||
|
CancellationToken cancellationToken
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DatabaseDbContext.Activities.Add(activity);
|
||||||
|
await DatabaseDbContext.SaveChangesAsync(auditUserDetails, cancellationToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -165,6 +165,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "e-suite.Modules.WorkflowTem
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eSuite.Translator", "eSuite.Translator\eSuite.Translator.csproj", "{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eSuite.Translator", "eSuite.Translator\eSuite.Translator.csproj", "{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "e-suite.Modules.RunningActivityManager", "e-suite.Modules.RunningActivityManager\e-suite.Modules.RunningActivityManager.csproj", "{DE96B3AE-986A-43FE-9C30-14553D0CFCE7}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -463,6 +465,10 @@ Global
|
|||||||
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
{2D02CADA-C004-4B0C-B6DE-097647CB6BA3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{DE96B3AE-986A-43FE-9C30-14553D0CFCE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{DE96B3AE-986A-43FE-9C30-14553D0CFCE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{DE96B3AE-986A-43FE-9C30-14553D0CFCE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{DE96B3AE-986A-43FE-9C30-14553D0CFCE7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
@ -536,6 +542,7 @@ Global
|
|||||||
{1D974411-767E-4242-96F7-E545D285B356} = {A0787221-622B-4D00-A566-BF7297378322}
|
{1D974411-767E-4242-96F7-E545D285B356} = {A0787221-622B-4D00-A566-BF7297378322}
|
||||||
{8D343418-7E3A-40E5-A5CF-6497221F3F7E} = {27EA902C-3CD0-4A8F-BA75-8D1AF87902AC}
|
{8D343418-7E3A-40E5-A5CF-6497221F3F7E} = {27EA902C-3CD0-4A8F-BA75-8D1AF87902AC}
|
||||||
{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB} = {B0DE567F-EA4E-43FA-8A16-A0D571852024}
|
{ABF3CD19-D1CF-4407-9102-3FC31DAC04AB} = {B0DE567F-EA4E-43FA-8A16-A0D571852024}
|
||||||
|
{DE96B3AE-986A-43FE-9C30-14553D0CFCE7} = {B0DE567F-EA4E-43FA-8A16-A0D571852024}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {C5175258-F776-4FF9-A9EE-386312E47061}
|
SolutionGuid = {C5175258-F776-4FF9-A9EE-386312E47061}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user