aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2019-02-18 11:33:30 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2019-02-18 11:33:30 +0200
commit8c203b26d50818a1b16b2a7ec48eca7b082653f4 (patch)
treea89d88546960dbe05271eb587a25001fb767c638 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
parent21cdc1e12814f72e6aac795f9ddd2a32b9614389 (diff)
downloadTango-8c203b26d50818a1b16b2a7ec48eca7b082653f4.tar.gz
Tango-8c203b26d50818a1b16b2a7ec48eca7b082653f4.zip
Implemented new Machine Studio Publish CLI and UI.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs242
1 files changed, 0 insertions, 242 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
deleted file mode 100644
index 206a2d31b..000000000
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Publisher/MainWindowVM.cs
+++ /dev/null
@@ -1,242 +0,0 @@
-using FluentFTP;
-using Ionic.Zip;
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
-using System.Linq;
-using System.Runtime.CompilerServices;
-using System.ServiceModel;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Windows;
-using Tango.Core.Commands;
-using Tango.Core.Cryptography;
-using Tango.Core.Helpers;
-using Tango.Core.IO;
-using Tango.MachineStudio.Common;
-using Tango.MachineStudio.Common.Update;
-using Tango.Settings;
-using Tango.SharedUI;
-using Tango.Transport.Web;
-using Tango.Web;
-
-namespace Tango.MachineStudio.Publisher
-{
- public class MainWindowVM : ViewModel
- {
- private BasicHashGenerator _hashGenerator;
- private String _appPath = AppDomain.CurrentDomain.BaseDirectory + "..\\Release";
- private IMachineStudioUpdateService _client;
-
- private String _email;
-
- public String Email
- {
- get { return _email; }
- set { _email = value; RaisePropertyChangedAuto(); }
- }
-
- private String _password;
-
- public String Password
- {
- get { return _password; }
- set { _password = value; RaisePropertyChangedAuto(); }
- }
-
- private String _comments;
-
- public String Comments
- {
- get { return _comments; }
- set { _comments = value; RaisePropertyChangedAuto(); }
- }
-
- private DeploymentSlot _deploymentSlot;
- public DeploymentSlot DeploymentSlot
- {
- get { return _deploymentSlot; }
- set
- {
- _deploymentSlot = value; RaisePropertyChangedAuto();
-
- SettingsManager.Default.GetOrCreate<MachineStudioSettings>().DeploymentSlot = _deploymentSlot;
- UpdateVersions();
- }
- }
-
- private String _currentVersion;
-
- public String CurrentVersion
- {
- get { return _currentVersion; }
- set { _currentVersion = value; RaisePropertyChangedAuto(); }
- }
-
- private String _latestVersion;
-
- public String LatestVersion
- {
- get { return _latestVersion; }
- set { _latestVersion = value; RaisePropertyChangedAuto(); }
- }
-
- private double _maxProgress;
-
- public double MaxProgress
- {
- get { return _maxProgress; }
- set { _maxProgress = value; RaisePropertyChangedAuto(); }
- }
-
- private double _progress;
-
- public double Progress
- {
- get { return _progress; }
- set { _progress = value; RaisePropertyChangedAuto(); }
- }
-
- private bool _isUpdating;
-
- public bool IsUpdating
- {
- get { return _isUpdating; }
- set { _isUpdating = value; RaisePropertyChangedAuto(); }
- }
-
- public RelayCommand PublishCommand { get; set; }
-
- public MainWindowVM()
- {
- _client = new MachineStudioUpdateService();
-
- MaxProgress = 100;
-
- _hashGenerator = new BasicHashGenerator();
-
- PublishCommand = new RelayCommand(Publish, () => Email != null && Password != null && Comments != null && CurrentVersion != null && LatestVersion != null && !IsUpdating && Version.Parse(CurrentVersion) > Version.Parse(LatestVersion));
-
- var client = new MachineStudioUpdateService();
-
- UpdateVersions();
-
- var settings = SettingsManager.Default.GetOrCreate<MachineStudioSettings>();
-
- Email = settings.LastLoginEmail;
-
- var cryptographer = new Rfc2898Cryptographer();
- Password = cryptographer.Decrypt(settings.LastLoginPassword);
- }
-
- private void UpdateVersions()
- {
- CurrentVersion = FileVersionInfo.GetVersionInfo(_appPath + "\\Tango.MachineStudio.UI.exe").ProductVersion;
- LatestVersion = _client.GetLatestVersion(new LatestVersionRequest()).Result.Version;
- }
-
- private void Publish()
- {
- if (!ShowQuestion("Did you remember to synchronize production database ?"))
- {
- return;
- }
-
- MaxProgress = 100;
- Progress = 0;
-
- Task.Factory.StartNew(() =>
- {
- IsUpdating = true;
- String tempFile = TemporaryManager.CreateFile();
-
- try
- {
- var response = _client.UploadVersion(new UploadVersionRequest()
- {
- Email = Email,
- Password = _hashGenerator.Encrypt(Password),
- Version = CurrentVersion.ToString(),
- Comments = Comments,
- }).Result;
-
- using (ZipFile zip = new ZipFile())
- {
- zip.AddDirectory(Path.Combine(_appPath, "x86"), "/x86");
- zip.AddDirectory(Path.Combine(_appPath, "x64"), "/x64");
-
- foreach (var file in Directory.GetFiles(_appPath, "*.*", SearchOption.TopDirectoryOnly))
- {
- zip.AddFile(file, "/");
- }
-
- zip.SaveProgress += (x, e) =>
- {
- MaxProgress = e.TotalBytesToTransfer;
- Progress = e.BytesTransferred;
- };
-
- zip.Save(tempFile);
- }
-
- Progress = 0;
- MaxProgress = 100;
-
- using (StorageBlobUploader uploader = new StorageBlobUploader(response.BlobAddress,tempFile))
- {
- uploader.Progress += (x, e) =>
- {
- InvokeUINow(() =>
- {
- Progress = ((double)e.Current / (double)e.Total) * 100d;
- });
- };
-
- uploader.Upload().Wait();
- }
-
- _client.NotifyUploadCompleted(new UploadCompletedRequest()
- {
- AccessToken = response.Token,
- }).Wait();
-
- Progress = 0;
- UpdateVersions();
- ShowInfo("Version published successfully!");
- }
- catch (Exception ex)
- {
- ShowError(ex.FlattenMessage());
- }
- finally
- {
- IsUpdating = false;
- PathHelper.TryDeleteFile(tempFile);
- }
- });
- }
-
- private void ShowError(String error)
- {
- MessageBox.Show(error, "Machine Studio Publisher", MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- private void ShowInfo(String message)
- {
- MessageBox.Show(message, "Machine Studio Publisher", MessageBoxButton.OK, MessageBoxImage.Information);
- }
-
- private bool ShowQuestion(String message)
- {
- return MessageBox.Show(message, "Machine Studio Publisher", MessageBoxButton.YesNo, MessageBoxImage.Information) == MessageBoxResult.Yes;
- }
-
- protected override void RaisePropertyChangedAuto([CallerMemberName] string caller = null)
- {
- base.RaisePropertyChangedAuto(caller);
- InvalidateRelayCommands();
- }
- }
-}