/// <summary> /// Creates and returns a <see cref="PluginConfigurationData" /> instance containing the /// configuration data from this control. /// </summary> /// <returns>The configuration data.</returns> public PluginConfigurationData GetConfiguration() { ContentionData data = new ContentionData() { SelectedControlPanelActivities = GetControlPanelData(), SelectedContentionActivities = GetContentionActivityData() }; LocalPrintQueueInfo queue = null; PrintQueueSelectionData localQueueSelectionData = null; if (data.SelectedContentionActivities.OfType <PrintActivityData>().Any()) { PrintActivityData printData = data.SelectedContentionActivities.OfType <PrintActivityData>().Single(); queue = string.IsNullOrEmpty(printData.QueueName) ? null : new LocalPrintQueueInfo(printData.QueueName); localQueueSelectionData = (queue == null) ? null : new PrintQueueSelectionData(queue); } return(new PluginConfigurationData(data, Version) { Assets = assetSelectionControl.AssetSelectionData, Documents = documentSelectionControl.DocumentSelectionData, PrintQueues = localQueueSelectionData }); }
private IEnumerable <PrintQueueInfo> CreateLocalPrintQueues(PrintQueueSelectionData printQueueSelectionData) { foreach (LocalPrintQueueDefinition definition in printQueueSelectionData.SelectedPrintQueues.OfType <LocalPrintQueueDefinition>()) { yield return(new LocalPrintQueueInfo(definition.QueueName, definition.AssociatedAssetId)); } }
private void SetBulkPrintQueues() { _bulkPrintQueueList = new BulkPrintQueueList(); foreach (VirtualResourceMetadataPrintQueueUsage vrmpqu in _printQueueMetadataUsages) { XElement pqsd = XElement.Parse(vrmpqu.PrintQueueSelectionData); PrintQueueSelectionData printQueueSelectionData = Serializer.Deserialize <PrintQueueSelectionData>(pqsd); var allRemote = ConfigurationServices.AssetInventory.GetRemotePrintQueues(); foreach (RemotePrintQueueDefinition printQueueId in printQueueSelectionData.SelectedPrintQueues.Where(x => x.GetType() == typeof(RemotePrintQueueDefinition))) { var remoteQueues = allRemote.Where(x => x.PrintQueueId == printQueueId.PrintQueueId).Select(x => new { x.QueueName, x.ServerHostName }); if (remoteQueues.Count() == 0) { continue; } if (PrintQueueNotInList(printQueueId.PrintQueueId.ToString())) { BulkPrintQueueEnt bulkqueue = new BulkPrintQueueEnt(); bulkqueue.OldHostName = remoteQueues.FirstOrDefault().ServerHostName; bulkqueue.CurrentQueue = remoteQueues.FirstOrDefault().QueueName; bulkqueue.Active = true; bulkqueue.VirtualResourceMetadataId = vrmpqu.VirtualResourceMetadataId; if (!_bulkPrintQueueList.Select(x => x.CurrentQueue).Contains(bulkqueue.CurrentQueue)) { _bulkPrintQueueList.Add(bulkqueue); } } } } }
/// <summary> /// Transforms <see cref="PrintQueueSelectionData" /> from a <see cref="PluginConfigurationData" /> object into the corresponding /// <see cref="PrintQueueInfoCollection" /> using data from the specified <see cref="IAssetInventory" />. /// </summary> /// <param name="configurationData">The <see cref="PluginConfigurationData" />.</param> /// <param name="assetInventory">The <see cref="IAssetInventory" />.</param> /// <returns>A <see cref="PrintQueueInfoCollection" /> object.</returns> /// <exception cref="ArgumentNullException"> /// <paramref name="configurationData" /> is null. /// <para>or</para> /// <paramref name="assetInventory" /> is null. /// </exception> public static PrintQueueInfoCollection GetExecutionPrintQueues(PluginConfigurationData configurationData, IAssetInventory assetInventory) { if (configurationData == null) { throw new ArgumentNullException(nameof(configurationData)); } if (assetInventory == null) { throw new ArgumentNullException(nameof(assetInventory)); } PrintQueueSelectionData printQueueSelectionData = configurationData.PrintQueues ?? new PrintQueueSelectionData(); List <PrintQueueInfo> printQueues = new List <PrintQueueInfo>(); foreach (LocalPrintQueueDefinition localQueue in printQueueSelectionData.SelectedPrintQueues.OfType <LocalPrintQueueDefinition>()) { printQueues.Add(new LocalPrintQueueInfo(localQueue.QueueName, localQueue.AssociatedAssetId)); } List <RemotePrintQueueInfo> allRemoteQueues = assetInventory.GetRemotePrintQueues().ToList(); foreach (RemotePrintQueueDefinition remoteQueue in printQueueSelectionData.SelectedPrintQueues.OfType <RemotePrintQueueDefinition>()) { printQueues.Add(allRemoteQueues.First(n => n.PrintQueueId == remoteQueue.PrintQueueId)); } return(new PrintQueueInfoCollection(printQueues)); }
/// <summary> /// Initializes this configuration control with the specified <see cref="DocumentSelectionData" />. /// </summary> public void Initialize(DocumentSelectionData docData, PrintQueueSelectionData queueData, int delay, bool shuffle, bool usePrintServerNotification) { ConfigureControls(delay, shuffle, usePrintServerNotification); documentSelectionControl.Initialize(docData); LoadPrintQueues(queueData.SelectedPrintQueues); RefreshQueueDataGrid(); }
private IEnumerable <PrintQueueInfo> CreateRemotePrintQueues(PrintQueueSelectionData printQueueSelectionData) { using (AssetInventoryContext context = DbConnect.AssetInventoryContext()) { var printQueueIds = printQueueSelectionData.SelectedPrintQueues.OfType <RemotePrintQueueDefinition>().Select(n => n.PrintQueueId); return(context.RemotePrintQueues.Where(n => printQueueIds.Contains(n.RemotePrintQueueId)).ToRemotePrintQueueInfoCollection()); } }
private PrintQueueInfoCollection GetPrintQueues(PrintQueueSelectionData printQueueSelectionData) { List <PrintQueueInfo> printQueues = new List <PrintQueueInfo>(); printQueues.AddRange(CreateLocalPrintQueues(printQueueSelectionData)); printQueues.AddRange(CreateRemotePrintQueues(printQueueSelectionData)); printQueues.AddRange(CreateDynamicPrintQueues(printQueueSelectionData)); return(new PrintQueueInfoCollection(printQueues)); }
/// <summary> /// Initializes this control by loading all print queues from the asset inventory /// and setting the selected queues based on the specified <see cref="PrintQueueSelectionData" />. /// </summary> /// <param name="data">The print queue selection data.</param> /// <exception cref="ArgumentNullException"><paramref name="data" /> is null.</exception> public void Initialize(PrintQueueSelectionData data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } Initialize(); SetSelectedQueues(data.SelectedPrintQueues.OfType <RemotePrintQueueDefinition>().Select(n => n.PrintQueueId)); }
/// <summary> /// Updates the virtual resource printqueueusage metadata. /// </summary> /// <param name="oldQueue">Old Queue</param> /// <param name="newQueue">New Queue</param> private void UpdateVirtualResourceMetadataPrintQueueUsage(string oldQueue, string newQueue, string oldHostName, string newHostName) { if (oldQueue == "N/A") { AddQueueToAll(newQueue); return; } foreach (VirtualResourceMetadataPrintQueueUsage vrmpqu in _printQueueMetadataUsages) { XElement asd = XElement.Parse(vrmpqu.PrintQueueSelectionData); PrintQueueSelectionData printQueueSelectionData = Serializer.Deserialize <PrintQueueSelectionData>(asd); if (printQueueSelectionData.SelectedPrintQueues.Count == 0) { continue; } var queues = printQueueSelectionData.SelectedPrintQueues.Where(x => x.GetType() == typeof(RemotePrintQueueDefinition)); List <Guid> remotequeues = new List <Guid>(); foreach (var q in queues) { remotequeues.Add(((RemotePrintQueueDefinition)q).PrintQueueId); } var oldGuidId = ConfigurationServices.AssetInventory.GetRemotePrintQueues().Where(x => x.QueueName == oldQueue && x.ServerHostName == oldHostName).FirstOrDefault(); var newGuidId = ConfigurationServices.AssetInventory.GetRemotePrintQueues().Where(x => x.QueueName == newQueue && x.ServerHostName == newHostName).FirstOrDefault(); if (remotequeues.Contains(oldGuidId.PrintQueueId)) { var theRest = remotequeues.Where(x => x != oldGuidId.PrintQueueId); var changes = remotequeues.Where(x => x == oldGuidId.PrintQueueId).Select(x => x = newGuidId.PrintQueueId); printQueueSelectionData.SelectedPrintQueues.Clear(); foreach (var queue in changes) { printQueueSelectionData.SelectedPrintQueues.Add(new RemotePrintQueueDefinition(queue)); } foreach (var queue in theRest) { if (null == printQueueSelectionData.SelectedPrintQueues.Where(x => ((RemotePrintQueueDefinition)x).PrintQueueId == queue)) { printQueueSelectionData.SelectedPrintQueues.Add(new RemotePrintQueueDefinition(queue)); } } } XElement newAsd = Serializer.Serialize(printQueueSelectionData); vrmpqu.PrintQueueSelectionData = newAsd.ToString(); } int result = _context.SaveChanges(); }
private static string GetPrintQueueDisplayString(PluginConfigurationData configurationData) { PrintQueueSelectionData printQueues = configurationData.PrintQueues; if (printQueues?.SelectedPrintQueues?.Count > 0) { return($"Print Queues: {printQueues.SelectedPrintQueues.Count} selected"); } else { return(null); } }
private static bool ValidatePrintQueueUsage(VirtualResourceMetadataPrintQueueUsage queueUsage, AssetInventoryContext context) { bool result = true; if (queueUsage != null) { PrintQueueSelectionData docSelection = Serializer.Deserialize <PrintQueueSelectionData>(XElement.Parse(queueUsage.PrintQueueSelectionData)); foreach (RemotePrintQueueDefinition def in docSelection.SelectedPrintQueues.OfType <RemotePrintQueueDefinition>()) { result &= context.RemotePrintQueues.Any(q => q.RemotePrintQueueId == def.PrintQueueId); } } return(result); }
private void AddQueueToAll(string newQueue) { var newGuidId = ConfigurationServices.AssetInventory.GetRemotePrintQueues().Where(x => x.QueueName == newQueue).Select(x => x.PrintQueueId).FirstOrDefault(); foreach (VirtualResourceMetadataPrintQueueUsage vrmpqu in _printQueueMetadataUsages) { XElement asd = XElement.Parse(vrmpqu.PrintQueueSelectionData); PrintQueueSelectionData printQueueSelectionData = Serializer.Deserialize <PrintQueueSelectionData>(asd); if (printQueueSelectionData.SelectedPrintQueues.Where(x => ((RemotePrintQueueDefinition)x).PrintQueueId == newGuidId).Count() == 0) { printQueueSelectionData.SelectedPrintQueues.Add(new RemotePrintQueueDefinition(newGuidId)); } XElement newAsd = Serializer.Serialize(printQueueSelectionData); vrmpqu.PrintQueueSelectionData = newAsd.ToString(); } int result = _context.SaveChanges(); }
private IEnumerable <PrintQueueInfo> CreateDynamicPrintQueues(PrintQueueSelectionData printQueueSelectionData) { using (AssetInventoryContext context = DbConnect.AssetInventoryContext()) { var printQueueDefinitions = printQueueSelectionData.SelectedPrintQueues.OfType <DynamicLocalPrintQueueDefinition>(); var assetIds = printQueueDefinitions.Select(n => n.AssetId); var driverIds = printQueueDefinitions.Select(n => n.PrintDriverId); var assets = context.Assets.Where(n => assetIds.Contains(n.AssetId)).ToAssetInfoCollection(); var drivers = context.PrintDrivers.Where(n => driverIds.Contains(n.PrintDriverId)).ToPrintDriverInfoCollection(); foreach (DynamicLocalPrintQueueDefinition definition in printQueueDefinitions) { IPrinterInfo printDevice = assets.FirstOrDefault(n => n.AssetId == definition.AssetId) as IPrinterInfo; PrintDriverInfo printDriver = drivers.FirstOrDefault(n => n.PrintDriverId == definition.PrintDriverId); if (printDevice != null && printDriver != null) { yield return(new DynamicLocalPrintQueueInfo(printDevice, printDriver, definition.PrinterPort, definition.PrintDriverConfiguration)); } } } }
public ManifestPrintQueueAgent(Guid scenarioId) { using (EnterpriseTestContext context = new EnterpriseTestContext()) { // Retrieve print queue data for all enabled activities in the specified session var activities = (from printQueueUsage in context.VirtualResourceMetadataPrintQueueUsages let data = printQueueUsage.PrintQueueSelectionData let metadata = printQueueUsage.VirtualResourceMetadata let resource = metadata.VirtualResource where resource.EnterpriseScenarioId == scenarioId && resource.Enabled == true && metadata.Enabled == true && data != null select new { Id = metadata.VirtualResourceMetadataId, PrintQueues = data }).ToList(); foreach (var activity in activities) { PrintQueueSelectionData printQueueSelectionData = GetSelectionData(activity.PrintQueues); _printQueues.Add(activity.Id, GetPrintQueues(printQueueSelectionData)); } } }