コード例 #1
0
        private PrintJobViewModel BuildViewModel(bool saveDialogResult = true)
        {
            MockSaveFileDialog(saveDialogResult);
            var settingsProvider = Substitute.For <ISettingsProvider>();

            settingsProvider.Settings.Returns(_settings);

            _targetFilePathComposer = Substitute.For <ITargetFilePathComposer>();
            _targetFilePathComposer.ComposeTargetFilePath(Arg.Any <Job>()).ReturnsForAnyArgs(j => j.ArgAt <Job>(0).OutputFileTemplate);

            return(new PrintJobViewModel(settingsProvider, new TranslationUpdater(new TranslationFactory(), new ThreadManager()),
                                         _jobInfoQueue, _saveFileQuery, _interactionRequest, new DesignTimeCommandLocator(),
                                         null, null, null, null, _file, null, null, _directoryHelper, _interactiveProfileChecker, _targetFilePathComposer));
        }
コード例 #2
0
        public void SetJob_UpdatesFilenameProperties()
        {
            var vm = BuildViewModel();
            var changedProperties = new List <string>();

            vm.PropertyChanged += (sender, args) => changedProperties.Add(args.PropertyName);
            var job = BuildJob(_pdfProfile);

            _targetFilePathComposer.ComposeTargetFilePath(job).Returns(@"X:\FromTargetFilePathComposer\SomeFile.pdf");

            vm.SetJob(job);

            Assert.Contains(nameof(vm.OutputFolder), changedProperties);
            Assert.AreEqual(@"X:\FromTargetFilePathComposer", vm.OutputFolder);
            Assert.Contains(nameof(vm.OutputFilename), changedProperties);
            Assert.AreEqual("SomeFile.pdf", vm.OutputFilename);
        }
コード例 #3
0
        protected override void DoWorkflowWork(Job job)
        {
            var documentName   = job.JobInfo.Metadata.Title;
            var currentProfile = job.Profile;

            try
            {
                job.OutputFileTemplate = _targetFilePathComposer.ComposeTargetFilePath(job);

                var result = _profileChecker.CheckJob(job);
                if (!result)
                {
                    throw new ProcessingException("Invalid Profile", result[0]);
                }

                job.Passwords = JobPasswordHelper.GetJobPasswords(job.Profile, job.Accounts);

                job.CleanUpOnError = true;
                // Can throw ProcessingException. Use GetAwaiter().GetResult() to unwrap an occuring AggregateException.
                _jobRunner.RunJob(job, _outputFileMover).GetAwaiter().GetResult();

                WorkflowResult = WorkflowResult.Finished;
                OnJobFinished(EventArgs.Empty);

                documentName = Path.GetFileName(job.OutputFiles.First());

                if (currentProfile.ShowAllNotifications && !currentProfile.ShowOnlyErrorNotifications)
                {
                    _notificationService?.ShowInfoNotification(documentName, job.OutputFiles.First());
                }
            }
            catch (Exception)
            {
                if (currentProfile.ShowAllNotifications || currentProfile.ShowOnlyErrorNotifications)
                {
                    _notificationService?.ShowErrorNotification(documentName);
                }

                throw;
            }
        }
コード例 #4
0
        protected override void DoWorkflowWork(Job job)
        {
            job.OutputFileTemplate = _targetFilePathComposer.ComposeTargetFilePath(job);

            job.Passwords = JobPasswordHelper.GetJobPasswords(job.Profile, job.Accounts);  // Set passwords for a skipped print job window

            if (job.Profile.SkipPrintDialog)
            {
                if (!job.Profile.SaveFileTemporary && _interactiveProfileChecker.CheckWithErrorResultInWindow(job))
                {
                    _commandLocator.GetCommand <SkipPrintDialogCommand>().Execute(job);
                }
                else
                {
                    //Enable PrintJobView for invalid profiles
                    job.Profile.SkipPrintDialog = false;
                }
            }

            _logger.Debug("Starting PrintJobWindow");

            try
            {
                _shellManager.ShowPrintJobShell(job);
                _settingsProvider.Settings.CreatorAppSettings.LastUsedProfileGuid = job.Profile.Guid;

                if (job.IsSuccessful)
                {
                    _lastSaveDirectoryHelper.Save(job);
                }
            }
            finally
            {
                _directoryHelper.DeleteCreatedDirectories();
            }
        }