init
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace DatabaseExport
|
||||
{
|
||||
public class LabratoryDetails
|
||||
{
|
||||
ISO.LabratoryDetails _lab = null;
|
||||
public string Name
|
||||
{
|
||||
get => _lab.Name;
|
||||
set => _lab.Name = value;
|
||||
}
|
||||
public LabratoryDetails()
|
||||
{
|
||||
_lab = new ISO.LabratoryDetails();
|
||||
_lab.Name = "(none)";
|
||||
}
|
||||
public LabratoryDetails(ISO.LabratoryDetails lab) { _lab = new ISO.LabratoryDetails(lab); }
|
||||
public ISO.LabratoryDetails GetIsoLab() { return _lab; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return Name;
|
||||
}
|
||||
}
|
||||
public class LabratoryDetailsList
|
||||
{
|
||||
protected LabratoryDetailsList()
|
||||
{
|
||||
}
|
||||
private static LabratoryDetailsList _list = new LabratoryDetailsList();
|
||||
public static LabratoryDetailsList LabratoryList => _list;
|
||||
private Dictionary<string, LabratoryDetails> _labs = null;
|
||||
|
||||
private void PopulateList()
|
||||
{
|
||||
if (null != _labs) return;
|
||||
_labs = new Dictionary<string, LabratoryDetails>();
|
||||
foreach (var l in GetAllLabs())
|
||||
{
|
||||
if (!_labs.ContainsKey(l.Name))
|
||||
{
|
||||
_labs.Add(l.Name, l);
|
||||
}
|
||||
else
|
||||
{
|
||||
_labs[l.Name] = l;
|
||||
}
|
||||
}
|
||||
}
|
||||
private static object _LabLock = new object();
|
||||
|
||||
public LabratoryDetails[] Labs
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (_LabLock)
|
||||
{
|
||||
PopulateList();
|
||||
}
|
||||
var labs = new List<LabratoryDetails>(_labs.Values);
|
||||
labs.Sort(CompareLabs);
|
||||
return labs.ToArray();
|
||||
}
|
||||
}
|
||||
private static int CompareLabs(LabratoryDetails a, LabratoryDetails b)
|
||||
{
|
||||
if (a == b) { return 0; }
|
||||
if (null == a) { return -1; }
|
||||
return null == b ? 1 : string.Compare(a.Name, b.Name, StringComparison.Ordinal);
|
||||
}
|
||||
public LabratoryDetails GetLab(string name)
|
||||
{
|
||||
try { lock (_LabLock) { return _labs != null ? _labs.ContainsKey(name) ? _labs[name] : null : null; } }
|
||||
catch (Exception) {/* DTS.Utilities.Logging.APILogger.Log("failed to get labratories", ex); */}
|
||||
return null;
|
||||
}
|
||||
|
||||
private LabratoryDetails[] GetAllLabs()
|
||||
{
|
||||
var list = new List<LabratoryDetails>();
|
||||
try
|
||||
{
|
||||
list.Add(new LabratoryDetails()); //This is the "(none)" entry
|
||||
list.AddRange(ISO.LabratoryDetails.GetAllLabratoryDetails().Select(lab => new LabratoryDetails(lab)));
|
||||
}
|
||||
catch (Exception) {/* DTS.Utilities.Logging.APILogger.Log("failed to get labratories", ex);*/ }
|
||||
return list.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user