/// <summary> /// Shows the status. /// </summary> /// <param name="message">The message.</param> /// <exception cref="System.ArgumentOutOfRangeException"></exception> private void ShowStatus(ExportStatus message) { var stageVm = Stages.FirstOrDefault(vm => vm.Stage.ToString() == message.Stage); if (stageVm == null) return; stageVm.Progress = (ExportingProgress)Enum.Parse(typeof(ExportingProgress), message.Progress, true); switch (stageVm.Progress) { case ExportingProgress.InProgress: stageVm.StatusText = string.IsNullOrWhiteSpace(message.StatusText) ? "In Progress..." : message.StatusText; break; case ExportingProgress.Success: stageVm.StatusText = string.IsNullOrWhiteSpace(message.StatusText) ? "Succeeded." : message.StatusText; break; case ExportingProgress.Cancelled: stageVm.StatusText = "Cancelled"; break; case ExportingProgress.Warning: stageVm.StatusText = "Warning" + (string.IsNullOrWhiteSpace(message.StatusText) ? "." : (": " + message.StatusText)); break; case ExportingProgress.Failure: stageVm.StatusText = "Failed" + (string.IsNullOrWhiteSpace(message.StatusText) ? "." : (": " + message.StatusText)); break; default: throw new ArgumentOutOfRangeException(); } RaisePropertyChanged(() => FinishVisible); }
/// <summary> /// Sends export status back to client. /// </summary> /// <param name="status">The status.</param> public static void NotifyExportStatus(ExportStatus status) { if (status == null) return; if (!ConnectedClients.Contains(status.InitiatorId)) { Log4NetLogger.Instance.Log(LogSeverity.Error, "ServerStatusHub Error", "Cannot find Client in ConnectedClients list, client id: " + status.InitiatorId + ", list of ConnectedClients: " + ConnectedClients); return; } var context = GlobalHost.ConnectionManager.GetHubContext<ServerStatusHub>(); context.Clients.Client(ConnectedClients.FirstOrDefault(x => x == status.InitiatorId)).NotifyExportStatus(status); }