private void Update() { var from = lastUpdate; lastUpdate = DateTime.Now; //чтобы другие потоки не пытались выполнить аналогичное действие var uTask = dp.GetEnrolleesAsync(from.Date.ToShortDateString(), from.TimeOfDay.ToString().Split('.')[0]); var aTask = dp.GetAchievementsAsync(); var dTask = dp.GetDynamicConfigAsync(); Task.WaitAll(uTask, aTask, dTask); var updated = uTask.Result; var achivs = aTask.Result; dConf = dTask.Result ?? dConf; lock (enrolleesDict) { foreach (var enrollee in updated) { enrolleesDict[enrollee.Id] = enrollee.ToModel(plansDict); } ApplyAchievements(enrolleesDict, achivs); } if (updated.Count() > 0) { CalculatePlanEnrollees(plansViewModels.Values, enrolleesDict.Values); } }
public ConfigService(IConfigData config, IDynamicConfig dynamicConfig, IStaticConfig staticConfig) { _configData = config; DynamicConfig = dynamicConfig; StaticConfig = staticConfig; DynamicConfig.PropertyChanged += _dynamicConfig_PropertyChanged; }
/// <summary>Initializes a new instance of the <see cref="PhotoService" /> class.</summary> /// <param name="photoData">The photo data.</param> /// <param name="tagData">The tag data.</param> /// <param name="logger">The logger.</param> /// <param name="fileSystemService">The file system service.</param> /// <param name="dynamicConfig">The dynamic configuration.</param> /// <param name="backgroundTaskQueue">The background task queue.</param> public PhotoService(IPhotoData photoData, ITagData tagData, ILogger <PhotoService> logger, IFileSystemService fileSystemService, IDynamicConfig dynamicConfig, IBackgroundTaskQueue backgroundTaskQueue) { _photoData = photoData; _tagData = tagData; _logger = logger; _fileSystemService = fileSystemService; _dynamicConfig = dynamicConfig; _backgroundTaskQueue = backgroundTaskQueue; }
public ImageService(IImageTransformer imageResizer, IFileSystemService imageinfoProvider, IPhotoService photoService, IDynamicConfig dynamicConfig, IBackgroundTaskQueue queue, ILogger <ImageService> logger, IImageMetadataService metadataService) { _imageTransformer = imageResizer; _fileSystemService = imageinfoProvider; _photoService = photoService; _dynamicConfig = dynamicConfig; _queue = queue; _logger = logger; _metadataService = metadataService; }
public Settings(IDynamicConfig config) { ConfigId = config.ConfigId; CacheFolder = config.CacheFolder; MobileUploadsFolder = config.MobileUploadsFolder; IndexPath = config.IndexPath; LargeImageSize = config.LargeImageSize; SmallImageSize = config.SmallImageSize; NextIndexTime = config.NextIndexTime; IndexFrequencyHours = config.IndexFrequencyHours; ThumbnailSize = config.ThumbnailSize; }
/// <summary> /// Middleware entry point. /// </summary> /// <param name="httpContext">The request.</param> /// <param name="dynamicConfig">The dynamic configuration.</param> /// <param name="staticConfig">The static configuration.</param> /// <returns>A void task.</returns> public async Task InvokeAsync(HttpContext httpContext, IDynamicConfig dynamicConfig, IStaticConfig staticConfig) { var request = httpContext.Request; if (request.Method.Equals("GET", StringComparison.InvariantCultureIgnoreCase) && httpContext.Request.Path.Value.StartsWith(Constants.CacheRoute, StringComparison.InvariantCultureIgnoreCase)) { var folderAndFileInfo = httpContext.Request.Path.Value.Substring(Constants.CacheRoute.Length).Trim('/').Split('/'); var size = httpContext.Request.Query.ContainsKey("type") ? httpContext.Request.Query["type"].ToString().ToLower() : "thumb"; switch (size) { case "thumb": case "thumbnail": size = "thumb"; break; case "small": case "sm": size = "small"; break; case "full": case "large": case "lg": size = "full"; break; } httpContext.Response.Headers.Add("Cache-Control", "Private"); httpContext.Response.Headers.Add("Expires", DateTime.UtcNow.AddDays(staticConfig.PhotoExpirationDays).ToString("u")); var folder = folderAndFileInfo[0]; var fileInfo = folderAndFileInfo[1].Decrypt(staticConfig.ImagePasscode); var fileInfoParts = fileInfo.Split('|'); var file = fileInfoParts[0]; var expiration = DateTime.Parse(fileInfoParts[1]); if (expiration < DateTime.UtcNow.ToStartOfDay()) { httpContext.Response.StatusCode = 400; return; } var cachePath = Path.Combine(dynamicConfig.CacheFolder.TrimEnd('/', '\\'), folder, size, file); await httpContext.Response.SendFileAsync(cachePath); } else { await _next(httpContext); } }
/// <summary> /// Updates configuration from a dynamic configuration. /// </summary> /// <param name="dynamicConfig">The dynamic configuration.</param> public void FromDynamicConfig(IDynamicConfig dynamicConfig) { ConfigId = dynamicConfig.ConfigId; CacheFolder = dynamicConfig.CacheFolder; MobileUploadsFolder = dynamicConfig.MobileUploadsFolder; IndexPath = dynamicConfig.IndexPath; ThumbnailSize = dynamicConfig.ThumbnailSize; SmallImageSize = dynamicConfig.SmallImageSize; LargeImageSize = dynamicConfig.LargeImageSize; NextIndexTime = dynamicConfig.NextIndexTime; IndexFrequencyHours = dynamicConfig.IndexFrequencyHours; IndexOnStartup = dynamicConfig.IndexOnStartup; }
/// <summary> /// Converts configuration to dynamic configuration entity. /// </summary> /// <param name="dynamicConfig">The dynamic configuration.</param> public void ToDynamicConfig(IDynamicConfig dynamicConfig) { dynamicConfig.ConfigId = ConfigId; dynamicConfig.CacheFolder = CacheFolder; dynamicConfig.MobileUploadsFolder = MobileUploadsFolder; dynamicConfig.IndexPath = IndexPath; dynamicConfig.ThumbnailSize = ThumbnailSize; dynamicConfig.SmallImageSize = SmallImageSize; dynamicConfig.LargeImageSize = LargeImageSize; dynamicConfig.NextIndexTime = NextIndexTime; dynamicConfig.IndexFrequencyHours = IndexFrequencyHours; dynamicConfig.IndexOnStartup = IndexOnStartup; }
/// <summary>Initializes a new instance of the <see cref="AccountController" /> class.</summary> /// <param name="logger">The logger.</param> /// <param name="accountService">The account service.</param> /// <param name="staticConfig">The static configuration.</param> /// <param name="securityService">The security service.</param> /// <param name="fileUploadService">The file upload service.</param> /// <param name="dynamicConfig">The dynamic configuration.</param> public AccountController(ILogger <AccountController> logger, IAccountService accountService, IStaticConfig staticConfig, ISecurityService securityService, IFileUploadService fileUploadService, IDynamicConfig dynamicConfig) { _logger = logger; _accountService = accountService; _staticConfig = staticConfig; _securityService = securityService; _fileUploadService = fileUploadService; _dynamicConfig = dynamicConfig; }
public DataStore(IDataProvider dp) { this.dp = dp; dConf = dp.GetDynamicConfig(); examsDict = dp.GetExams().Select(e => e as IExamEntry).ToDictionary(e => e.Id); plansDict = dp.GetPlans().Select(p => p.ToModel(examsDict)).ToDictionary(p => p.Id); enrolleesDict = dp.GetEnrollees("", "").Select(e => e.ToModel(plansDict)).ToDictionary(e => e.Id); var achievements = dp.GetAchievements(); ApplyAchievements(enrolleesDict, achievements); plansViewModels = plansDict.Values.MakeViewModels().ToDictionary(pvm => pvm.Mode); plansViewModels.Values.CalculatePlanEnrollees(enrolleesDict.Values); json = MakePlansJson(plansViewModels); lastUpdate = DateTime.Now; }