using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace crusherScanner { internal class FileAccess { public static HashSet GetOreDefData(HashSet samples,string barcode) { string[] DataDirs = new string[2] { Properties.Settings.Default.OreDefWorkFile, Properties.Settings.Default.OreDefInFile }; try { foreach (var DataDir in DataDirs) { if (Directory.Exists(DataDir)) { var jobFiles = Directory.EnumerateFiles(DataDir, "ML??????.csv", SearchOption.TopDirectoryOnly); foreach (var jobFile in jobFiles) { bool sampleFound; (samples, sampleFound) = ReadCSV(barcode, jobFile, samples); if (sampleFound) { return samples; } } } } } catch (Exception ex) { MessageBox.Show("An error occurred." + Environment.NewLine + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return samples; } private static (HashSet,bool) ReadCSV(string barcode, string CsvFile, HashSet samples) { bool BarcodeFound = false; string[] RawSampleData = new string[1] { "" }; string[] lines = File.ReadAllLines(CsvFile); foreach (var line in lines) { if (line.Contains('\u002C')) { RawSampleData = line.Split('\u002C'); } if (RawSampleData.Length == 9) { Samples sample = new(); if (RawSampleData[0] == barcode) { BarcodeFound = true; } if (RawSampleData[0] != "SAMPLEID") { sample.Sid = RawSampleData[0]; sample.Job = RawSampleData[1]; if (RawSampleData[2] == "PYRITE") { sample.Pyrite = true; } if (RawSampleData[3] == "PLASTIC") { sample.Plastic = true; } if (RawSampleData[4] == "MANGANESE") { sample.Manganese = true; } if (RawSampleData[5] == "HAMMEROIL") { sample.HammerOil = true; } samples.Add(sample); } } } return (samples,BarcodeFound); } } }