private static string getSegmentValue(int Value, int SegmentLength, SegmentTypeEnum SegmentType) { const char paddingChar = '0'; int _base = (int)SegmentType; string convertedValue = ToBase(_base, Value).PadLeft(SegmentLength, paddingChar); return(convertedValue); }
/// <summary> /// /// </summary> /// <param name="SegmentCount"></param> /// <param name="SegmentLength"></param> /// <param name="SegmentType"></param> /// <param name="MaxSegmentCount"></param> /// <returns></returns> private static bool checkSegmentCount(int SegmentCount, int SegmentLength, out SegmentTypeEnum SegmentType, out double MaxSegmentCount, out string SegmentPattern) { double numericSegmentLimit = 0; double alphanumericSegmentLimit = 0; numericSegmentLimit = getSegmentLimit(SegmentTypeEnum.Numeric, SegmentLength); alphanumericSegmentLimit = getSegmentLimit(SegmentTypeEnum.Alphanumeric, SegmentLength); MaxSegmentCount = alphanumericSegmentLimit; bool isValidSegmentCount = false; if (SegmentCount == 0) { isValidSegmentCount = true; SegmentType = SegmentTypeEnum.Closed; MaxSegmentCount = 0; SegmentPattern = "0"; } else if (SegmentCount <= numericSegmentLimit) { isValidSegmentCount = true; SegmentType = SegmentTypeEnum.Numeric; SegmentPattern = string.Empty.PadLeft(SegmentLength, '#'); } else if (SegmentCount <= alphanumericSegmentLimit) { isValidSegmentCount = true; SegmentType = SegmentTypeEnum.Alphanumeric; SegmentPattern = string.Empty.PadLeft(SegmentLength, '$'); } else { isValidSegmentCount = false; SegmentType = SegmentTypeEnum.Overflow; SegmentPattern = "0"; } return(isValidSegmentCount); }
/// <summary> /// /// </summary> /// <param name="SegmentType"></param> /// <param name="SegmentLength"></param> /// <returns></returns> private static double getSegmentLimit(SegmentTypeEnum SegmentType, int SegmentLength) { double resultLimit = 0; switch (SegmentType) { case SegmentTypeEnum.Numeric: resultLimit = getNumericLimit(SegmentLength); break; case SegmentTypeEnum.Alphanumeric: resultLimit = getAlphanumericLimit(SegmentLength); break; case SegmentTypeEnum.Closed: case SegmentTypeEnum.Overflow: default: resultLimit = 0; break; } return(resultLimit); }