Пример #1
0
 public MetadataViewModel(MetadataModel model)
 {
     this.Languages     = model.Languages;
     this.ResponseCodes = model.ResponseCodes;
     this.UserStatus    = model.UserStatus.OrderBy(c => c.Sequence);
 }
Пример #2
0
        public async Task <ResponseModel> LoadSystemDataAsync(bool force = false)
        {
            _systemLogs.Clear();
            _systemLogs.Add($"LoadSystemDataAsync (force = {force})");

            var status = _dataTypes[DataManagerDataType.System].WaitOne(0);

            if (status && !force)
            {
                return(ResponseModel.Error(ResponseCode.Ok));
            }
            _dataTypes[DataManagerDataType.System].Reset();

            DateTime started = DateTime.UtcNow;

            _systemLogs.Add($"Fetching System Settings");

            var data = await GetSystem();

            if (data != null)
            {
                _metadata = data.Metadata;
                data.EmailTemplates.ForEach(c => _emailTemplates.AddOrUpdate(c.TemplateId, c, (k, v) => c));
                data.SMSTemplates.ForEach(c => _smsTemplates.AddOrUpdate(c.TemplateId, c, (k, v) => c));
            }

            _dataTypes[DataManagerDataType.System].Set();

            if (_metadata != null)
            {
                double dur = DateTime.UtcNow.Subtract(started).TotalSeconds;

                #region Printout
                _systemLogs.Add($"{Metadata.Config.Count()} Config Loaded");
                _systemLogs.Add($"{Metadata.Events.Count()} Events Loaded");
                _systemLogs.Add($"{Metadata.Languages.Count()} Languages Loaded");
                _systemLogs.Add($"{Metadata.ResponseCodes.Count()} ResponseCodes Loaded");
                _systemLogs.Add($"{Metadata.UserStatus.Count()} UserStatus Loaded");

                if (this.AppSettings.Environment != EnvironmentId.Development)
                {
                    Microsoft.ApplicationInsights.TelemetryClient client = new Microsoft.ApplicationInsights.TelemetryClient();
                    try
                    {
                        _systemLogs.Add("DataManager.LoadSystemDataAsync -> Startup Duration (metadata): " + dur.ToString());
                        client.TrackEvent("DataManager.LoadSystemDataAsync", new Dictionary <string, string> {
                            { "duration-metadata", dur.ToString() }
                        }, new Dictionary <string, double> {
                            { "duration-metadata", dur }
                        });
                    }
                    catch { }
                }
                #endregion

                _systemLogs.ForEach(c => Console.WriteLine(c));

                return(ResponseModel.Success());
            }

            return(ResponseModel.Error(ResponseCode.NoData, "Metadata not loaded from cache. World ends now"));
        }