///
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
namespace TBF
{
public class Data
{
public static int WMsCount;
public static int LineSize;
public static int CompoundWMsCount;
public static int HeatMetersCount;
public static int MaxPartNr;
static Data()
{
/// Default values applied when there is no BanchInfo component
WMsCount = 20;
LineSize = 10;
CompoundWMsCount = 1;
HeatMetersCount = 0;
MaxPartNr = WMsCount / LineSize;
}
public static void SetData()
{
WMsCount = Config.Data.WMsCount;
CompoundWMsCount = Config.Data.CompoundWMsCount;
LineSize = Config.Data.LineSize;
HeatMetersCount = Config.Data.HeatMetersCount;
MaxPartNr = Config.Data.MaxPartNr;
}
///
/// Determines whether tests part number is OK.
/// Examples of correct part number are:
/// 1, 2, 12, 21 in case of max. part nr.== 2
/// 1, 2, 3, 4, 12, 13, 14, 23, 24, 34, 123, 124, 134, 234, 1234 in case of max. part nr.== 4
///
/// Tests par tnumber
/// true when Part number is OK
public static bool IsGoodPartNr(int partNr)
{
bool firstDigitIsOK = ((partNr % 10) > 0) && ((partNr % 10) <= MaxPartNr);
bool secondDigitIsOK = (((partNr / 10) % 10) > 0) && (((partNr / 10) % 10) <= MaxPartNr);
bool thirdDigitIsOK = (((partNr / 100) % 10) > 0) && (((partNr / 100) % 10) <= MaxPartNr);
bool fourthDigitIsOK = (((partNr / 1000) % 10) > 0) && (((partNr / 1000) % 10) <= MaxPartNr);
if (firstDigitIsOK && (partNr / 10 == 0)) return true;
if (firstDigitIsOK && secondDigitIsOK && (partNr / 100 == 0)) return true;
if (firstDigitIsOK && secondDigitIsOK && thirdDigitIsOK && (partNr / 1000 == 0)) return true;
if (firstDigitIsOK && secondDigitIsOK && thirdDigitIsOK && fourthDigitIsOK && (partNr / 10000 == 0)) return true;
return false;
}
}
}