/// <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); } }
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); }