public PackageUploadViewModel() { HandlerAssemblies = new ObservableCollection <string>(); Dependencies = new ObservableCollection <string>(); AddHandlerAssemblies = new RelayCommand(o => BrowserDialogs.BrowseForDll(null, true, s => { if (String.IsNullOrWhiteSpace(PackageName) && s.Length > 0) { PackageName = Path.GetFileNameWithoutExtension(s[0]); } s.ToList().ForEach(x => AddHandlerAssemblyFile(x)); })); AddDependency = new RelayCommand(o => { BrowserDialogs.BrowseForAnyFile(null, true, s => s.ToList().ForEach(x => AddDependencyFile(x))); }); RemoveHandlerAssemblies = new TypedRelayCommand <int>(o => HandlerAssemblies.RemoveAt(o), o => o >= 0); RemoveDependency = new TypedRelayCommand <int>(o => Dependencies.RemoveAt(o), o => o >= 0); }
public MainInfoViewModel() { Handlers = new ObservableCollection <HandlerInfoViewModel>(); Handlers.CollectionChanged += Handlers_CollectionChanged; Clients = new ObservableCollection <ClientInfoViewModel>(); Clients.CollectionChanged += Clients_CollectionChanged; Packages = new ObservableCollection <PackageInfoViewModel>(); ShowSettingsCommand = new RelayCommand(o => { const string settingsFile = "settings.json"; Process.Start("notepad.exe", settingsFile); }); UploadJobScriptCommand = new RelayCommand(o => { string selectedFile; var fileSelected = BrowserDialogs.BrowseForScriptFile(String.Empty, out selectedFile); if (fileSelected) { var fileContent = File.ReadAllText(selectedFile); var jsInfo = new JobScriptInfo { JobScript = fileContent }; var result = ServerModel.Server.AddJobScript(jsInfo); if (result.Status == AddJobScriptStatus.Error) { var msg = String.Format("Reason: {0}", result.ErrorCode); msg += Environment.NewLine; msg += result.ErrorMessage; MessageBox.Show(msg, "Error"); } else { var msg = String.Format("{0}", result.HandlerId); MessageBox.Show(msg, "Success"); } } }); UploadPackageCommand = new RelayCommand(o => { var dialogViewModel = new PackageUploadViewModel(); var dialog = new PackageUploadWindow(dialogViewModel); var dialogResult = dialog.ShowDialog(); if (dialogResult.HasValue && dialogResult.Value) { // Create the package object var packageInfo = new PackageInfo(); packageInfo.PackageName = dialogViewModel.PackageName; packageInfo.HandlerAssemblies = new List <string>(); foreach (var ass in dialogViewModel.HandlerAssemblies) { packageInfo.HandlerAssemblies.Add(Path.GetFileName(ass)); } packageInfo.Dependencies = new List <string>(); foreach (var dep in dialogViewModel.Dependencies) { packageInfo.Dependencies.Add(Path.GetFileName(dep)); } // Prepare the infromation for the zip file var packageName = packageInfo.PackageName; var filesToAdd = new List <string>(); filesToAdd.AddRange(dialogViewModel.HandlerAssemblies); filesToAdd.AddRange(dialogViewModel.Dependencies); // Create zip with files var zipBytes = ZipUtility.ZipCompressFilesToBytes(filesToAdd, CompressionLevel.Optimal, packageName); // Uplad package zip ServerModel.Server.AddPackage(packageInfo, zipBytes); } }); }