using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace crusherScanner { internal class OreDefData { private static HashSet SampleDataCache = new(); /// /// Check if this sample has a prefix that need checking. /// /// Scan object data. /// False on error. True on success. public static Scan CheckSampleType(Scan scanned) { string[] OreDefTypesArray; string OreDefTypes = Properties.Settings.Default.OreDefTypes; if (OreDefTypes.Contains(',')) { OreDefTypesArray = OreDefTypes.Split(','); for (int i = 0; i < OreDefTypesArray.Length; i++) { if (scanned.barcode.Contains(OreDefTypesArray[i].Trim())) { scanned.sampleType = OreDefTypesArray[i].Trim(); return scanned; } } } else { MessageBox.Show("OreDef prefix must be a comma seperated list.","Error"); scanned.sampleType = "Error!"; } return scanned; } public static Scan CheckContaminates(Scan scanned) { scanned.sampleData = new(); if (SampleDataCache.Count == 0) { SampleDataCache = FileAccess.GetOreDefData(SampleDataCache,scanned.barcode); } scanned.BufferCount = SampleDataCache.Count; for (int i = 0; i < 2; i++) { foreach (var Sample in SampleDataCache) { if (scanned.barcode == Sample.Sid) { scanned.sampleData = Sample; if (Sample.HammerOil || Sample.Manganese || Sample.Plastic || Sample.Pyrite) { scanned.Contaminated = true; return scanned; } return scanned; } } SampleDataCache = FileAccess.GetOreDefData(SampleDataCache,scanned.barcode); scanned.BufferCount = SampleDataCache.Count; } scanned.SampleNotFound = true; return scanned; } } }