112 lines
3.8 KiB
C#
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();
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
} |