/// <summary> /// Interface function to update and log device fields. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="ChangeValue"></param> /// <param name="device"></param> /// <param name="data"></param> /// <param name="urn"></param> /// <param name="endpoint"></param> /// <param name="assetInfo"></param> /// <param name="activity"></param> /// <param name="pluginExecutionData"></param> /// <returns>Success bool</returns> public bool UpdateField <T>(Func <WebServiceTicket, WebServiceTicket> ChangeValue, JediDevice device, DataPair <T> data, string urn, string endpoint, AssetInfo assetInfo, string fieldChanged, PluginExecutionData pluginData) { bool success; if (data != null && data.Value) { DeviceConfigResultLog log = new DeviceConfigResultLog(pluginData, assetInfo.AssetId); try { WebServiceTicket tic = device.WebServices.GetDeviceTicket(endpoint, urn); ChangeValue(tic); device.WebServices.PutDeviceTicket(endpoint, urn, tic); success = true; } catch (Exception ex) { Logger.LogError($"Failed to set field {fieldChanged}, {ex.Message}"); _failedSettings.AppendLine($"Failed to set field {fieldChanged}, {ex.Message}"); success = false; } log.FieldChanged = fieldChanged; log.Result = success ? "Passed" : "Failed"; log.Value = data.Key.ToString(); log.ControlChanged = "Fax Default"; ExecutionServices.DataLogger.Submit(log); } else { success = true; } return(success); }
/// <summary> /// Interface function to update and log device fields. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="ChangeValue"></param> /// <param name="device"></param> /// <param name="data"></param> /// <param name="urn"></param> /// <param name="endpoint"></param> /// <param name="assetInfo"></param> /// <param name="activity"></param> /// <param name="pluginExecutionData"></param> /// <returns>Success bool</returns> public bool UpdateField <T>(Func <WebServiceTicket, WebServiceTicket> changeValue, JediDevice device, DataPair <T> data, string urn, string endpoint, AssetInfo assetInfo, string activity, PluginExecutionData pluginExecutionData) { bool success; if (data.Value) { DeviceConfigResultLog log = new DeviceConfigResultLog(pluginExecutionData, assetInfo.AssetId); try { int oidValue = data.Key.ToString() == "on" ? 1 : 0; device.Snmp.Set(endpoint, oidValue); success = true; } catch (Exception ex) { Logger.LogError($"Failed to set field {activity}, {ex.Message}"); _failedSettings.AppendLine($"Failed to set field {activity}, {ex.Message}"); success = false; } log.FieldChanged = activity; log.Result = success ? "Passed" : "Failed"; log.Value = data.Key.ToString(); log.ControlChanged = "Protocol Default"; ExecutionServices.DataLogger.Submit(log); } else { success = true; } return(success); }
public bool UpdateWithOid <T>(Action <T> oidUsed, JediDevice device, DataPair <T> pair, AssetInfo assetInfo, string fieldChanged, PluginExecutionData pluginData) { if (pair.Value) { JavaScriptSerializer serializer = new JavaScriptSerializer(); bool success = true; DeviceConfigResultLog log = new DeviceConfigResultLog(pluginData, assetInfo.AssetId); try { var snmpData = GetCdm(device); //incase we have issues with endpoint, it is better to fail the setting than to abruptly stop the execution of the plugin if (!string.IsNullOrEmpty(snmpData)) { var objectGraph = serializer.DeserializeObject(snmpData) as Dictionary <string, object>; var snmpEnabled = (string)objectGraph["snmpv1v2Enabled"]; if (snmpEnabled == "true") { var accessOption = (string)objectGraph["accessOption"]; //We need to change from read only if (accessOption == "readOnly") { string jsonContent = @"{""snmpv1v2Enabled"": ""true"",""accessOption"": ""readWrite"",""readOnlyPublicAllowed"": ""true"",""readOnlyCommunityNameSet"": ""false"",""writeOnlyCommunitryNameSet"": ""false""}"; PutCdm(device, jsonContent); } } //snmpv1v2 is disabled we need to enable it else { string jsonContent = @"{""snmpv1v2Enabled"": ""true"",""accessOption"": ""readWrite"",""readOnlyPublicAllowed"": ""true"",""readOnlyCommunityNameSet"": ""false"",""writeOnlyCommunitryNameSet"": ""false""}"; PutCdm(device, jsonContent); } } oidUsed(pair.Key); if (!string.IsNullOrEmpty(snmpData)) { //Restore state PutCdm(device, snmpData); } } catch (Exception ex) { Logger.LogError($"Failed to set field {log.FieldChanged}, {ex.Message}"); _failedSettings.AppendLine($"Failed to set field {log.FieldChanged}, {ex.Message}"); success = false; } log.FieldChanged = fieldChanged; log.Result = success ? "Passed" : "Failed"; log.Value = pair.Key.ToString(); log.ControlChanged = "Web/TroubleShooting"; ExecutionServices.DataLogger.Submit(log); } return(true); }
/// <summary> /// Execution Entry point /// Individual function differences separated into delagate methods. /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(JobSettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties()) { properties.Add(prop.Name, prop.GetValue(this)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Printer)) { _failedSettings.AppendLine("Device has no Print capability, skipping Job Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Job Settings", Result = "Skipped", Value = "NA", ControlChanged = "Job Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } foreach (var item in properties) { switch (item.Key) { case "EnableJobStorage": result &= SetJobStorageDefaultValues("StoredJobsEnabled", (DataPair <string>)item.Value, device, assetInfo, "Enable JobStorage", data); break; case "MinLengthPin": result &= SetJobStorageDefaultValues("PINLength", (DataPair <string>)item.Value, device, assetInfo, "MinLengthPin", data); break; case "JobsPinRequired": result &= SetJobStorageDefaultValues("SaveToDeviceMemoryJobsPinRequired", (DataPair <string>)item.Value, device, assetInfo, "Jobs Pin Requirement", data); break; case "DefaultFolderName": result &= SetJobStorageDefaultValues("PublicFolderName", (DataPair <string>)item.Value, device, assetInfo, "Folder Name", data); break; case "RetainJobs": result &= SetJobStorageDefaultValues("RetainTemporaryJobsMode", (DataPair <string>)item.Value, device, assetInfo, "Job Retention", data); break; } } return(result); }
/// <summary> /// Control the installation process. /// </summary> /// <param name="hpkfile">Hpk file infomation</param> /// <param name="device">Jedi device</param> /// <param name="assetInfo">Asset information</param> /// <param name="pluginData">Plugin execution data</param> /// <returns></returns> public bool UpdateHpk(HpkFileInfo hpkfile, JediDevice device, AssetInfo assetInfo, PluginExecutionData pluginData) { bool success = false; int count = 0; DeviceConfigResultLog log = new DeviceConfigResultLog(pluginData, assetInfo.AssetId); string progressState = null; try { while (success == false && count < RetryCount) { if (InstallPackage(device, hpkfile)) { progressState = TrackPackage(device, hpkfile); while (progressState == "psInProgress" || progressState == "404 Not Found" || progressState == "503 Service Unavailable" || string.IsNullOrEmpty(progressState)) { Thread.Sleep(3000); progressState = TrackPackage(device, hpkfile); } if (progressState == "psCompleted") { success = true; } else if (progressState == "psFailed") { success = false; } else { success = false; } } else { success = false; Thread.Sleep(10000); } count++; } } catch (Exception ex) { Logger.LogError($"Failed to install HPK : (Device:{device.Address}){hpkfile.PackageName}, {ex.Message}, progressState = {progressState}"); _failedSettings.AppendLine($"Failed to install HPK: (Device:{device.Address}){hpkfile.PackageName}, {ex.Message}"); success = false; } log.FieldChanged = hpkfile.PackageName; log.Result = success ? "Passed" : "Failed"; log.Value = "HpkInstall Values"; log.ControlChanged = $@"HpkInstall :{hpkfile.PackageName}"; ExecutionServices.DataLogger.Submit(log); return(success); }
private bool SetLanFaxDefaultValues(string unc, string domain, string username, string password, JediDevice device, AssetInfo assetInfo, string fieldChanged, PluginExecutionData pluginData) { bool success = false; string endpoint = "fax"; string urn = "urn:hp:imaging:con:service:fax:FaxService:ServiceDefaults"; DeviceConfigResultLog log = new DeviceConfigResultLog(pluginData, assetInfo.AssetId); try { WebServiceTicket tic = device.WebServices.GetDeviceTicket(endpoint, urn); //Change values tic.FindElement("FaxMethod").SetValue("lanFaxService"); tic.FindElement("UserName").SetValue(username); tic.FindElement("UNCPath").SetValue(unc); tic.FindElement("DomainName").SetValue(domain); string ticketString = tic.ToString(); string insertString = $@"<dd:Password>{password}</dd:Password>"; string searchString = @"</dd:UserName>"; int foundLocation = ticketString.IndexOf(searchString); ticketString = ticketString.Insert(foundLocation + searchString.Length, Environment.NewLine + insertString); tic = new WebServiceTicket(ticketString); device.WebServices.PutDeviceTicket(endpoint, urn, tic); success = true; } catch (Exception ex) { Logger.LogError($"Failed to set field {log.FieldChanged}, {ex.Message}"); _failedSettings.AppendLine($"Failed to set field {log.FieldChanged}, {ex.Message}"); success = false; } log.FieldChanged = fieldChanged; log.Result = success ? "Passed" : "Failed"; log.Value = $@"Method:Lanfax UserName:{username} Domain:{domain}"; log.ControlChanged = "Fax Default"; ExecutionServices.DataLogger.Submit(log); return(success); }
//[OnDeserializing] //public void ResetData(StreamingContext context) //{ // FaxResolution = new DataPair<string> { Key = String.Empty }; //} /// <summary> /// Execution entry point /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(FaxSettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties().Where(x => x.PropertyType == typeof(DataPair <string>))) { properties.Add(prop.Name, prop.GetValue(this)); } foreach (PropertyInfo propertyInfo in typeof(ScanSettings).GetProperties()) { properties.Add(propertyInfo.Name, propertyInfo.GetValue(ScanSettingsData)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Scanner)) { _failedSettings.AppendLine("Device has no Scanner capability, skipping Fax Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Fax Settings", Result = "Skipped", Value = "NA", ControlChanged = "Fax Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } //int fieldCount = 0; string unc = ""; string domain = ""; string user = ""; string password = ""; foreach (var item in properties) { switch (item.Key) { case "EnableFax": result &= SetFaxDefaultValues("FaxServiceEnabled", (DataPair <string>)item.Value, device, assetInfo, "Enable Fax", data); break; case "FaxMethod": result &= SetFaxDefaultValues("FaxMethod", (DataPair <string>)item.Value, device, assetInfo, "Fax Send Method", data); break; case "ThirdPartyProduct": result &= SetFaxDefaultValues("FaxVendorProductName", (DataPair <string>)item.Value, device, assetInfo, "Third Party Vendor", data); break; case "FileFormat": result &= SetFaxDefaultValues("FaxFileFormat", (DataPair <string>)item.Value, device, assetInfo, "File Format", data); break; case "UNCFolderPath": case "DomainName": case "UserName": case "Password": ///Find a way to implement the 4 fields at once /// var datapair = (DataPair <string>)item.Value; if (datapair.Value) { switch (item.Key) { case "UNCFolderPath": unc = datapair.Key; break; case "DomainName": domain = datapair.Key; break; case "UserName": user = datapair.Key; break; case "Password": password = datapair.Key; break; } if (!string.IsNullOrWhiteSpace(unc) && !string.IsNullOrWhiteSpace(domain) && !string.IsNullOrWhiteSpace(user) && !string.IsNullOrWhiteSpace(password)) { result &= SetLanFaxDefaultValues(unc, domain, user, password, device, assetInfo, "Lan Fax Default Values", data); } } break; case "Location": result &= SetAnalogFaxSettings("AnalogFaxCountry", (DataPair <string>)item.Value, device, assetInfo, "Location", data); break; case "CompanyName": result &= SetAnalogFaxSettings("CompanyName", (DataPair <string>)item.Value, device, assetInfo, "Company Name", data); break; case "FaxNumber": result &= SetAnalogFaxSettings("FaxNumber", (DataPair <string>)item.Value, device, assetInfo, "Fax Number", data); break; case "OriginalSize": result &= SetFaxDefaultJobValues("ScanMediaSize", (DataPair <string>)item.Value, device, assetInfo, "Scan Media Size", data); break; case "OriginalSides": result &= SetFaxDefaultJobValues("ScanPlexMode", (DataPair <string>)item.Value, device, assetInfo, "Original Sides", data); break; case "Optimize": result &= SetFaxDefaultJobValues("ScanMode", (DataPair <string>)item.Value, device, assetInfo, "Optimize", data); break; case "ContentOrientation": result &= SetFaxDefaultJobValues("OriginalContentOrientation", (DataPair <string>)item.Value, device, assetInfo, "Orientation", data); break; case "ImagePreview": result &= SetFaxDefaultJobValues("ImagePreview", (DataPair <string>)item.Value, device, assetInfo, "Image Preview", data); break; case "Cleanup": result &= SetFaxDefaultJobValues("BackgroundRemoval", (DataPair <string>)item.Value, device, assetInfo, "Cleanup", data); break; case "Sharpness": result &= SetFaxDefaultJobValues("Sharpness", (DataPair <string>)item.Value, device, assetInfo, "Sharpness", data); break; case "Darkness": result &= SetFaxDefaultJobValues("Exposure", (DataPair <string>)item.Value, device, assetInfo, "Darkness", data); break; case "Contrast": result &= SetFaxDefaultJobValues("Contrast", (DataPair <string>)item.Value, device, assetInfo, "Contrast", data); break; case "FaxResolution": result &= SetFaxDefaultJobValues("FaxSendResolution", (DataPair <string>)item.Value, device, assetInfo, "Fax Resolution", data); break; default: break; } } return(result); }
/// <summary> /// Execution Entry point /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(PrintSettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties()) { properties.Add(prop.Name, prop.GetValue(this)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Printer)) { _failedSettings.AppendLine("Device has no Print capability, skipping Print Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Print Settings", Result = "Skipped", Value = "NA", ControlChanged = "Print Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } foreach (var item in properties) { switch (item.Key) { case "PrintFromUsb": result &= SetUsbDefaultValues("PrintFromUSBMassStorageEnabled", (DataPair <string>)item.Value, device, assetInfo, "Enable Print From USB", data); break; case "Copies": result &= SetPrintDefaultValues("DefaultPrintCopies", (DataPair <string>)item.Value, device, assetInfo, "Default Print Copies", data); break; case "OriginalSize": result &= SetPrintDefaultValues("MediaSizeID", (DataPair <string>)item.Value, device, assetInfo, "Original Size", data); break; case "PaperType": result &= SetPrintDefaultValues("MediaType", (DataPair <string>)item.Value, device, assetInfo, "Paper Type", data); break; case "PaperTray": result &= SetPrintDefaultValues("ManualFeed", (DataPair <string>)item.Value, device, assetInfo, "Paper Tray", data); break; case "OutputBin": result &= SetPrintDefaultValues("DefaultOutputBin", (DataPair <string>)item.Value, device, assetInfo, "Output Bin", data); break; case "OutputSides": result &= SetPrintDefaultValues("Plex", (DataPair <string>)item.Value, device, assetInfo, "Output Sides", data); break; case "Resolution": result &= SetPrintDefaultValues("ResolutionSetting", (DataPair <string>)item.Value, device, assetInfo, "Resolution", data); break; } } return(result); }
//Do things by type of unique QuickSetCollection /// <summary> /// Execution Entry point /// Individual function differences separated into delagate methods. /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { bool result = true; if (!assetInfo.Attributes.HasFlag(AssetAttributes.Scanner)) { _failedSettings.AppendLine("Device has no Scanner capability, skipping QuickSet Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "QuickSet Settings", Result = "Skipped", Value = "NA", ControlChanged = "QuickSet Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } InitialisePrivateMembers(); if (QuickSetData.Value) { var grouping = QuickSetData.Key.GroupBy(x => x.GetType()); foreach (var group in grouping) { switch (group.Key.Name) { case "EmailQuickSetData": result &= SetEmailQuickSetData(group.OfType <EmailQuickSetData>(), device, assetInfo, "EmailQuickSetData", data); break; case "CopyQuickSetData": result &= SetCopyQuickSetData(group.OfType <CopyQuickSetData>(), device, assetInfo, "CopyQuickSetData", data); break; case "STNFQuickSetData": result &= SetSTNFQuickSetData(group.OfType <STNFQuickSetData>(), device, assetInfo, "NetworkFolderQuickSetData", data); break; case "STSharePointQuickSetData": result &= SetSTSharePointQuickSetData(group.OfType <STSharePointQuickSetData>(), device, assetInfo, "SharePointQuickSetData", data); break; case "STUSBQuickSetData": result &= SetSTUSBQuickSetData(group.OfType <STUSBQuickSetData>(), device, assetInfo, "ScanToUSBQuickSetData", data); break; case "ScanFaxQuickSetData": result &= SetScanFaxQuickSetData(group.OfType <ScanFaxQuickSetData>(), device, assetInfo, "ScanFaxQuickSetData", data); break; case "FTPQuickSetData": result &= SetFTPQuickSetData(group.OfType <FTPQuickSetData>(), device, assetInfo, "STPQuickSetData", data); break; default: throw new Exception("QuickSet Setting Property Error"); } } } return(result); }
/// <summary> /// Execution entry point /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(FolderSettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties().Where(x => x.PropertyType == typeof(DataPair <string>))) { properties.Add(prop.Name, prop.GetValue(this)); } foreach (var propertyInfo in typeof(ScanSettings).GetProperties()) { properties.Add(propertyInfo.Name, propertyInfo.GetValue(ScanSettingsData)); } foreach (var propertyInfo in typeof(FileSettings).GetProperties()) { properties.Add(propertyInfo.Name, propertyInfo.GetValue(FileSettingsData)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Scanner)) { _failedSettings.AppendLine("Device has no Scanner capability, skipping Folder Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Folder Settings", Result = "Skipped", Value = "NA", ControlChanged = "Folder Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } foreach (var item in properties) { switch (item.Key) { case "EnableScanToFolder": result &= SetFolderDefaultValues("FolderServiceEnabled", (DataPair <string>)item.Value, device, assetInfo, "Enable ScanToFolder", data); break; case "Folder": result &= SetFolderDefaultValues("SendToFolderWithoutReadAccess", (DataPair <string>)item.Value, device, assetInfo, "Folder Access Type", data); break; case "OriginalSize": result &= SetFolderDefaultJobValues("ScanMediaSize", (DataPair <string>)item.Value, device, assetInfo, "Scan Media Size", data); break; case "OriginalSides": result &= SetFolderDefaultJobValues("ScanPlexMode", (DataPair <string>)item.Value, device, assetInfo, "Original Side", data); break; case "Optimize": result &= SetFolderDefaultJobValues("ScanMode", (DataPair <string>)item.Value, device, assetInfo, "Optimize", data); break; case "Orientation": result &= SetFolderDefaultJobValues("OriginalContentOrientation", (DataPair <string>)item.Value, device, assetInfo, "Orientation", data); break; case "ImagePreview": result &= SetFolderDefaultJobValues("ImagePreview", (DataPair <string>)item.Value, device, assetInfo, "Image Preview", data); break; case "Cleanup": result &= SetFolderDefaultJobValues("BackgroundRemoval", (DataPair <string>)item.Value, device, assetInfo, "Cleanup", data); break; case "Sharpness": result &= SetFolderDefaultJobValues("Sharpness", (DataPair <string>)item.Value, device, assetInfo, "Sharpness", data); break; case "Darkness": result &= SetFolderDefaultJobValues("Exposure", (DataPair <string>)item.Value, device, assetInfo, "Darkness", data); break; case "Contrast": result &= SetFolderDefaultJobValues("Contrast", (DataPair <string>)item.Value, device, assetInfo, "Contrast", data); break; case "CroppingOption": { DataPair <string> offDataPair = new DataPair <string> { Key = "off", Value = true }; DataPair <string> onDataPair = new DataPair <string> { Key = "on", Value = true }; switch (CroppingOption.Key) { case "0": { result &= SetFolderDefaultJobValues("AutoCrop", offDataPair, device, assetInfo, "Cropping Option", data); result &= SetFolderDefaultJobValues("AutoPageCrop", offDataPair, device, assetInfo, "Cropping Option", data); } break; case "1": { result &= SetFolderDefaultJobValues("AutoCrop", offDataPair, device, assetInfo, "Cropping Option", data); result &= SetFolderDefaultJobValues("AutoPageCrop", onDataPair, device, assetInfo, "Cropping Option", data); } break; case "2": { result &= SetFolderDefaultJobValues("AutoCrop", onDataPair, device, assetInfo, "Cropping Option", data); result &= SetFolderDefaultJobValues("AutoPageCrop", offDataPair, device, assetInfo, "Cropping Option", data); } break; } } break; case "FileName": result &= SetFolderDefaultJobValues("FileName", (DataPair <string>)item.Value, device, assetInfo, "FileName", data); break; case "FileNamePrefix": result &= SetFolderDefaultJobValues("FileNamePrefix", (DataPair <string>)item.Value, device, assetInfo, "FileName Prefix", data); break; case "FileNameSuffix": result &= SetFolderDefaultJobValues("FileNameSuffix", (DataPair <string>)item.Value, device, assetInfo, "FileName Suffix", data); break; case "FileType": result &= SetFolderDefaultJobValues("DSFileType", (DataPair <string>)item.Value, device, assetInfo, "File Type", data); break; case "Resolution": result &= SetFolderDefaultJobValues("DSImageResolution", (DataPair <string>)item.Value, device, assetInfo, "Resolution", data); break; case "FileColor": result &= SetFolderDefaultJobValues("DSColorPreference", (DataPair <string>)item.Value, device, assetInfo, "Color", data); break; case "FileSize": result &= SetFolderDefaultJobValues("DSAttachmentSize", (DataPair <string>)item.Value, device, assetInfo, "File Size", data); break; case "FileNumbering": result &= SetFolderDefaultJobValues("AttachmentFileNameFormat", (DataPair <string>)item.Value, device, assetInfo, "File Numbering Format", data); break; } } return(result); }
/// <summary> /// Sets fields for EmailSettingsData /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(EmailSettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties()) { properties.Add(prop.Name, prop.GetValue(this)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Scanner)) { _failedSettings.AppendLine("Device has no Scanner capability, skipping Email Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Email Settings", Result = "Skipped", Value = "NA", ControlChanged = "Email Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } foreach (var item in properties) { switch (item.Key) { case "EnableScanToEmail": result &= SetEnableScanToEmail((DataPair <string>)item.Value, device, assetInfo, "EnableScanToEmail", data); break; case "SMTPServer": result &= SetSMTPServer((DataPair <string>)item.Value, device, assetInfo, "SMTPServer", data); break; case "FromUser": result &= SetFromUser((DataPair <string>)item.Value, device, assetInfo, "FromUser", data); break; case "DefaultFrom": result &= SetDefaultFrom((DataPair <string>)item.Value, device, assetInfo, "DefaultFrom", data); break; case "To": result &= SetTo((DataPair <string>)item.Value, device, assetInfo, "To", data); break; case "OriginalSize": result &= SetOriginalSize((DataPair <string>)item.Value, device, assetInfo, "OriginalSize", data); break; case "OriginalSides": result &= SetOriginalSides((DataPair <string>)item.Value, device, assetInfo, "OriginalSides", data); break; case "ImagePreview": result &= SetImagePreview((DataPair <string>)item.Value, device, assetInfo, "ImagePreview", data); break; case "FileType": result &= SetFileType((DataPair <string>)item.Value, device, assetInfo, "FileType", data); break; case "Resolution": result &= SetResolution((DataPair <string>)item.Value, device, assetInfo, "Resolution", data); break; default: throw new Exception("Field Property Error"); } } return(result); }
/// <summary> /// Execution point /// </summary> /// <param name="device"></param> /// <param name="assetInfo"></param> /// <param name="data"></param> /// <returns></returns> public bool ExecuteJob(JediDevice device, AssetInfo assetInfo, PluginExecutionData data) { Type type = typeof(CopySettingsData); bool result = true; Dictionary <string, object> properties = new Dictionary <string, object>(); foreach (PropertyInfo prop in type.GetProperties().Where(x => x.PropertyType == typeof(DataPair <string>))) { properties.Add(prop.Name, prop.GetValue(this)); } foreach (var propertyInfo in typeof(ScanSettings).GetProperties()) { properties.Add(propertyInfo.Name, propertyInfo.GetValue(ScanSettingsData)); } if (!assetInfo.Attributes.HasFlag(AssetAttributes.Scanner)) { _failedSettings.AppendLine("Device has no Scanner capability, skipping Copy Settings"); DeviceConfigResultLog log = new DeviceConfigResultLog(data, assetInfo.AssetId) { FieldChanged = "Copy Settings", Result = "Skipped", Value = "NA", ControlChanged = "Copy Default" }; ExecutionServices.DataLogger.Submit(log); return(false); } foreach (var item in properties) { switch (item.Key) { case "Copies": result &= SetCopyDefaultValues("DefaultPrintCopies", (DataPair <string>)item.Value, device, assetInfo, "Default Print Copies", data); break; case "ReduceEnlarge": { var dataPair = new DataPair <string> { Key = "false", Value = true }; if (Convert.ToInt32(((DataPair <string>)item.Value).Key) == 100) { dataPair.Key = "true"; } result &= SetCopyDefaultValues("AutoScale", dataPair, device, assetInfo, "Reduce Enlarge", data); result &= SetCopyDefaultValues("Scaling", (DataPair <string>)item.Value, device, assetInfo, "Reduce Enlarge", data); } break; case "CopySides": result &= SetCopyDefaultValues("CopySides", (DataPair <string>)item.Value, device, assetInfo, "Copy Sides", data); break; case "Color": result &= SetCopyDefaultValues("ChromaticMode", (DataPair <string>)item.Value, device, assetInfo, "Color", data); break; case "ScanMode": result &= SetCopyDefaultValues("CaptureMode", (DataPair <string>)item.Value, device, assetInfo, "Scan Mode", data); break; case "Collate": result &= SetCopyDefaultValues("SheetCollate", (DataPair <string>)item.Value, device, assetInfo, "Collate", data); break; case "PagesPerSheet": result &= SetCopyDefaultValues("CopyOutputNumberUpCount", (DataPair <string>)item.Value, device, assetInfo, "Pages per Sheet", data); break; case "OriginalSize": result &= SetCopyDefaultValues("ScanMediaSize", (DataPair <string>)item.Value, device, assetInfo, "Original Size", data); break; case "OriginalSides": result &= SetCopyDefaultValues("ScanPlexMode", (DataPair <string>)item.Value, device, assetInfo, "Original Sides", data); break; case "Optimize": result &= SetCopyDefaultValues("ScanMode", (DataPair <string>)item.Value, device, assetInfo, "Optimize Mode", data); break; case "ContentOrientation": result &= SetCopyDefaultValues("OriginalContentOrientation", (DataPair <string>)item.Value, device, assetInfo, "Orientation", data); break; case "Cleanup": result &= SetCopyDefaultValues("BackgroundRemoval", (DataPair <string>)item.Value, device, assetInfo, "Cleanup", data); break; case "Sharpness": result &= SetCopyDefaultValues("Sharpness", (DataPair <string>)item.Value, device, assetInfo, "Sharpness", data); break; case "Darkness": result &= SetCopyDefaultValues("Exposure", (DataPair <string>)item.Value, device, assetInfo, "Darkness", data); break; case "Contrast": result &= SetCopyDefaultValues("Contrast", (DataPair <string>)item.Value, device, assetInfo, "Contrast", data); break; case "ImagePreview": result &= SetCopyDefaultValues("ImagePreview", (DataPair <string>)item.Value, device, assetInfo, "Image Preview", data); break; } } return(result); }