RichTankInfo.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Application.ATG_Classic_App.Model;
  2. using AutoMapper;
  3. using Edge.Core.IndustryStandardInterface.ATG;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Text;
  8. namespace Application.ATG_Classic_App
  9. {
  10. internal class RichTankInfo
  11. {
  12. internal RichTankInfo(IServiceProvider services,
  13. TankConfig tankConfig, TankOverallConfig tankOverallConfig, IProbeHandler probeHandler)
  14. {
  15. if (tankConfig == null || tankOverallConfig == null || probeHandler == null
  16. || tankConfig.TankProfileDatas == null
  17. || probeHandler.Probe.DeviceId != tankConfig.ProbeConfig.DeviceId)
  18. throw new ArgumentException("Miss or invalid configuation for Tank");
  19. var tankLimit = services.GetRequiredService<IMapper>().Map<TankLimit>(tankConfig.TankLimitConfig);
  20. var tankProduct = services.GetRequiredService<IMapper>().Map<Product>(tankConfig.ProductConfig);
  21. var tank = new Tank()
  22. {
  23. TankNumber = tankConfig.TankNumber,
  24. State = TankState.Idle,
  25. Label = tankConfig.Label,
  26. Diameter = tankConfig.Diameter,
  27. Limit = tankLimit,
  28. Probe = new Probe()
  29. {
  30. DeviceId = tankConfig.ProbeConfig.DeviceId,
  31. HardwareIdentity = probeHandler.Probe.HardwareIdentity,
  32. ProbeLength = probeHandler.Probe.ProbeLength,
  33. ProbeOffset = tankConfig.ProbeConfig.ProbeOffset,
  34. WaterOffset = tankConfig.ProbeConfig.WaterOffset,
  35. },
  36. Product = tankProduct
  37. };
  38. this.Tank = tank;
  39. this.TankConfig = tankConfig;
  40. this.TankOverallConfig = tankOverallConfig;
  41. }
  42. public Tank Tank { get; }
  43. public TankConfig TankConfig { get; }
  44. public TankOverallConfig TankOverallConfig { get; }
  45. }
  46. }