예제 #1
0
파일: Sgtin96.cs 프로젝트: lluvr/sgtin96
        /// <summary>
        /// Decode hex string into Sgtin class instance <see cref="Sgtin96"/>
        /// </summary>
        /// <param name="hex"></param>
        /// <returns></returns>
        public static Sgtin96 HexStringToSgtin96(string hex)
        {
            // validate by string length and convert to bit array
            if (hex.Length != 24)
            {
                throw new FormatException("Provided hexString must be 24 characters long.");
            }
            BitArray bits = SgtinDecoder.HexStringToBitArray(hex);

            // validate and get header
            uint header = SgtinDecoder.BitArrayToUInt(bits, 0, 8);

            if (header != Sgtin96Header)
            {
                throw new FormatException("Provided header is not valid SGTIN96 header.");
            }

            // get filter and partition uInt from bits
            SgtinFilter filter    = (SgtinFilter)SgtinDecoder.BitArrayToUInt(bits, 8, 3);
            byte        partition = (byte)SgtinDecoder.BitArrayToUInt(bits, 11, 3);

            // decode partition related values
            ulong companyPrefix;
            uint  itemReference;

            SgtinDecoder.DecodePartition(bits, SgtinPartitions, partition, out companyPrefix, out itemReference);

            // get serial uLong
            ulong serialReference = SgtinDecoder.BitArrayToULong(bits, 58, 38);

            // init and return new class instance
            return(new Sgtin96(Sgtin96Header, filter, partition, companyPrefix, itemReference, serialReference));
        }
예제 #2
0
 /// <summary>
 /// Base Constructor
 /// </summary>
 /// <param name="header"></param>
 /// <param name="filter"></param>
 /// <param name="partition"></param>
 /// <param name="companyPrefix"></param>
 /// <param name="itemReference"></param>
 /// <param name="serialReference"></param>
 public Sgtin(byte header, SgtinFilter filter, byte partition, ulong companyPrefix, uint itemReference, ulong serialReference)
 {
     _header          = header;
     _filter          = filter;
     _partition       = partition;
     _companyPrefix   = companyPrefix;
     _itemReference   = itemReference;
     _serialReference = serialReference;
 }
        /// <summary>
        /// 8.3.1. Метод для поиска по реестру КИЗ
        /// </summary>
        /// <param name="filter">Фильтр для поиска по реестру КИЗ</param>
        /// <param name="startFrom">Индекс первой записи в списке возвращаемых КИЗ</param>
        /// <param name="count">Количество записей в списке возвращаемых КИЗ</param>
        /// <returns>Список КИЗ</returns>
        public EntriesResponse <SgtinExtended> GetSgtins(SgtinFilter filter, int startFrom, int count)
        {
            RequestRate(0.5); // 69

            return(Post <EntriesResponse <SgtinExtended> >("reestr/sgtin/filter", new
            {
                filter = filter ?? new SgtinFilter(),
                start_from = startFrom,
                count = count,
            }));
        }
예제 #4
0
파일: Sgtin96.cs 프로젝트: lluvr/sgtin96
 /// <summary>
 /// sgtin96 constructor
 /// </summary>
 /// <param name="header"></param>
 /// <param name="filter"></param>
 /// <param name="partition"></param>
 /// <param name="companyPrefix"></param>
 /// <param name="itemReference"></param>
 /// <param name="serialReference"></param>
 public Sgtin96(byte header, SgtinFilter filter, byte partition, ulong companyPrefix, uint itemReference, ulong serialReference)
     : base(header, filter, partition, companyPrefix, itemReference, serialReference)
 {
 }