Ejemplo n.º 1
0
        /// <summary>
        /// splits the parts of a tag-string
        /// </summary>
        /// <param name="TagString"></param>
        /// <returns></returns>
        private TagParts splitTag(Object TagString)
        {
            TagParts TParts = null;

            try
            {
                if (TagString != null)
                {
                    String[] Parts = ((String)TagString).Split(';');

                    if (Parts.GetUpperBound(0) == 1)
                    {
                        TParts = new TagParts();

                        TParts.IDString     = Parts[0];
                        TParts.DefaultValue = Parts[1];
                    }
                }

                return(TParts);
            }
            catch (Exception ex)
            {
                throw new Exception("Error while splitting tag", ex);
            }
        }
Ejemplo n.º 2
0
        public string GetEpc(string companyPrefix)
        {
            string          ret;
            TagParts        parts = new TagParts();
            List <TagParts> tags  = new List <TagParts>();
            TagParts        tp;
            int             half;

            //get all shipment container epc codes
            var sscc = entities.IMS_SHIPMENT_CONTAINERS.Where(x => x.SSCC.StartsWith("urn:epc:id:sscc")).ToList();

            foreach (var t in sscc)
            {
                tp        = new TagParts();
                half      = t.SSCC.LastIndexOf(':');
                tp.prefix = t.SSCC.Substring(0, half);
                string zz   = t.SSCC.Substring(half + 1, t.SSCC.Length - (half + 1));
                var    arry = zz.Split('.');

                //parse tag for serial number

                tp.companyPrefix = arry[0];
                tp.partnumber    = arry[1];

                long parseme = 0;


                if (arry.Length > 2)
                {
                    if (long.TryParse(arry[2], out parseme))
                    {
                        tp.serialNumber = arry[2];

                        if (EPCSerialNumber.ContainsKey(tp.companyPrefix))
                        {
                            if (EPCSerialNumber[tp.companyPrefix] < parseme)
                            {
                                EPCSerialNumber[tp.companyPrefix] = parseme;
                            }
                        }
                        else
                        {
                            EPCSerialNumber.Add(tp.companyPrefix, parseme);
                        }
                    }
                }
                tags.Add(tp);
            }

            parts.serialNumber = GetNewEPCSerialNumber(companyPrefix);

            //Get get next new numbers from tags

            long test       = 0;
            long partnumber = 0;

            if (tags.Where(v => v.companyPrefix == companyPrefix).ToList().Count > 0)
            {
                foreach (var sn in tags.Where(v => v.companyPrefix == companyPrefix).ToList())
                {
                    test = 0;

                    if (long.TryParse(sn.partnumber, out test))
                    {
                        if (test > partnumber)
                        {
                            partnumber = test;
                        }
                    }
                }

                parts.partnumber = partnumber.ToString();
            }
            else
            {
                parts.partnumber = "1000001";
            }


            parts.companyPrefix = companyPrefix;



            ret = string.Format("urn:epc:id:sscc:{0}.{1}.{2}", companyPrefix, parts.partnumber, parts.serialNumber);

            return(ret);
        }