private static void PopulateRequiredFields(SenderLookupInfo senderInfo, Dictionary <string, string> infoKeysWithGroupTypes, string thirdPartyType, List <KeyValuePairType> fldValues, List <string> reqFld) { foreach (var key in reqFld) { KeyValuePairType newFldVal = FromSenderInfo(senderInfo, key); if (newFldVal == null) { if (key == InfoKeyNames.thirdParty_Sender_Type) //TODO: Verify whether ThirdPartyType.NONE/null works. { newFldVal = GetFieldValueItem(key, thirdPartyType ?? TestThirdPartyType.None); } else if (infoKeysWithGroupTypes.Keys.Contains(key) && (infoKeysWithGroupTypes[key] == InfoKeyGroups.PersonalIdNumber)) { var correspondingIdTypeInfoKey = key.Substring(0, key.LastIndexOf("_") + 1) + "Type"; var idType = fldValues.FirstOrDefault(x => x.InfoKey == correspondingIdTypeInfoKey).Value; newFldVal = GetFieldValueItem(key, DataGenerator.PersonalIdNumber(idType)); } else { newFldVal = GetFieldValueItem(key, infoKeysWithGroupTypes.Keys.Contains(key) ? DataGenerator.GetRandomData(infoKeysWithGroupTypes[key]) : string.Empty); } } fldValues.Add(newFldVal); } }
private static KeyValuePairType FromSenderInfo(SenderLookupInfo senderInfo, string reqInfoKey) { KeyValuePairType currVal = senderInfo.CurrentValues.Exists(x => x.InfoKey == reqInfoKey) ? senderInfo.CurrentValues.First(x => x.InfoKey == reqInfoKey) : null; return(currVal); }
public static SendValidationRequest NewRequestWithRequiredFieldValues(SenderLookupInfo senderInfo, FeeInfo feeInfo, Dictionary <string, string> infoKeysWithGroupTypes, List <InfoBase> fieldsToCollect, string thirdPartyType) { var newReq = NewRequestWithBaseData(); var reqFldValues = GetFieldValues(fieldsToCollect.OfType <FieldToCollectInfo>(), senderInfo, infoKeysWithGroupTypes, thirdPartyType); newReq.FieldValues.AddRange(reqFldValues); if (newReq.FieldValues.Exists(x => x.InfoKey == InfoKeyNames.sender_Occupation)) { var senderOccupationFld = newReq.FieldValues.First(x => x.InfoKey == InfoKeyNames.sender_Occupation); if ((senderOccupationFld.Value.ToLower() != "other") && (newReq.FieldValues.Exists(x => x.InfoKey == InfoKeyNames.sender_OccupationOther))) { var senderOtherOccupationFld = newReq.FieldValues.First(x => x.InfoKey == InfoKeyNames.sender_OccupationOther); newReq.FieldValues.Remove(senderOtherOccupationFld); } } return(newReq); }
public void Set(SenderLookupInfo senderLookupInfo) { SenderInfo = senderLookupInfo; SetExecutionOrder(nameof(SenderInfo)); }
public static List <KeyValuePairType> GetFieldValues(IEnumerable <FieldToCollectInfo> categoryFieldsToCollect, SenderLookupInfo senderInfo, Dictionary <string, string> infoKeysWithGroupTypes, string thirdPartyType) { List <KeyValuePairType> fldValues = new List <KeyValuePairType>(); #region PopulateEnumFieldValues //Get keyvalues for enum fields foreach (var enumItem in categoryFieldsToCollect.Where(x => x.DataType == DataType.@enum).ToList()) { var enumeration = enumItem.Enumeration; var enumeratedItems = enumeration.EnumeratedItems.Select(x => x.Identifier).ToList(); var fldValue = GetFieldValueItem(enumItem.InfoKey, DataGenerator.GetRandomItemFromList(enumeratedItems)); fldValues.Add(fldValue); if (enumItem.ChildFields != null) { var matchingChildField = enumItem.ChildFields.FirstOrDefault(x => x.FieldValue == fldValue.Value); var requiredChildFieldInfos = matchingChildField?.Infos.OfType <FieldToCollectInfo>().Where(x => x.Required == true).ToList() ?? new List <FieldToCollectInfo>(); if (requiredChildFieldInfos?.Count() > 0) { PopulateRequiredFields(senderInfo, infoKeysWithGroupTypes, thirdPartyType, fldValues, requiredChildFieldInfos.Select(x => x.InfoKey).ToList()); } } } #endregion #region PopulateFieldValues if (!categoryFieldsToCollect.Any()) { return(fldValues); } List <string> reqFld = categoryFieldsToCollect.Where(x => (x.DataType != DataType.@enum)).Select(x => x.InfoKey).ToList(); PopulateRequiredFields(senderInfo, infoKeysWithGroupTypes, thirdPartyType, fldValues, reqFld); #endregion return(fldValues); }