using System.Collections.Generic; using System.Xml; using Common; using Config.Entities; using Config.Resources; using NHibernate; namespace TBF.Rig.Output.Printers.GroupPrinting.Single { public class GroupPrinterUtils { public static ISession GetCorrespondedEntities(in IList cmpntEntities, in List itemsToPrint) { ISession session = TBF.DB.CreateSession(DBKind.Config); IList cmpntEntitiesAll = session.QueryOver() .OrderBy(x => x.ItemNr).Asc .List(); cmpntEntities?.Clear(); List printerDefs = new List(); if (itemsToPrint != null && itemsToPrint.Count > 0) { foreach (string printer in itemsToPrint) { printerDefs.Add(PrinterDef.fromString(printer)); } } if (printerDefs.Count > 0) { foreach (PrinterDef printerDef in printerDefs) { foreach (var component in cmpntEntitiesAll) { if (printerDef.Equals(PrinterDef.fromComponent(component))) { cmpntEntities.Add(component); } } } } return session; } public static string[] GetExpandedGroupPrinters(string[] printers) { List allPrinters = new List(); ISession session = TBF.DB.CreateSession(DBKind.Config); IList cmpntEntitiesAll = session.QueryOver() .OrderBy(x => x.ItemNr).Asc .List(); string groupPrinterClassName = new Factory().ClassName; foreach (string printer in printers) { foreach (var component in cmpntEntitiesAll) { if (printer.Equals(component.Name)) { if (component.ClassName.Equals(groupPrinterClassName)) { List printersDef = PrinterDef.fromParametersString(component.Parameters); foreach (PrinterDef printerDef in printersDef) { allPrinters.Add(printerDef.Name); } } else { allPrinters.Add(printer); } } } } return allPrinters.ToArray(); } public static void UpdateParametersInEntitys(ISession session, IList cmpntEntities,string definedPrinter) { { using (var transaction = session.BeginTransaction()) { foreach (Component printerItem in cmpntEntities) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(printerItem.Parameters); XmlNodeList printerCfg = xmlDocument.GetElementsByTagName("PrinterName"); foreach (XmlNode itemNode in printerCfg) { itemNode.InnerText = definedPrinter; } printerItem.Parameters = xmlDocument.OuterXml; session.SaveOrUpdate(printerItem); /// Save user 'admin' } transaction.Commit(); } } } } }