示例#1
0
        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);
            }
        }
示例#2
0
        public ConfigService(IConfigData config, IDynamicConfig dynamicConfig, IStaticConfig staticConfig)
        {
            _configData   = config;
            DynamicConfig = dynamicConfig;
            StaticConfig  = staticConfig;

            DynamicConfig.PropertyChanged += _dynamicConfig_PropertyChanged;
        }
示例#3
0
 /// <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;
 }
示例#4
0
 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;
 }
示例#5
0
 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;
 }
示例#6
0
        /// <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);
            }
        }
示例#7
0
 /// <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;
 }
示例#8
0
 /// <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;
 }
示例#9
0
 /// <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;
 }
示例#10
0
        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;
        }