/// <summary> /// Performs Scan job on Control Panel /// </summary> /// <param name="device"></param> /// <param name="controlPanelData"></param> /// <returns></returns> private PluginExecutionResult ExecuteScan(IDevice device, object controlPanelData, IAuthenticator authenticator) { var result = new PluginExecutionResult(PluginResult.Failed); ScanActivityData scanData = controlPanelData as ScanActivityData; switch (scanData.ScanJobType) { case ContentionScanActivityTypes.Email: UpdateStatus("Selected Control Panel Activity: Scan To Email"); result = ExecuteEmailActivity(device, scanData, authenticator); break; case ContentionScanActivityTypes.Folder: UpdateStatus("Selected Control Panel Activity: Scan To Folder"); result = ExecuteFolderActivity(device, scanData, authenticator); break; case ContentionScanActivityTypes.JobStorage: UpdateStatus("Selected Control Panel Activity: Scan To Job Storage"); result = ExecuteJobStorageActivity(device, scanData, authenticator); break; case ContentionScanActivityTypes.USB: UpdateStatus("Selected Control Panel Activity: Scan To USB"); result = ExecuteUsbActivity(device, scanData, authenticator); break; } return(result); }
private ScanActivityData GetScanData() { ScanActivityData scanData = new ScanActivityData(); scanData.ScanJobType = emailRadioButton.Checked ? ContentionScanActivityTypes.Email : (folderRadioButton.Checked ? ContentionScanActivityTypes.Folder : (jobStorageRadioButton.Checked ? ContentionScanActivityTypes.JobStorage : ContentionScanActivityTypes.USB)); scanData.PageCount = (int)scanPageCount_NumericUpDown.Value; scanData.EmailAddress = emailAddressTextBox.Text; scanData.FolderPath = folderPathTextBox.Text; scanData.UsbName = usbNameTextBox.Text; return(scanData); }
/// <summary> /// Performs ScanToJobStorage job on Control Panel /// </summary> /// <param name="device"></param> /// <param name="jobStorageScanData"></param> /// <returns></returns> private PluginExecutionResult ExecuteJobStorageActivity(IDevice device, ScanActivityData jobStorageScanData, IAuthenticator authenticator) { var result = new PluginExecutionResult(PluginResult.Failed); // Make sure the device is in a good state UpdateStatus($"Setting up device at address {device.Address} for user {ExecutionData.Credential.UserName}"); var devicePrepManager = DevicePreparationManagerFactory.Create(device); devicePrepManager.WorkflowLogger = WorkflowLogger; devicePrepManager.InitializeDevice(true); // Load the Job storage application IJobStorageScanApp contentionJobStorageApp = ScanJobStorageAppFactory.Create(device); //Launch the Scan To Job Storage application UpdateStatus("ScanToJobStorage Activity: Launching the Scan To Job Storage application..."); contentionJobStorageApp.Launch(authenticator, AuthenticationMode.Lazy); //Enter the job name ScanFilePrefix FilePrefix = new ScanFilePrefix(ExecutionData.SessionId, ExecutionData.Credential.UserName, "Job Storage"); FilePrefix.MaxLength = 16; UpdateStatus("ScanToJobStorage Activity: Entering job name..."); contentionJobStorageApp.AddJobName(FilePrefix.ToString().ToLowerInvariant()); // Set job build contentionJobStorageApp.Options.SetJobBuildState((jobStorageScanData.PageCount > 1) ? true : false); try { ScanExecutionOptions options = new ScanExecutionOptions(); options.ValidateJobExecution = false; if (jobStorageScanData.PageCount > 1) { options.JobBuildSegments = jobStorageScanData.PageCount; } //Finish the job UpdateStatus("ScanToJobStorage Activity: Finishing the activity..."); if (contentionJobStorageApp.ExecuteScanJob(options)) { result = new PluginExecutionResult(PluginResult.Passed); } // Clean up try { devicePrepManager.NavigateHome(); if (devicePrepManager.SignOutRequired()) { UpdateStatus("ScanToJobStorage Activity: Signing Out..."); devicePrepManager.SignOut(); } UpdateStatus("ScanToJobStorage Activity: Activity finished"); } catch (Exception ex) when(ex is DeviceCommunicationException || ex is DeviceInvalidOperationException) { // Don't fail the activity if there is an exception here. ExecutionServices.SystemTrace.LogWarn($"Device could not return to home screen: {ex.ToString()}"); } } finally { // End of ScanToJobStorage activity ExecutionServices.SystemTrace.LogDebug("ScanToJobStorage activity completed"); } return(result); }
/// <summary> /// Performs ScanToFolder job on Control Panel /// </summary> /// <param name="device"></param> /// <param name="folderScanData"></param> /// <returns></returns> private PluginExecutionResult ExecuteFolderActivity(IDevice device, ScanActivityData folderScanData, IAuthenticator authenticator) { var result = new PluginExecutionResult(PluginResult.Failed); // Make sure the device is in a good state UpdateStatus($"Setting up device at address {device.Address} for user {ExecutionData.Credential.UserName}"); var devicePrepManager = DevicePreparationManagerFactory.Create(device); devicePrepManager.WorkflowLogger = WorkflowLogger; devicePrepManager.InitializeDevice(true); // Load the network folder application INetworkFolderApp contentionFolderApp = NetworkFolderAppFactory.Create(device); //Launch the Scan to Network Folder app UpdateStatus("ScanToFolder Activity: Launching the Scan To Folder application..."); contentionFolderApp.Launch(authenticator, AuthenticationMode.Lazy); //Network credential being passed as parameter to access the folder and it is used by jediomninetworkfolderapp now UpdateStatus("ScanToFolder Activity: Entering folder path..."); contentionFolderApp.AddFolderPath(folderScanData.FolderPath, ExecutionData.Credential, true); // Enter the file name ScanFilePrefix FilePrefix = new ScanFilePrefix(ExecutionData.SessionId, ExecutionData.Credential.UserName, "Folder"); UpdateStatus("ScanToFolder Activity: Entering file name..."); contentionFolderApp.EnterFileName(FilePrefix.ToString().ToLowerInvariant()); // Set job build contentionFolderApp.Options.SetJobBuildState((folderScanData.PageCount > 1) ? true : false); try { ScanExecutionOptions options = new ScanExecutionOptions(); options.ValidateJobExecution = false; if (folderScanData.PageCount > 1) { options.JobBuildSegments = folderScanData.PageCount; } //Finish the job UpdateStatus("ScanToFolder Activity: Finishing the activity..."); if (contentionFolderApp.ExecuteJob(options)) { result = new PluginExecutionResult(PluginResult.Passed); } else { throw new DeviceWorkflowException(result.Message); } // Clean up try { devicePrepManager.NavigateHome(); if (devicePrepManager.SignOutRequired()) { UpdateStatus("ScanToFolder Activity: Signing Out..."); devicePrepManager.SignOut(); } UpdateStatus("ScanToFolder Activity: Activity finished"); } catch (Exception ex) when(ex is DeviceCommunicationException || ex is DeviceInvalidOperationException) { // Don't fail the activity if there is an exception here. ExecutionServices.SystemTrace.LogWarn($"Device could not return to home screen: {ex.ToString()}"); } } finally { // End of ScanToFolder activity ExecutionServices.SystemTrace.LogDebug("ScanToFolder activity completed"); } return(result); }
/// <summary> /// Performs ScanToEmail job on Control Panel /// </summary> /// <param name="device"></param> /// <param name="emailScanData"></param> /// <returns></returns> private PluginExecutionResult ExecuteEmailActivity(IDevice device, ScanActivityData emailScanData, IAuthenticator authenticator) { var result = new PluginExecutionResult(PluginResult.Failed); // Make sure the device is in a good state UpdateStatus($"Setting up device at address {device.Address} for user {ExecutionData.Credential.UserName}"); var devicePrepManager = DevicePreparationManagerFactory.Create(device); devicePrepManager.WorkflowLogger = WorkflowLogger; devicePrepManager.InitializeDevice(true); // Load the email application IEmailApp contentionEmailApp = EmailAppFactory.Create(device); //Launch the Scan to Email application UpdateStatus("ScanToEmail Activity: Launching the Scan To Email application..."); contentionEmailApp.Launch(authenticator, AuthenticationMode.Lazy); //Enter subject and file name ScanFilePrefix FilePrefix = new ScanFilePrefix(ExecutionData.SessionId, ExecutionData.Credential.UserName, "Email"); string fileName = FilePrefix.ToString().ToLowerInvariant(); contentionEmailApp.EnterSubject(fileName); UpdateStatus("ScanToEmail Activity: Email subject entered..."); contentionEmailApp.EnterFileName(fileName); UpdateStatus("ScanToEmail Activity: File name entered..."); List <string> emailList = new List <string>(); emailList.Add(emailScanData.EmailAddress); //Enter email address contentionEmailApp.EnterToAddress(emailList); UpdateStatus("ScanToEmail Activity: Email address entered..."); try { ScanExecutionOptions options = new ScanExecutionOptions(); options.ValidateJobExecution = false; if (emailScanData.PageCount > 1) { options.JobBuildSegments = emailScanData.PageCount; } //Finish the job UpdateStatus("ScanToEmail Activity: Finishing the activity..."); if (contentionEmailApp.ExecuteJob(options)) { result = new PluginExecutionResult(PluginResult.Passed); } // Clean up try { devicePrepManager.NavigateHome(); if (devicePrepManager.SignOutRequired()) { UpdateStatus("ScanToEmail Activity: Signing Out..."); devicePrepManager.SignOut(); } UpdateStatus("ScanToEmail Activity: Activity finished"); } catch (Exception ex) when(ex is DeviceCommunicationException || ex is DeviceInvalidOperationException) { // Don't fail the activity if there is an exception here. ExecutionServices.SystemTrace.LogWarn($"Device could not return to home screen: {ex.ToString()}"); } } finally { // End of ScanToEmail activity ExecutionServices.SystemTrace.LogDebug("ScanToEmail activity completed"); } return(result); }
private void ConfigureControls(ContentionData data) { //Copy Tab Controls if (data.SelectedControlPanelActivities.OfType <CopyActivityData>().Any()) { copy_checkBox.Checked = true; CopyActivityData copyData = data.SelectedControlPanelActivities.OfType <CopyActivityData>().Single(); Copies_NumericUpDown.Value = copyData.Copies; copyPageCount_NumericUpDown.Value = copyData.PageCount; } else { copy_checkBox.Checked = false; } //Scan Tab Controls if (data.SelectedControlPanelActivities.OfType <ScanActivityData>().Any()) { scan_checkBox.Checked = true; ScanActivityData scanData = data.SelectedControlPanelActivities.OfType <ScanActivityData>().Single(); switch (scanData.ScanJobType) { case ContentionScanActivityTypes.Email: emailRadioButton.Checked = true; emailAddressTextBox.Text = scanData.EmailAddress; break; case ContentionScanActivityTypes.Folder: folderRadioButton.Checked = true; folderPathTextBox.Text = scanData.FolderPath; break; case ContentionScanActivityTypes.USB: usbRadioButton.Checked = true; usbNameTextBox.Text = scanData.UsbName; break; case ContentionScanActivityTypes.JobStorage: jobStorageRadioButton.Checked = true; break; } scanPageCount_NumericUpDown.Value = scanData.PageCount; } else { scan_checkBox.Checked = false; } //Fax Tab Controls if (data.SelectedControlPanelActivities.OfType <FaxActivityData>().Any()) { faxsend_checkBox.Checked = true; FaxActivityData faxData = data.SelectedControlPanelActivities.OfType <FaxActivityData>().Single(); faxNumber_textBox.Text = faxData.FaxNumber; faxPageCount_NumericUpDown.Value = faxData.PageCount; } else { faxsend_checkBox.Checked = false; } //Print Tab Controls if (data.SelectedContentionActivities.OfType <PrintActivityData>().Any()) { print_checkBox.Checked = true; PrintActivityData printData = data.SelectedContentionActivities.OfType <PrintActivityData>().Single(); queueNameTextBox.Text = printData.QueueName; } else { print_checkBox.Checked = false; } }