using AsbCloudApp.Services;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudInfrastructure.Background.PeriodicWorks;

/// <summary>
/// Задача по удалению загруженных отчетов
/// </summary>
public class WorkToDeleteOldReports : Work
{
    public WorkToDeleteOldReports()
        : base("work to delete reports older than 30 days")
    {
        Timeout = TimeSpan.FromMinutes(10);
    }

    /// <summary>
    /// Удаление отчетов, загруженных ранее 30 дней от текущей даты
    /// </summary>
    /// <param name="id"></param>
    /// <param name="services"></param>
    /// <param name="onProgressCallback"></param>
    /// <param name="token"></param>
    /// <returns></returns>
    protected override async Task Action(string id, IServiceProvider services, Action<string, double?> onProgressCallback, CancellationToken token)
    {
        var reportService = services.GetRequiredService<IReportService>();
        await reportService.DeleteAllOldReportsAsync(TimeSpan.FromDays(30), token);
    }
}