/// <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);
        }
示例#2
0
        /// <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);
        }