using Knoks.Core.Data.Interfaces; using Knoks.Core.Entities; using Knoks.Core.Entities.Args; using Knoks.Core.Logic.Interfaces; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; namespace Knoks.Core.Logic.Managers { public class SystemConfigurationManager : ISystemConfigurationManager { private readonly ILogger _logger; private readonly ISystemConfigurationDao _systemConfigurationDao; private SystemConfiguration _systemConfiguration; public SystemConfigurationManager(ILogger logger, ISystemConfigurationDao systemConfigurationDao) { _logger = logger; _systemConfigurationDao = systemConfigurationDao; } public DateTime SystemDateTime { get { if (_systemConfiguration != null && _systemConfiguration.IsTestMode) return _systemConfiguration.SystemDateTime; else return DateTime.UtcNow; } } private async Task GetSystemConfiguration() { _systemConfiguration = await _systemConfigurationDao.GetSystemConfiguration(); return _systemConfiguration; } public async Task UpdateSystemConfiguration(SystemConfigurationArgs args) { _systemConfiguration = await _systemConfigurationDao.UpdateSystemConfiguration(args); return _systemConfiguration; } } }