123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace VaporRecoveryOnlineWatchHubApp.Config
- {
- public class VRBoardNozzleConfig
- {
- public int SiteLevelNozzleId { get; set; }
- public int SiteLevelDispenserId { get; set; }
- public string SiteLevelDispenserDescription { get; set; }
- public byte? DataCollectorNozzleNumber { get; set; }
- public int? DataCollectorDeviceId { get; set; }
- public override string ToString()
- {
- return GetType().GetProperties().Aggregate(string.Empty,
- (result, next) => result + $"{next.Name} : {(next.GetValue(this)?.ToString()) ?? string.Empty} ");
- }
- }
- public class VRBoardNozzleConfigs
- {
- public List<VRBoardNozzleConfig> data { get; set; } = new List<VRBoardNozzleConfig>();
- public VRBoardNozzleConfig DeviceInfoToSiteNozzleConfig(int deviceId, int addressNo) =>
- data.Where(c => c.DataCollectorDeviceId == deviceId && c.DataCollectorNozzleNumber == addressNo).
- FirstOrDefault();
- public int? DeviceInfoToSiteNozzleId(int deviceId, int addressNo) =>
- data.Where(c => c.DataCollectorDeviceId == deviceId && c.DataCollectorNozzleNumber == addressNo).
- FirstOrDefault()?.SiteLevelNozzleId;
- public List<int> DeviceInfoToSiteNozzleIdList(int deviceId) =>
- data.Where(c => c.DataCollectorDeviceId == deviceId).Select(c => c.SiteLevelNozzleId).ToList();
- public int? DeviceInfoToSiteDispenserId(int deviceId, int addressNo) =>
- data.Where(c => c.DataCollectorDeviceId == deviceId && c.DataCollectorNozzleNumber == addressNo).
- FirstOrDefault()?.SiteLevelDispenserId;
- public string DeviceInfoToSiteDispenserDescription(int deviceId, int addressNo) =>
- data.Where(c => c.DataCollectorDeviceId == deviceId && c.DataCollectorNozzleNumber == addressNo).
- FirstOrDefault()?.SiteLevelDispenserDescription;
- public VRBoardNozzleConfig SiteNozzleIdToConfig(int siteNozzleId) =>
- data.Where(c => c.SiteLevelNozzleId == siteNozzleId).FirstOrDefault();
- }
- //public static class NozzleConfigsExtension
- //{
- // public static VRBoardNozzleConfigs Sort(this VRBoardNozzleConfigs self)
- // {
- // self.data = self.data.OrderBy(x => x.SiteLevelNozzleId).ToList();
- // return self;
- // }
- // public static VRBoardNozzleConfigs CreateNozzleConfigs(this VRBoardNozzleConfigs nozzleConfigs, string nozzleDeviceMapping, string nozzleDispenserMapping)
- // {
- // var configs = nozzleConfigs.data;
- // var groupDelimeter = ";";
- // var elementDelimeter = ":";
- // if (!string.IsNullOrEmpty(nozzleDispenserMapping))
- // {
- // var mappings = nozzleDispenserMapping.Split(groupDelimeter);
- // if (mappings.Length >= 0)
- // {
- // foreach (var m in mappings)
- // {
- // // format of mapping should like 1号油机:1:1,2,3,4 which represents dispenser description:dispenser id:site nozzle list
- // var mapping = m.Split(elementDelimeter);
- // if (mapping.Length == 3 &&
- // int.TryParse(mapping[1], out int dispenserId))
- // {
- // var dispenserDesc = mapping[0];
- // var nozzleList = mapping[2].Split(",");
- // foreach (var n in nozzleList)
- // {
- // if (int.TryParse(n, out int nozzleId))
- // {
- // var nozzleConfig = new VRBoardNozzleConfig
- // {
- // SiteLevelDispenserDescription = dispenserDesc,
- // SiteLevelDispenserId = dispenserId,
- // SiteLevelNozzleId = nozzleId
- // };
- // if (configs.Where(i => i.SiteLevelNozzleId == nozzleId).FirstOrDefault() == null)
- // {
- // configs.Add(nozzleConfig);
- // }
- // else
- // {
- // throw new ArgumentNullException($"Duplicated nozzle id {nozzleId} found");
- // }
- // }
- // }
- // }
- // }
- // }
- // }
- // if (!string.IsNullOrEmpty(nozzleDeviceMapping))
- // {
- // var mappings = nozzleDeviceMapping.Split(groupDelimeter);
- // if (mappings.Length >= 0)
- // {
- // foreach (var m in mappings)
- // {
- // // format of mapping should like 1:1:1 which represents deviceId:addressNo:siteNozzleNo
- // var mapping = m.Split(elementDelimeter);
- // if (mapping.Length == 3 &&
- // int.TryParse(mapping[0], out int deviceId) &&
- // byte.TryParse(mapping[1], out byte addressNo) &&
- // int.TryParse(mapping[2], out int siteNozzleNo))
- // {
- // configs.ForEach(x =>
- // {
- // if (x.SiteLevelNozzleId == siteNozzleNo)
- // {
- // x.DataCollectorDeviceId = deviceId;
- // x.DataCollectorNozzleNumber = addressNo;
- // }
- // });
- // }
- // }
- // }
- // }
- // return nozzleConfigs.Sort();
- // }
- //}
- }
|