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);
        }
Esempio n. 2
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);
                }
            });
        }