diff --git a/Samples.sln b/Samples.sln index ffc962938..f858861ad 100644 --- a/Samples.sln +++ b/Samples.sln @@ -72,8 +72,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.HelloWorldHttp EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.CustomActivities", "src\samples\Elsa.Samples.CustomActivities\Elsa.Samples.CustomActivities.csproj", "{554C21D7-10BE-48E6-B0EF-9FCA43B32A0F}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.TimesheetApproval", "src\samples\Elsa.Samples.TimesheetApproval\Elsa.Samples.TimesheetApproval.csproj", "{1678743A-9095-4683-8DCD-5763F41924E2}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.DistributedLocking.Redis", "src\providers\Elsa.DistributedLocking.Redis\Elsa.DistributedLocking.Redis.csproj", "{EBD49CCA-5400-4C36-B5DF-7B28190AA323}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.DistributedLock", "src\samples\Elsa.Samples.DistributedLock\Elsa.Samples.DistributedLock.csproj", "{4D162E3C-0962-43B9-B193-6E806249F81B}" @@ -182,10 +180,6 @@ Global {554C21D7-10BE-48E6-B0EF-9FCA43B32A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU {554C21D7-10BE-48E6-B0EF-9FCA43B32A0F}.Release|Any CPU.ActiveCfg = Release|Any CPU {554C21D7-10BE-48E6-B0EF-9FCA43B32A0F}.Release|Any CPU.Build.0 = Release|Any CPU - {1678743A-9095-4683-8DCD-5763F41924E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1678743A-9095-4683-8DCD-5763F41924E2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1678743A-9095-4683-8DCD-5763F41924E2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1678743A-9095-4683-8DCD-5763F41924E2}.Release|Any CPU.Build.0 = Release|Any CPU {EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Debug|Any CPU.Build.0 = Debug|Any CPU {EBD49CCA-5400-4C36-B5DF-7B28190AA323}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -254,7 +248,6 @@ Global {E224F8CF-F9F5-4E99-B405-758F3C02C47A} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A} {A11D79AE-F4C9-4595-9B73-0E0AB221B90D} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A} {554C21D7-10BE-48E6-B0EF-9FCA43B32A0F} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A} - {1678743A-9095-4683-8DCD-5763F41924E2} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A} {4D162E3C-0962-43B9-B193-6E806249F81B} = {5E5E1E84-DDBC-40D6-B891-0D563A15A44A} {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} = {DA71CDAA-8DD3-4D5F-9FBD-8E4B37A2D925} {E20238CE-5C64-4F87-8753-3B4E1EC9A740} = {7CD5C8D5-EC78-4A99-A514-F01CA7197AC8} diff --git a/src/samples/Elsa.Samples.TimeSheetApproval/Elsa.Samples.TimeSheetApproval.csproj b/src/samples/Elsa.Samples.TimeSheetApproval/Elsa.Samples.TimeSheetApproval.csproj deleted file mode 100644 index 851e92b7e..000000000 --- a/src/samples/Elsa.Samples.TimeSheetApproval/Elsa.Samples.TimeSheetApproval.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - netcoreapp3.1 - - - - - - - diff --git a/src/samples/Elsa.Samples.TimeSheetApproval/Program.cs b/src/samples/Elsa.Samples.TimeSheetApproval/Program.cs deleted file mode 100644 index 63764f6ed..000000000 --- a/src/samples/Elsa.Samples.TimeSheetApproval/Program.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace Elsa.Samples.TimesheetApproval -{ - public class Program - { - public static void Main(string[] args) => CreateHostBuilder(args).Build().Run(); - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetApproved.cs b/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetApproved.cs deleted file mode 100644 index 92bf716e6..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetApproved.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Elsa.Services; - -namespace Elsa.Samples.TimesheetApproval.Activities -{ - public class TimesheetApproved : Activity - { - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetRejected.cs b/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetRejected.cs deleted file mode 100644 index 500ed57d6..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetRejected.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Elsa.Services; - -namespace Elsa.Samples.TimesheetApproval.Activities -{ - public class TimesheetRejected : Activity - { - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetSubmitted.cs b/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetSubmitted.cs deleted file mode 100644 index c93749783..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Activities/TimesheetSubmitted.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Elsa.ActivityResults; -using Elsa.Samples.TimesheetApproval.Models; -using Elsa.Services; -using Elsa.Services.Models; - -namespace Elsa.Samples.TimesheetApproval.Activities -{ - public class TimesheetSubmitted : Activity - { - protected override IActivityExecutionResult OnExecute(ActivityExecutionContext context) - { - var timesheet = (Timesheet) context.Input; - - context.SetVariable("Timesheet", timesheet); - return Done(); - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Extensions/ActivityContextExtensions.cs b/src/samples/Elsa.Samples.TimesheetApproval/Extensions/ActivityContextExtensions.cs deleted file mode 100644 index ebc677584..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Extensions/ActivityContextExtensions.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Models; -using Elsa.Services.Models; - -namespace Elsa.Samples.TimesheetApproval.Extensions -{ - public static class ActivityContextExtensions - { - public static Timesheet GetTimesheet(this ActivityExecutionContext context) => context.GetVariable("Timesheet"); - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Handlers/TimesheetEventsHandler.cs b/src/samples/Elsa.Samples.TimesheetApproval/Handlers/TimesheetEventsHandler.cs deleted file mode 100644 index 768576e25..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Handlers/TimesheetEventsHandler.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Threading; -using System.Threading.Tasks; -using Elsa.Samples.TimesheetApproval.Messages; -using Elsa.Samples.TimesheetApproval.Models; -using Elsa.Services; -using MediatR; - -namespace Elsa.Samples.TimesheetApproval.Handlers -{ - public class TimesheetEventsHandler : INotificationHandler - { - private readonly IWorkflowScheduler _workflowScheduler; - - public TimesheetEventsHandler(IWorkflowScheduler workflowScheduler) - { - _workflowScheduler = workflowScheduler; - } - - public async Task Handle(TimesheetSubmitted notification, CancellationToken cancellationToken) => - await TriggerWorkflowsAsync(notification.Timesheet, cancellationToken); - - private async Task TriggerWorkflowsAsync(Timesheet timesheet, CancellationToken cancellationToken) where T:IActivity => - await _workflowScheduler.TriggerWorkflowsAsync(typeof(T).Name, timesheet, timesheet.TimesheetId, cancellationToken: cancellationToken); - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetApproved.cs b/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetApproved.cs deleted file mode 100644 index ab1832845..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetApproved.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Models; - -namespace Elsa.Samples.TimesheetApproval.Messages -{ - public class TimesheetApproved : TimesheetMessage - { - public TimesheetApproved(Timesheet timesheet) : base(timesheet) - { - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetMessage.cs b/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetMessage.cs deleted file mode 100644 index d52a5b372..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetMessage.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Models; - -namespace Elsa.Samples.TimesheetApproval.Messages -{ - public abstract class TimesheetMessage - { - protected TimesheetMessage(Timesheet timesheet) - { - Timesheet = timesheet; - } - - public Timesheet Timesheet { get; } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetRejected.cs b/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetRejected.cs deleted file mode 100644 index f25289629..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetRejected.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Models; - -namespace Elsa.Samples.TimesheetApproval.Messages -{ - public class TimesheetRejected : TimesheetMessage - { - public TimesheetRejected(Timesheet timesheet) : base(timesheet) - { - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetSubmitted.cs b/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetSubmitted.cs deleted file mode 100644 index 4b8537e3f..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Messages/TimesheetSubmitted.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Models; -using MediatR; - -namespace Elsa.Samples.TimesheetApproval.Messages -{ - public class TimesheetSubmitted : TimesheetMessage, INotification - { - public TimesheetSubmitted(Timesheet timesheet) : base(timesheet) - { - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Models/Timesheet.cs b/src/samples/Elsa.Samples.TimesheetApproval/Models/Timesheet.cs deleted file mode 100644 index 2bb556dd9..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Models/Timesheet.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace Elsa.Samples.TimesheetApproval.Models -{ - public class Timesheet - { - public int Id { get; set; } - public string TimesheetId { get; set; } - public string User { get; set; } - public float TotalHours { get; set; } - public TimesheetStatus Status { get; set; } = TimesheetStatus.Draft; - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Models/TimesheetStatus.cs b/src/samples/Elsa.Samples.TimesheetApproval/Models/TimesheetStatus.cs deleted file mode 100644 index c83a331cc..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Models/TimesheetStatus.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Elsa.Samples.TimesheetApproval.Models -{ - public enum TimesheetStatus - { - Draft, - Submitted, - Rejected, - Approved - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Properties/launchSettings.json b/src/samples/Elsa.Samples.TimesheetApproval/Properties/launchSettings.json deleted file mode 100644 index 5309ba201..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Properties/launchSettings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "profiles": { - "Elsa.Samples.TimesheetApproval": { - "commandName": "Project", - "launchBrowser": false, - "applicationUrl": "http://localhost:9292", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Services/TimesheetManager.cs b/src/samples/Elsa.Samples.TimesheetApproval/Services/TimesheetManager.cs deleted file mode 100644 index 4465b390c..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Services/TimesheetManager.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; -using Elsa.Samples.TimesheetApproval.Messages; -using Elsa.Samples.TimesheetApproval.Models; -using MediatR; -using YesSql; - -namespace Elsa.Samples.TimesheetApproval.Services -{ - public class TimesheetManager - { - private readonly ISession _session; - private readonly IMediator _mediator; - - public TimesheetManager(ISession session, IMediator mediator) - { - _session = session; - _mediator = mediator; - } - - public async Task SubmitTimesheet(Timesheet timesheet, CancellationToken cancellationToken = default) - { - timesheet.Status = TimesheetStatus.Submitted; - await SaveAsync(timesheet, cancellationToken); - await _mediator.Publish(new TimesheetSubmitted(timesheet), cancellationToken); - } - - public async Task ApproveTimesheet(Timesheet timesheet, CancellationToken cancellationToken = default) - { - timesheet.Status = TimesheetStatus.Approved; - await SaveAsync(timesheet, cancellationToken); - await _mediator.Publish(new TimesheetApproved(timesheet), cancellationToken); - } - - public async Task RejectTimesheet(Timesheet timesheet, CancellationToken cancellationToken = default) - { - timesheet.Status = TimesheetStatus.Rejected; - await SaveAsync(timesheet, cancellationToken); - await _mediator.Publish(new TimesheetRejected(timesheet), cancellationToken); - } - - public async Task SaveAsync(Timesheet timesheet, CancellationToken cancellationToken = default) - { - if (timesheet.TimesheetId == null) - timesheet.TimesheetId = Guid.NewGuid().ToString("N"); - - _session.Save(timesheet); - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Startup.cs b/src/samples/Elsa.Samples.TimesheetApproval/Startup.cs deleted file mode 100644 index fc7d0baf1..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Startup.cs +++ /dev/null @@ -1,58 +0,0 @@ -using Elsa.Samples.TimesheetApproval.Services; -using Elsa.Samples.TimesheetApproval.Workflows; -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using YesSql.Provider.Sqlite; - -namespace Elsa.Samples.TimesheetApproval -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - public void ConfigureServices(IServiceCollection services) - { - // Read configuration. - var connectionString = Configuration.GetConnectionString("SqLite"); - var elsaSection = Configuration.GetSection("Elsa"); - - // Add API controller services. - services.AddControllers(); - - // Add custom application services. - services - .AddScoped(); - - // Add Elsa services - services.AddElsa( - elsa => elsa.UsePersistence(config => config.UseSqLite(connectionString))); - - // Add activities and their services. - services - .AddHttpActivities(options => options.Bind(elsaSection.GetSection("Http"))) - .AddEmailActivities(options => options.Bind(elsaSection.GetSection("Smtp"))) - .AddTimerActivities(options => options.Bind(elsaSection.GetSection("BackgroundRunner"))) - .AddActivity() - .AddActivity() - .AddActivity(); - - // Add workflows. - services.AddWorkflow(); - } - - public void Configure(IApplicationBuilder app) - { - app - .UseRouting() - .UseEndpoints(endpoints => endpoints.MapControllers()) - .UseHttpActivities() - .UseWelcomePage(); - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/Workflows/TimesheetApprovalWorkflow.cs b/src/samples/Elsa.Samples.TimesheetApproval/Workflows/TimesheetApprovalWorkflow.cs deleted file mode 100644 index 1464863d3..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/Workflows/TimesheetApprovalWorkflow.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Elsa.Activities.Http; -using Elsa.Activities.Http.Services; -using Elsa.Builders; -using Elsa.Samples.TimesheetApproval.Activities; -using Elsa.Samples.TimesheetApproval.Extensions; - -namespace Elsa.Samples.TimesheetApproval.Workflows -{ - public class TimesheetApprovalWorkflow : IWorkflow - { - public void Build(IWorkflowBuilder workflow) - { - workflow - .StartWith() - .SendEmail(email => email - .WithRecipient("manager@acme.com") - .WithSubject(context => $"Timesheet received from {context.GetTimesheet().User}") - .WithBody(context => - { - var timesheet = context.GetTimesheet(); - var user = timesheet.User; - var hours = timesheet.TotalHours; - var urlProvider = context.GetService(); - var timesheetUrl = urlProvider.ToAbsoluteUrl($"/api/timesheets/{timesheet.TimesheetId}"); - return $"Hi!
User {user} just submitted their timesheet with a total of {hours} hours. Please review and then Approve or Reject"; - })); - } - } -} \ No newline at end of file diff --git a/src/samples/Elsa.Samples.TimesheetApproval/appsettings.json b/src/samples/Elsa.Samples.TimesheetApproval/appsettings.json deleted file mode 100644 index 0cd2ad2f1..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/appsettings.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*", - "ConnectionStrings": { - "SqLite": "Data Source=elsa.db;Cache=Shared" - }, - "Elsa": { - "Http": { - "BaseUrl": "http://localhost:9292" - }, - "Smtp": { - "Host": "localhost", - "Port": "2525", - "DefaultSender": "noreply@acme.com" - }, - "Timers": { - "SweepInterval": "00:00:30" - } - } -} diff --git a/src/samples/Elsa.Samples.TimesheetApproval/docker-compose.yaml b/src/samples/Elsa.Samples.TimesheetApproval/docker-compose.yaml deleted file mode 100644 index 25e4dd798..000000000 --- a/src/samples/Elsa.Samples.TimesheetApproval/docker-compose.yaml +++ /dev/null @@ -1,15 +0,0 @@ -version: '3.7' - -services: - mongodb: - image: mongo - ports: - - "27017:27017" - volumes: - - /var/lib/mongodb:/var/lib/mongodb - - smtp4dev: - image: rnwood/smtp4dev:linux-amd64-3.1.0-ci0856 - ports: - - "3000:80" - - "2525:25" \ No newline at end of file