tbf/TBF/Rig/Output/Printers/GroupPrinting/Single/GroupPrinterUtils.cs

112 lines
3.8 KiB
C#

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<Component> cmpntEntities, in List<string> itemsToPrint)
{
ISession session = TBF.DB.CreateSession(DBKind.Config);
IList<Component> cmpntEntitiesAll = session.QueryOver<Component>()
.OrderBy(x => x.ItemNr).Asc
.List<Component>();
cmpntEntities?.Clear();
List<PrinterDef> printerDefs = new List<PrinterDef>();
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<string> allPrinters = new List<string>();
ISession session = TBF.DB.CreateSession(DBKind.Config);
IList<Component> cmpntEntitiesAll = session.QueryOver<Component>()
.OrderBy(x => x.ItemNr).Asc
.List<Component>();
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<PrinterDef> 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<Component> 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();
}
}
}
}
}