< Summary

Class:SVETA.Api.Services.Implements.AnonymousMovementJob
Assembly:SVETA.Api
File(s):/opt/dev/sveta_api_build/SVETA.Api/Services/Implements/AnonymousMovementJob.cs
Covered lines:0
Uncovered lines:48
Coverable lines:48
Total lines:80
Line coverage:0% (0 of 48)
Covered branches:0
Total branches:12
Branch coverage:0% (0 of 12)

Metrics

MethodLine coverage Branch coverage
.ctor(...)0%100%
DoWork()0%0%
ExecuteAsync()0%0%
StopAsync()0%100%

File(s)

/opt/dev/sveta_api_build/SVETA.Api/Services/Implements/AnonymousMovementJob.cs

#LineLine coverage
 1using Microsoft.Extensions.DependencyInjection;
 2using Microsoft.Extensions.Hosting;
 3using Microsoft.Extensions.Logging;
 4using System;
 5using System.Collections.Generic;
 6using System.Linq;
 7using System.Threading;
 8using System.Threading.Tasks;
 9using WinSolutions.Sveta.Common;
 10using WinSolutions.Sveta.Server.Data.DataModel.Entities;
 11using WinSolutions.Sveta.Server.Data.DataModel.Kinds;
 12using WinSolutions.Sveta.Server.Services.Interfaces;
 13
 14namespace SVETA.Api.Services.Implements
 15{
 16    public class AnonymousMovementJob : BackgroundService
 17    {
 18        private readonly IServiceProvider _service;
 19        private readonly ILogger<AnonymousMovementJob> _logger;
 20
 021        public AnonymousMovementJob(IServiceProvider service, ILogger<AnonymousMovementJob> logger)
 022        {
 023            _service = service;
 024            _logger = logger;
 025        }
 26
 27        private async Task DoWork()
 028        {
 029            using (var scope = _service.CreateScope())
 030            {
 031                var anonymMovementService = scope.ServiceProvider.GetRequiredService<IAnonymousMovementService>();
 032                var jobLogger = scope.ServiceProvider.GetRequiredService<IJobService>();
 033                var authUserService = scope.ServiceProvider.GetRequiredService<IAuthenticationService>();
 034                authUserService.SwitchToServiceUser();
 35
 36                try
 037                {
 038                    await jobLogger.Create(new JobLogger
 039                    {
 040                        JobName = nameof(AnonymousMovementJob),
 041                        LogLevel = JobLogLevel.info,
 042                        Log = $"Старт работы джоба"
 043                    });
 044                    var list = await anonymMovementService.GetAnonymMovements(fromDate: DateTime.UtcNow.Date.AddDays(-31
 045                        toDate: DateTime.UtcNow.Date.AddDays(-30));
 046                    if (list.Result.Count > 0)
 047                    {
 048                        await anonymMovementService.DeleteAnonymMovements(list.Result);
 049                    }
 050                }
 051                catch (Exception ex)
 052                {
 053                    _logger.LogError($"Ошибка выполнения джоба {nameof(AnonymousMovementJob)}. {ex.Message}");
 054                    return;
 55                }
 056            }
 057        }
 58
 59        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
 060        {
 061            _logger.LogDebug($"AnonymousMovementJob is starting.");
 62
 063            stoppingToken.Register(() =>
 064                _logger.LogDebug($"AnonymousMovementJob background task is stopping."));
 65
 066            while (!stoppingToken.IsCancellationRequested)
 067            {
 068                _logger.LogDebug($"AnonymousMovementJob task doing background work.");
 069                await DoWork();
 070                await Task.Delay(TimeSpan.FromDays(1), stoppingToken);
 071            }
 072        }
 73        public override async Task StopAsync(CancellationToken stoppingToken)
 074        {
 075            _logger.LogInformation(
 076                "AnonymousMovementJob service is stopping.");
 077            await Task.CompletedTask;
 078        }
 79    }
 80}