private void ExtractInfo(PositiveSubscribeInfo info) { List <Subscribe> list = info.Subscribes.ToList <Subscribe>(); lock (this._locker) { foreach (Subscribe subscribe in list) { subscribe.PayDateTime = subscribe.PayDateTime.ToLocalTime(); } this.Subscribes = list; if (!info.IsActive && !info.IsFreeze) { this.State = ESubscribeState.End; this.Name = "Нет подписки"; } else { Subscribe subscribe = list.FirstOrDefault <Subscribe>((Func <Subscribe, bool>)(x => x.IsCurrent)); if (info.IsActive) { this.State = ESubscribeState.Active; this.LeftTime = info.SubscribeEndTime - DateTimeOffset.UtcNow; } else if (info.IsFreeze) { this.State = ESubscribeState.Freeze; this.LeftTime = info.EndFreezeTime; } if (subscribe != null) { this.FreezeCount = subscribe.FreezeCount; this.Name = subscribe.Name; } else { this.FreezeCount = -1; this.Name = "Ошибка"; } } switch (this.State) { case ESubscribeState.Active: this.FreezeString = "Заморозить"; this.FreezeEnabled = this.FreezeCount > 0; break; case ESubscribeState.Freeze: this.FreezeString = "Разморозить"; this.FreezeEnabled = true; break; default: this.FreezeString = "Недоступно"; this.FreezeEnabled = false; break; } } }
public async void UpdateData() { SubscribesViewModel subscribesViewModel = this; subscribesViewModel.Loading = true; try { subscribesViewModel.ReloadEnabled = false; subscribesViewModel.Counter = 60; await Task.Factory.StartNew((Action)(() => Thread.Sleep(2000))); PositiveSubscribeInfo subscribesAsync = await subscribesViewModel._client.GetSubscribesAsync(); ESubscribeState state = subscribesViewModel.State; subscribesViewModel.ExtractInfo(subscribesAsync); if (state != subscribesViewModel.State) { if (subscribesViewModel.State == ESubscribeState.Active) { subscribesViewModel._settigs.UserSettings.UserAuthData.SubscribeInfo.IsActive = true; subscribesViewModel._settigs.UserSettings.UserAuthData.SubscribeInfo.IsFreeze = false; } if (subscribesViewModel.State == ESubscribeState.Freeze) { subscribesViewModel._settigs.UserSettings.UserAuthData.SubscribeInfo.IsActive = false; subscribesViewModel._settigs.UserSettings.UserAuthData.SubscribeInfo.IsFreeze = true; } subscribesViewModel._client.UpdateSettings(SettingsHelper.SettingConverter(subscribesViewModel._settigs)); Settings.Save(subscribesViewModel._settigs); } } catch (Exception ex) { await subscribesViewModel.ShowErrorDialogAsync((BaseViewModel)subscribesViewModel._mainViewModel, "Информация о подписках не получена! " + ex.Message); } subscribesViewModel.Loading = false; }