< Summary

Information
Class: Elsa.Scheduling.Handlers.UpdateTenantSchedules
Assembly: Elsa.Scheduling
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Scheduling/Handlers/UpdateTenantSchedules.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 23
Coverable lines: 23
Total lines: 47
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%210%
TenantDeletedAsync()100%210%
GetTriggersAsync()100%210%
GetBookmarksAsync()100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Scheduling/Handlers/UpdateTenantSchedules.cs

#LineLine coverage
 1using Elsa.Common.Multitenancy;
 2using Elsa.Scheduling.Activities;
 3using Elsa.Workflows.Helpers;
 4using Elsa.Workflows.Runtime;
 5using Elsa.Workflows.Runtime.Entities;
 6using Elsa.Workflows.Runtime.Filters;
 7using Microsoft.Extensions.DependencyInjection;
 8using Timer = Elsa.Scheduling.Activities.Timer;
 9
 10namespace Elsa.Scheduling.Handlers;
 11
 12public class UpdateTenantSchedules : ITenantDeletedEvent
 13{
 014    private static readonly string[] ActivityTypeNames =
 015    [
 016        ActivityTypeNameHelper.GenerateTypeName<Cron>(),
 017        ActivityTypeNameHelper.GenerateTypeName<Timer>(),
 018        ActivityTypeNameHelper.GenerateTypeName<Delay>()
 019    ];
 20
 21    public async Task TenantDeletedAsync(TenantDeletedEventArgs args)
 22    {
 023        var serviceProvider = args.TenantScope.ServiceProvider;
 024        var cancellationToken = args.CancellationToken;
 025        var triggerScheduler = args.TenantScope.ServiceProvider.GetRequiredService<ITriggerScheduler>();
 026        var bookmarkScheduler = args.TenantScope.ServiceProvider.GetRequiredService<IBookmarkScheduler>();
 027        var triggers = (await GetTriggersAsync(serviceProvider, cancellationToken)).ToList();
 028        var bookmarks = (await GetBookmarksAsync(serviceProvider, cancellationToken)).ToList();
 29
 030        await triggerScheduler.UnscheduleAsync(triggers, args.CancellationToken);
 031        await bookmarkScheduler.UnscheduleAsync(bookmarks, args.CancellationToken);
 032    }
 33
 34    private async Task<IEnumerable<StoredTrigger>> GetTriggersAsync(IServiceProvider serviceProvider, CancellationToken 
 35    {
 036        var triggerStore = serviceProvider.GetRequiredService<ITriggerStore>();
 037        var filter = TriggerFilter.ByNames(ActivityTypeNames);
 038        return await triggerStore.FindManyAsync(filter, cancellationToken);
 039    }
 40
 41    private async Task<IEnumerable<StoredBookmark>> GetBookmarksAsync(IServiceProvider serviceProvider, CancellationToke
 42    {
 043        var bookmarkStore = serviceProvider.GetRequiredService<IBookmarkStore>();
 044        var filter = BookmarkFilter.ByActivityTypeNames(ActivityTypeNames);
 045        return await bookmarkStore.FindManyAsync(filter, cancellationToken);
 046    }
 47}