OreDefData.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace crusherScanner
  7. {
  8. internal class OreDefData
  9. {
  10. private static HashSet<Samples> SampleDataCache = new();
  11. /// <summary>
  12. /// Check if this sample has a prefix that need checking.
  13. /// </summary>
  14. /// <param name="scanned">Scan object data.</param>
  15. /// <returns>False on error. True on success.</returns>
  16. public static Scan CheckSampleType(Scan scanned)
  17. {
  18. string[] OreDefTypesArray;
  19. string OreDefTypes = Properties.Settings.Default.OreDefTypes;
  20. if (OreDefTypes.Contains(','))
  21. {
  22. OreDefTypesArray = OreDefTypes.Split(',');
  23. for (int i = 0; i < OreDefTypesArray.Length; i++)
  24. {
  25. if (scanned.barcode.Contains(OreDefTypesArray[i]))
  26. {
  27. scanned.sampleType = OreDefTypesArray[i];
  28. return scanned;
  29. }
  30. }
  31. }
  32. else
  33. {
  34. MessageBox.Show("OreDef prefix must be a comma seperated list.","Error");
  35. scanned.sampleType = "Error!";
  36. }
  37. return scanned;
  38. }
  39. public static Scan CheckContaminates(Scan scanned)
  40. {
  41. scanned.sampleData = new();
  42. if (SampleDataCache.Count == 0)
  43. {
  44. SampleDataCache = FileAccess.GetOreDefData(SampleDataCache,scanned.barcode);
  45. }
  46. scanned.BufferCount = SampleDataCache.Count;
  47. for (int i = 0; i < 2; i++)
  48. {
  49. foreach (var Sample in SampleDataCache)
  50. {
  51. if (scanned.barcode == Sample.Sid)
  52. {
  53. scanned.sampleData = Sample;
  54. if (Sample.HammerOil || Sample.Manganese || Sample.Plastic || Sample.Pyrite)
  55. {
  56. scanned.Contaminated = true;
  57. return scanned;
  58. }
  59. return scanned;
  60. }
  61. }
  62. SampleDataCache = FileAccess.GetOreDefData(SampleDataCache,scanned.barcode);
  63. scanned.BufferCount = SampleDataCache.Count;
  64. }
  65. scanned.SampleNotFound = true;
  66. return scanned;
  67. }
  68. }
  69. }