using Application.ATG_Classic_App.Model; using AutoMapper; using Edge.Core.IndustryStandardInterface.ATG; using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Text; namespace Application.ATG_Classic_App { internal class RichTankInfo { internal RichTankInfo(IServiceProvider services, TankConfig tankConfig, TankOverallConfig tankOverallConfig, IProbeHandler probeHandler) { if (tankConfig == null || tankOverallConfig == null || probeHandler == null || tankConfig.TankProfileDatas == null || probeHandler.Probe.DeviceId != tankConfig.ProbeConfig.DeviceId) throw new ArgumentException("Miss or invalid configuation for Tank"); var tankLimit = services.GetRequiredService().Map(tankConfig.TankLimitConfig); var tankProduct = services.GetRequiredService().Map(tankConfig.ProductConfig); var tank = new Tank() { TankNumber = tankConfig.TankNumber, State = TankState.Idle, Label = tankConfig.Label, Diameter = tankConfig.Diameter, Limit = tankLimit, Probe = new Probe() { DeviceId = tankConfig.ProbeConfig.DeviceId, HardwareIdentity = probeHandler.Probe.HardwareIdentity, ProbeLength = probeHandler.Probe.ProbeLength, ProbeOffset = tankConfig.ProbeConfig.ProbeOffset, WaterOffset = tankConfig.ProbeConfig.WaterOffset, }, Product = tankProduct }; this.Tank = tank; this.TankConfig = tankConfig; this.TankOverallConfig = tankOverallConfig; } public Tank Tank { get; } public TankConfig TankConfig { get; } public TankOverallConfig TankOverallConfig { get; } } }