Esempio n. 1
0
        private async void CloneJob(object sender, RoutedEventArgs e)
        {
            var jobVM  = (JobViewModel)(sender as Button).Tag;
            var entity = await jobRepo.Get(jobVM.Id);

            var jsonSettings = new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.Auto
            };
            var oldOptions = JsonConvert.DeserializeObject <JobOptionsWrapper>(entity.JobOptions, jsonSettings).Options;
            var newOptions = JobOptionsFactory.CloneExistant(oldOptions);

            Action <JobOptions> onAccept = async options =>
            {
                var cloned = await vm.CloneJob(entity.JobType, options);

                mainWindow.DisplayJob(cloned);
            };

            Page page = jobVM switch
            {
                MultiRunJobViewModel => new MultiRunJobOptionsDialog(newOptions as MultiRunJobOptions, onAccept),
                ProxyCheckJobViewModel => new ProxyCheckJobOptionsDialog(newOptions as ProxyCheckJobOptions, onAccept),
                _ => throw new NotImplementedException()
            };

            new MainDialog(page, $"Clone job #{entity.Id}", 800, 600).ShowDialog();
        }