feat(api,bll,dal,esppScheduleSync,TemplateGenerator): изменен рассчет nextRun для задания роботу и синхронизатору, подставляется в зависимости от настроек ЗО и таймзоны УЗ робота ЕСПП. Переименование полей в БД
This commit is contained in:
@@ -1,29 +1,64 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.DAL.Models.Schedule;
|
||||
using PARR.DAL.Services.Interfaces.Schedule;
|
||||
|
||||
namespace PARR.DAL.Services.Implementations.Schedule
|
||||
{
|
||||
internal class ScheduleResponseAreaTimeOffsetService : IScheduleResponseAreaTimeOffsetService
|
||||
internal sealed class ScheduleResponseAreaTimeOffsetService : IScheduleResponseAreaTimeOffsetService
|
||||
{
|
||||
private readonly DataContext dataContext;
|
||||
private readonly IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> offsetList;
|
||||
/// <summary>
|
||||
/// ЗО по умолчанию
|
||||
/// </summary>
|
||||
private readonly string defaultResponseArea;
|
||||
/// <summary>
|
||||
/// Настройки, если не нашли в offsetList
|
||||
/// </summary>
|
||||
private readonly ScheduleResponseAreaTimeOffset defaultOffset;
|
||||
|
||||
public ScheduleResponseAreaTimeOffsetService(DataContext dataContext)
|
||||
public ScheduleResponseAreaTimeOffsetService(DataContext dataContext, SettingsFromDb settingsFromDb)
|
||||
{
|
||||
this.dataContext = dataContext;
|
||||
offsetList = dataContext.ScheduleResponseAreaTimeOffsets
|
||||
.AsNoTracking()
|
||||
.ToDictionary(t => t.ResponseArea, t => t, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
if (string.IsNullOrEmpty(settingsFromDb.DefaultResponseAreaToTimeOffset))
|
||||
defaultResponseArea = "17-МСК";
|
||||
else
|
||||
defaultResponseArea = settingsFromDb.DefaultResponseAreaToTimeOffset;
|
||||
|
||||
|
||||
defaultOffset = new ScheduleResponseAreaTimeOffset
|
||||
{
|
||||
ResponseArea = "17-МСК",
|
||||
EsppValue = "",
|
||||
UtcTimeOffset = new TimeSpan(3, 0, 0)
|
||||
};
|
||||
}
|
||||
|
||||
public IQueryable<ScheduleResponseAreaTimeOffset> Get()
|
||||
|
||||
public IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> GetAll => offsetList;
|
||||
|
||||
public ScheduleResponseAreaTimeOffset GetDefault => GetByResponseAreaOrDefault(defaultResponseArea);
|
||||
|
||||
public ScheduleResponseAreaTimeOffset GetByResponseAreaOrDefault(string responseArea)
|
||||
{
|
||||
return dataContext.ScheduleResponseAreaTimeOffsets;
|
||||
return offsetList.TryGetValue(responseArea, out var value) ? value : defaultOffset;
|
||||
}
|
||||
|
||||
public async Task<string?> GetTimeOffsetByResponseAreaAsync(string responseArea)
|
||||
{
|
||||
var result = await dataContext.ScheduleResponseAreaTimeOffsets.FirstOrDefaultAsync(t => t.ResponseArea == responseArea);
|
||||
|
||||
return result != null ? result.TimeOffset : null;
|
||||
}
|
||||
//public IQueryable<ScheduleResponseAreaTimeOffset> Get()
|
||||
//{
|
||||
// return dataContext.ScheduleResponseAreaTimeOffsets;
|
||||
//}
|
||||
|
||||
//public async Task<string?> GetTimeOffsetByResponseAreaAsync(string responseArea)
|
||||
//{
|
||||
// var result = await dataContext.ScheduleResponseAreaTimeOffsets.FirstOrDefaultAsync(t => t.ResponseArea == responseArea);
|
||||
|
||||
// return result != null ? result.TimeOffset : null;
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,21 @@ namespace PARR.DAL.Services.Interfaces.Schedule
|
||||
{
|
||||
public interface IScheduleResponseAreaTimeOffsetService
|
||||
{
|
||||
IQueryable<ScheduleResponseAreaTimeOffset> Get();
|
||||
/// <summary>
|
||||
/// Список всех значений
|
||||
/// </summary>
|
||||
IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> GetAll { get; }
|
||||
|
||||
Task<string?> GetTimeOffsetByResponseAreaAsync(string responseArea);
|
||||
/// <summary>
|
||||
/// Значение по умолчанию
|
||||
/// </summary>
|
||||
ScheduleResponseAreaTimeOffset GetDefault { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Получить значение по ЗО, если не найдет, то значение по умолчанию
|
||||
/// </summary>
|
||||
/// <param name="responseArea"></param>
|
||||
/// <returns></returns>
|
||||
ScheduleResponseAreaTimeOffset GetByResponseAreaOrDefault(string responseArea);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user