/// /// Copyright (c) 2021 Sensus Slovensko a.s. /// using System; using System.Collections.Generic; using Common; namespace TBF.UI { /// /// Contains a procedure name and procedure selection source specification /// (local/shared/order from Oracle/order from tracing DB) /// public class ProcedureInfo { public readonly ProcedureSelection Source; public int ItemNr; public readonly string Name; public readonly string Signature; public string Variant; public IOrderInfo OrderInfo; public string Workflow; public string LaserMarking; public bool IsNative; public ProcedureSelection ResolvedSource; /// ProcedureSelection.FromLocalDB or ProcedureSelection.FromSharedDB when Resolved==true public string ResolvedName; public ProcedureInfo(ProcedureSelection source, int itemNr, string name, string signature = null, string variant = null, IOrderInfo orderInfo = null, string workflow = null, string laserMarking = null) { Source = source; ItemNr = itemNr; Name = name; Signature = (signature == null) ? string.Empty : signature; Variant = (variant == null) ? string.Empty : variant; OrderInfo = orderInfo; Workflow = workflow; LaserMarking = laserMarking; if (source == ProcedureSelection.FromLocalDB || source == ProcedureSelection.FromSharedDB) { IsNative = true; ResolvedSource = source; ResolvedName = name; } else { IsNative = false; ResolvedSource = ProcedureSelection.None; ResolvedName = string.Empty; } } public static string GetSignature(ProcedureSelection source, ICollection allSources) { return (source == ProcedureSelection.OrderFromOracleDB) ? "" : (source == ProcedureSelection.OrderFromTracingDB) ? "" : (source == ProcedureSelection.FromSharedDB) ? "R" : (allSources != null && allSources.Contains(ProcedureSelection.FromSharedDB)) ? "L" : ""; } public bool IsValid { get { return (ResolvedSource != ProcedureSelection.None) && !string.IsNullOrEmpty(ResolvedName); } } public override string ToString() { switch (Source) { case ProcedureSelection.OrderFromOracleDB: case ProcedureSelection.OrderFromTracingDB: return Name; case ProcedureSelection.FromSharedDB: case ProcedureSelection.FromLocalDB: default: return string.Format("{0}{1} {2}", Signature, ItemNr, Name); } } } }