Esempio n. 1
0
        private void PushApp()
        {
            Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.PushApp,
                                                                        (confirmed) =>
            {
                if (confirmed)
                {
                    PushViewModel viewModel = null;
                    Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, vm => viewModel = vm));


                    var worker = new BackgroundWorker {
                        WorkerReportsProgress = true
                    };
                    SetProgressTitle("Push Application");
                    worker.ProgressChanged += WorkerProgressChanged;
                    worker.DoWork          += (s, e) =>
                    {
                        worker.ReportProgress(10, "Pushing Application: " + viewModel.Name);

                        var result = provider.Push(viewModel.SelectedCloud,
                                                   viewModel.Name,
                                                   viewModel.Url,
                                                   Convert.ToUInt16(viewModel.Instances),
                                                   viewModel.PushFromDirectory,
                                                   Convert.ToUInt32(viewModel.SelectedMemory),
                                                   viewModel.ApplicationServices.Select(provisionedService => provisionedService.Name).ToArray());

                        if (!result.Response)
                        {
                            worker.ReportProgress(-1, result.Message);
                            return;
                        }

                        var appResult = provider.GetApplication(new Application()
                        {
                            Name = viewModel.Name
                        }, viewModel.SelectedCloud);
                        if (appResult.Response == null)
                        {
                            worker.ReportProgress(-1, appResult.Message);
                            return;
                        }
                        e.Result = appResult.Response;
                    };
                    worker.RunWorkerCompleted += (s, e) =>
                    {
                        var result = e.Result as Application;
                        var cloud  = provider.Clouds.SingleOrDefault((c) => c.ID == viewModel.SelectedCloud.ID);
                        if (result != null)
                        {
                            cloud.Applications.Add(result);
                        }
                        Messenger.Default.Send(new ProgressMessage(100, "Application Pushed."));
                    };
                    worker.RunWorkerAsync();
                    Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.Progress, c => { }));
                }
            }));
        }
Esempio n. 2
0
        private void SelectedApplicationPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            ApplicationErrorMessage = String.Empty;
            var worker = new BackgroundWorker();

            worker.DoWork += (s, args) =>
            {
                ProviderResponse <bool> result = provider.UpdateApplication(SelectedApplication, Cloud);
                if (!result.Response)
                {
                    dispatcher.BeginInvoke((Action)(() => ApplicationErrorMessage = result.Message));
                    return;
                }
                ProviderResponse <Application> appResult = provider.GetApplication(SelectedApplication, Cloud);
                if (appResult.Response == null)
                {
                    dispatcher.BeginInvoke((Action)(() => ApplicationErrorMessage = appResult.Message));
                    return;
                }
                args.Result = appResult.Response;
            };
            worker.RunWorkerCompleted += (s, args) =>
            {
                var result = args.Result as Application;
                if (result != null)
                {
                    RefreshSelectedApplication(result);
                }
            };
            worker.RunWorkerAsync();
        }