/// <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
            });
        }
Esempio n. 2
0
 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);
                        }
                    }
                }
            }
        }
Esempio n. 4
0
        /// <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();
 }
Esempio n. 6
0
 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());
     }
 }
Esempio n. 7
0
        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);
                }
            }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        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();
        }
Esempio n. 13
0
        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));
                    }
                }
            }
        }
Esempio n. 14
0
        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));
                }
            }
        }