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 sealed class ScheduleResponseAreaTimeOffsetService : IScheduleResponseAreaTimeOffsetService { private readonly IReadOnlyDictionary offsetList; /// /// ЗО по умолчанию /// private readonly string defaultResponseArea; /// /// Настройки, если не нашли в offsetList /// private readonly ScheduleResponseAreaTimeOffset defaultOffset; public ScheduleResponseAreaTimeOffsetService(DataContext dataContext, SettingsFromDb settingsFromDb) { 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 IReadOnlyDictionary GetAll => offsetList; public ScheduleResponseAreaTimeOffset GetDefault => GetByResponseAreaOrDefault(defaultResponseArea); public ScheduleResponseAreaTimeOffset GetByResponseAreaOrDefault(string responseArea) { return offsetList.TryGetValue(responseArea, out var value) ? value : defaultOffset; } //public IQueryable Get() //{ // return dataContext.ScheduleResponseAreaTimeOffsets; //} //public async Task GetTimeOffsetByResponseAreaAsync(string responseArea) //{ // var result = await dataContext.ScheduleResponseAreaTimeOffsets.FirstOrDefaultAsync(t => t.ResponseArea == responseArea); // return result != null ? result.TimeOffset : null; //} } }