feat(bll): заготовка ICalendarService

This commit is contained in:
Mikhail Kuznetsov
2024-06-28 16:42:53 +10:00
parent 3d78f31de1
commit 9632b0c560
4 changed files with 94 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ namespace PARR.BLL
services.AddHttpClient<IMqAdminService, MqAdminService>(); services.AddHttpClient<IMqAdminService, MqAdminService>();
services.AddTransient<ITransformService, TransformService>(); services.AddTransient<ITransformService, TransformService>();
services.AddTransient<IIntervalService, IntervalService>(); services.AddTransient<IIntervalService, IntervalService>();
services.AddTransient<ICalendarService, CalendarService>();
} }
} }
} }

View File

@@ -0,0 +1,69 @@
using PARR.BLL.Services.Interfaces;
namespace PARR.BLL.Services.Implementations
{
public delegate Task<List<DateOnly>> GetWeekendsDelegate(DateOnly start, DateOnly end);
internal class CalendarService : ICalendarService
{
private DateOnly GetEndPeriodDate(DateOnly startPeriod, TimeSpan distributionPeriod)
{
return startPeriod.AddDays(distributionPeriod.Days).AddDays(-1);
}
public async Task<List<DateOnly>> GetWorkDatesForPeriodAsync(DateOnly startPeriod, TimeSpan distributionPeriod, GetWeekendsDelegate getWeekends)
{
var endPeriod = GetEndPeriodDate(startPeriod, distributionPeriod);
var weekends = await getWeekends.Invoke(startPeriod, endPeriod);
//TODO: logic!!!
//временно сделаем список руками рабочих дней
var workDates = new List<DateOnly>();
return workDates;
}
}
public class Test
{
private readonly ICalendarService calendarService;
public Test(ICalendarService calendarService)
{
this.calendarService = calendarService;
}
public async void Ttt()
{
var tService = new TestService();
// var endPeriod = calendarService.GetEndPeriodDate(new DateOnly(2024, 1, 1), TimeSpan.Parse("30:00:00:00"));
var workDays = await calendarService.GetWorkDatesForPeriodAsync(new DateOnly(2024, 1, 1), TimeSpan.Parse("30:00:00:00"), tService.GetWeekendsAsync);
}
}
public class TestService
{
public async Task<List<DateOnly>> GetWeekendsAsync(DateOnly start, DateOnly end)
{
await Task.Delay(1000);
return new List<DateOnly> { new DateOnly(2024, 1, 12) };
}
}
}

View File

@@ -0,0 +1,13 @@

using PARR.BLL.Services.Implementations;
namespace PARR.BLL.Services.Interfaces
{
public interface ICalendarService
{
Task<List<DateOnly>> GetWorkDatesForPeriodAsync(DateOnly startPeriod, TimeSpan distributionPeriod, GetWeekendsDelegate getWeekends);
//Task<List<DateOnly>> GetWorkDatesForPeriodAsync(DateOnly startPeriod, TimeSpan distributionPeriod, Action<List<DateOnly>> getWeekends);
//Task<List<DateOnly>> GetWorkDatesForPeriodAsync(DateOnly startPeriod, TimeSpan distributionPeriod, Action getWeekends);
}
}

View File

@@ -11,16 +11,19 @@ namespace PARR.Test
private readonly ILogger<Worker> _logger; private readonly ILogger<Worker> _logger;
private readonly IEsppApiService esppApiService; private readonly IEsppApiService esppApiService;
private readonly IIntervalService intervalService; private readonly IIntervalService intervalService;
private readonly ICalendarService calendarService;
public Worker( public Worker(
ILogger<Worker> logger, ILogger<Worker> logger,
IEsppApiService esppApiService, IEsppApiService esppApiService,
IIntervalService intervalService IIntervalService intervalService,
ICalendarService calendarService
) )
{ {
_logger = logger; _logger = logger;
this.esppApiService = esppApiService; this.esppApiService = esppApiService;
this.intervalService = intervalService; this.intervalService = intervalService;
this.calendarService = calendarService;
} }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
@@ -33,7 +36,14 @@ namespace PARR.Test
#endregion #endregion
#region Calendar
var testCalendar = new BLL.Services.Implementations.Test(calendarService);
testCalendar.Ttt() ;
#endregion
////test interval ////test interval