2026-01-30 10:40:55 +10:00
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
|
|
using PARR.DAL.Context;
|
2026-02-03 16:15:19 +10:00
|
|
|
|
using PARR.DAL.Contracts;
|
2026-01-30 10:40:55 +10:00
|
|
|
|
using PARR.DAL.Models.Schedule;
|
|
|
|
|
|
using PARR.DAL.Services.Interfaces.Schedule;
|
|
|
|
|
|
|
|
|
|
|
|
namespace PARR.DAL.Services.Implementations.Schedule
|
|
|
|
|
|
{
|
2026-02-03 16:15:19 +10:00
|
|
|
|
internal sealed class ScheduleResponseAreaTimeOffsetService : IScheduleResponseAreaTimeOffsetService
|
2026-01-30 10:40:55 +10:00
|
|
|
|
{
|
2026-02-03 16:15:19 +10:00
|
|
|
|
private readonly IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> offsetList;
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// ЗО по умолчанию
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private readonly string defaultResponseArea;
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Настройки, если не нашли в offsetList
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
private readonly ScheduleResponseAreaTimeOffset defaultOffset;
|
2026-01-30 10:40:55 +10:00
|
|
|
|
|
2026-02-03 16:15:19 +10:00
|
|
|
|
public ScheduleResponseAreaTimeOffsetService(DataContext dataContext, SettingsFromDb settingsFromDb)
|
2026-01-30 10:40:55 +10:00
|
|
|
|
{
|
2026-02-03 16:15:19 +10:00
|
|
|
|
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)
|
|
|
|
|
|
};
|
2026-01-30 10:40:55 +10:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-02-03 16:15:19 +10:00
|
|
|
|
|
|
|
|
|
|
public IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> GetAll => offsetList;
|
|
|
|
|
|
|
|
|
|
|
|
public ScheduleResponseAreaTimeOffset GetDefault => GetByResponseAreaOrDefault(defaultResponseArea);
|
|
|
|
|
|
|
|
|
|
|
|
public ScheduleResponseAreaTimeOffset GetByResponseAreaOrDefault(string responseArea)
|
2026-01-30 10:40:55 +10:00
|
|
|
|
{
|
2026-02-03 16:15:19 +10:00
|
|
|
|
return offsetList.TryGetValue(responseArea, out var value) ? value : defaultOffset;
|
2026-01-30 10:40:55 +10:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-02-03 16:15:19 +10:00
|
|
|
|
//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;
|
|
|
|
|
|
//}
|
2026-01-30 10:40:55 +10:00
|
|
|
|
}
|
|
|
|
|
|
}
|