feat: Из dal перенесены все модели в Domain. Из dal переименованы service в repository, вынесены в Core.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.Core.Repositories.Interfaces.Schedule;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Repositories.Base;
|
||||
using PARR.Domain.Entities.Schedule;
|
||||
|
||||
namespace PARR.DAL.Repositories.Schedule
|
||||
{
|
||||
internal class ScheduleExcludeTypeCalendarRepository : BaseRepository<ScheduleExcludeTypeCalendar>, IScheduleExcludeTypeCalendarRepository
|
||||
{
|
||||
public ScheduleExcludeTypeCalendarRepository(DataContext dataContext, ILogger<ScheduleExcludeTypeCalendarRepository> logger) : base(logger, dataContext) { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.Core.Repositories.Interfaces.Schedule;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Repositories.Base;
|
||||
using PARR.Domain.Entities.Schedule;
|
||||
|
||||
namespace PARR.DAL.Repositories.Schedule
|
||||
{
|
||||
internal class ScheduleExcludeTypeRepository : BaseRepository<ScheduleExcludeType>, IScheduleExcludeTypeRepository
|
||||
{
|
||||
public ScheduleExcludeTypeRepository(DataContext dataContext, ILogger<ScheduleExcludeTypeRepository> logger) : base(logger, dataContext) { }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using PARR.Core.Repositories.Interfaces.Schedule;
|
||||
using PARR.DAL.Context;
|
||||
using PARR.DAL.Contracts;
|
||||
using PARR.Domain.Entities.Schedule;
|
||||
|
||||
namespace PARR.DAL.Repositories.Schedule
|
||||
{
|
||||
internal sealed class ScheduleResponseAreaTimeOffsetRepository : IScheduleResponseAreaTimeOffsetRepository
|
||||
{
|
||||
private readonly IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> offsetList;
|
||||
|
||||
/// <summary>
|
||||
/// ЗО по умолчанию
|
||||
/// </summary>
|
||||
private readonly string defaultResponseArea;
|
||||
|
||||
/// <summary>
|
||||
/// Настройки, если не нашли в offsetList
|
||||
/// </summary>
|
||||
private readonly ScheduleResponseAreaTimeOffset defaultOffset;
|
||||
private readonly ILogger<ScheduleResponseAreaTimeOffsetRepository> logger;
|
||||
|
||||
public ScheduleResponseAreaTimeOffsetRepository(DataContext dataContext, SettingsFromDb settingsFromDb, ILogger<ScheduleResponseAreaTimeOffsetRepository> logger)
|
||||
{
|
||||
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)
|
||||
};
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
|
||||
public IReadOnlyDictionary<string, ScheduleResponseAreaTimeOffset> GetAll => offsetList;
|
||||
|
||||
public ScheduleResponseAreaTimeOffset GetDefault => GetByResponseAreaOrDefault(defaultResponseArea);
|
||||
|
||||
public ScheduleResponseAreaTimeOffset GetByResponseAreaOrDefault(string responseArea)
|
||||
{
|
||||
offsetList.TryGetValue(responseArea, out var value);
|
||||
|
||||
if (value != null)
|
||||
{
|
||||
logger.LogDebug("Получил часовой пояс по ЗО '{responseArea}', esppValue: {EsppValue}, utcTimeOffset: {utcTimeOffset}", responseArea, value.EsppValue, value.UtcTimeOffset);
|
||||
return value;
|
||||
}
|
||||
else
|
||||
{
|
||||
logger.LogWarning("Не смог получить часовой пояс по ЗО '{responseArea}', вернул часово пояс по умолчанию: name: {name}, esppValue: {EsppValue}, utcTimeOffset: {utcTimeOffset}",
|
||||
responseArea, defaultOffset.ResponseArea, defaultOffset.EsppValue, defaultOffset.UtcTimeOffset);
|
||||
return defaultOffset;
|
||||
}
|
||||
//return offsetList.TryGetValue(responseArea, out var value) ? value : defaultOffset;
|
||||
}
|
||||
|
||||
|
||||
//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;
|
||||
//}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user