@ -1,83 +0,0 @@ | |||||
using System; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
using Microsoft.Extensions.Hosting; | |||||
namespace Ordering.API.Infrastructure.HostedServices | |||||
{ | |||||
// Copyright (c) .NET Foundation. All rights reserved. | |||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. | |||||
/// <summary> | |||||
/// Base class for implementing a long running <see cref="IHostedService"/>. | |||||
/// IMPORTANT: This base class is implemented in .NET Core 2.1 - Since this microservice is still in .NET Core 2.0, we're using the class within the project | |||||
/// When .NET Core 2.1 is released, this class should be removed and you should use the use implemented by the framework | |||||
/// https://github.com/aspnet/Hosting/blob/712c992ca827576c05923e6a134ca0bec87af4df/src/Microsoft.Extensions.Hosting.Abstractions/BackgroundService.cs | |||||
/// | |||||
/// </summary> | |||||
//public abstract class BackgroundService : IHostedService, IDisposable | |||||
//{ | |||||
// private Task _executingTask; | |||||
// private readonly CancellationTokenSource _stoppingCts = new CancellationTokenSource(); | |||||
// /// <summary> | |||||
// /// This method is called when the <see cref="IHostedService"/> starts. The implementation should return a task that represents | |||||
// /// the lifetime of the long running operation(s) being performed. | |||||
// /// </summary> | |||||
// /// <param name="stoppingToken">Triggered when <see cref="IHostedService.StopAsync(CancellationToken)"/> is called.</param> | |||||
// /// <returns>A <see cref="Task"/> that represents the long running operations.</returns> | |||||
// protected abstract Task ExecuteAsync(CancellationToken stoppingToken); | |||||
// /// <summary> | |||||
// /// Triggered when the application host is ready to start the service. | |||||
// /// </summary> | |||||
// /// <param name="cancellationToken">Indicates that the start process has been aborted.</param> | |||||
// public virtual Task StartAsync(CancellationToken cancellationToken) | |||||
// { | |||||
// // Store the task we're executing | |||||
// _executingTask = ExecuteAsync(_stoppingCts.Token); | |||||
// // If the task is completed then return it, this will bubble cancellation and failure to the caller | |||||
// if (_executingTask.IsCompleted) | |||||
// { | |||||
// return _executingTask; | |||||
// } | |||||
// // Otherwise it's running | |||||
// return Task.CompletedTask; | |||||
// } | |||||
// /// <summary> | |||||
// /// Triggered when the application host is performing a graceful shutdown. | |||||
// /// </summary> | |||||
// /// <param name="cancellationToken">Indicates that the shutdown process should no longer be graceful.</param> | |||||
// public virtual async Task StopAsync(CancellationToken cancellationToken) | |||||
// { | |||||
// // Stop called without start | |||||
// if (_executingTask == null) | |||||
// { | |||||
// return; | |||||
// } | |||||
// try | |||||
// { | |||||
// // Signal cancellation to the executing method | |||||
// _stoppingCts.Cancel(); | |||||
// } | |||||
// finally | |||||
// { | |||||
// // Wait until the task completes or the stop token triggers | |||||
// await Task.WhenAny(_executingTask, Task.Delay(Timeout.Infinite, cancellationToken)); | |||||
// } | |||||
// } | |||||
// public virtual void Dispose() | |||||
// { | |||||
// _stoppingCts.Cancel(); | |||||
// } | |||||
//} | |||||
} |
@ -1,90 +0,0 @@ | |||||
namespace Ordering.API.Infrastructure.HostedServices | |||||
{ | |||||
using Dapper; | |||||
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; | |||||
using Microsoft.eShopOnContainers.Services.Ordering.API; | |||||
using Microsoft.Extensions.Logging; | |||||
using Microsoft.Extensions.Options; | |||||
using Ordering.API.Application.IntegrationEvents.Events; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Data.SqlClient; | |||||
using System.Threading; | |||||
using System.Threading.Tasks; | |||||
//public class GracePeriodManagerService : BackgroundService | |||||
//{ | |||||
// private readonly OrderingSettings _settings; | |||||
// private readonly ILogger<GracePeriodManagerService> _logger; | |||||
// private readonly IEventBus _eventBus; | |||||
// public GracePeriodManagerService(IOptions<OrderingSettings> settings, | |||||
// IEventBus eventBus, | |||||
// ILogger<GracePeriodManagerService> logger) | |||||
// { | |||||
// _logger = logger ?? throw new ArgumentNullException(nameof(logger)); | |||||
// _eventBus = eventBus ?? throw new ArgumentNullException(nameof(eventBus)); | |||||
// _settings = settings?.Value ?? throw new ArgumentNullException(nameof(settings)); | |||||
// } | |||||
// protected override async Task ExecuteAsync(CancellationToken stoppingToken) | |||||
// { | |||||
// _logger.LogDebug($"GracePeriod background task is starting."); | |||||
// stoppingToken.Register(() => _logger.LogDebug($"#1 GracePeriod background task is stopping.")); | |||||
// while (!stoppingToken.IsCancellationRequested) | |||||
// { | |||||
// _logger.LogDebug($"GracePeriod background task is doing background work."); | |||||
// CheckConfirmedGracePeriodOrders(); | |||||
// await Task.Delay(_settings.CheckUpdateTime, stoppingToken); | |||||
// continue; | |||||
// } | |||||
// _logger.LogDebug($"GracePeriod background task is stopping."); | |||||
// } | |||||
// private void CheckConfirmedGracePeriodOrders() | |||||
// { | |||||
// _logger.LogDebug($"Checking confirmed grace period orders"); | |||||
// var orderIds = GetConfirmedGracePeriodOrders(); | |||||
// _logger.LogDebug($"GracePeriod sent a ."); | |||||
// foreach (var orderId in orderIds) | |||||
// { | |||||
// var gracePeriodConfirmedEvent = new GracePeriodConfirmedIntegrationEvent(orderId); | |||||
// _eventBus.Publish(gracePeriodConfirmedEvent); | |||||
// } | |||||
// } | |||||
// private IEnumerable<int> GetConfirmedGracePeriodOrders() | |||||
// { | |||||
// IEnumerable<int> orderIds = new List<int>(); | |||||
// using (var conn = new SqlConnection(_settings.ConnectionString)) | |||||
// { | |||||
// try | |||||
// { | |||||
// conn.Open(); | |||||
// orderIds = conn.Query<int>( | |||||
// @"SELECT Id FROM [ordering].[orders] | |||||
// WHERE DATEDIFF(minute, [OrderDate], GETDATE()) >= @GracePeriodTime | |||||
// AND [OrderStatusId] = 1", | |||||
// new { GracePeriodTime = _settings.GracePeriodTime }); | |||||
// } | |||||
// catch (SqlException exception) | |||||
// { | |||||
// _logger.LogCritical($"FATAL ERROR: Database connections could not be opened: {exception.Message}"); | |||||
// } | |||||
// } | |||||
// return orderIds; | |||||
// } | |||||
//} | |||||
} |