public PartnerKeyWeb GetPartner(string name) { var tagName = GetTagName(name); if (_partnerTags.ContainsKey(tagName)) { return(_partnerTags[tagName]); } if (_parentResolveServiceSet != null) { var partner = _parentResolveServiceSet.GetPartner(name); if (partner != null) { return(partner); } } throw new ApplicationException("Partner Tag [" + tagName + "] not found."); }
public override void Apply(PartnerServicePackage package, string iteration, ResolveOffnetServiceSet rss) { var sk = package.GetService(rss.GetTagName(Concat(_sTag, iteration))); if (sk == null) { Debugger.Log(new PcatExceptionInfo($"Service {_sTag} not found!") { StackTrace = this.ToString() }); return; } AttributeValue value; PartnerKeyWeb key; var patts = new PartnerAtrributes(); patts.FromWeb(package.Partner); StringBuilder debugDetail = new StringBuilder(); if (_pTag == CONSTANT) { value = CreateAttribute(sk, _pAtt); key = package.Partner; debugDetail.Append("Constant"); } else { key = rss.GetPartner(_pTag); var av = patts.GetAttributeValue(_pAtt); if (av == null) { // if the product doesn't have a value, let's remove it from the service in case an old value is sitting there sk.RemoveAttribute(_sAttName); Debugger.Log(new DebugAttributeInfo(sk?.Id * -1, _sAttName, null, DebugAttributeInfoSourceType.Rule, DebugAttributeInfoFunctionType.GetValue, null) { RuleText = $"Removed because {_pTag}.{_pAtt} doesn't exist or is null" }); return; } value = CreateAttribute(sk, av); debugDetail.Append($"Copy from {_pTag}.{_pTag}"); } if (value != null) { var oldValue = sk.GetValue(_sAttName, SearchOptions.ALL_TRUE); var changed = (oldValue != null) ? false : AttributeChanged(oldValue, value); if (_strip) { //We need to remove everything but the number from the value before we use it... value.Value = ParseNumber(value.Value); debugDetail.Append(", value stripped to just a number"); } } else { debugDetail.Append($", {_sTag}.{_sAttName} is not applicable"); } sk.AddValue(_sAttName, value); Debugger.Log(new DebugAttributeInfo(sk?.Id + 50000, _sAttName, value?.Value, DebugAttributeInfoSourceType.Rule, DebugAttributeInfoFunctionType.GetValue, null) { RuleText = debugDetail.ToString() }); }