public static async Task <List <KeyVariantAttributes> > GetKeyVariantAttributes(Product product, Variant variant, CultureInfo culture, IOvertureClient client) { if (variant == null) { return(null); } var request = new GetProductDefinitionRequest() { CultureName = culture.Name, Name = product.DefinitionName, }; var productDef = client.Send(request); var lookups = await GetLookups(productDef, client).ConfigureAwait(false); if (variant.PropertyBag == null) { return(null); } var keyVariantAttributes = productDef.VariantProperties.Where(x => x.IsKeyVariant) .OrderBy(x => x.KeyVariantOrder) .ToList(); if (!keyVariantAttributes.Any()) { return(null); } var list = new List <KeyVariantAttributes>(); foreach (var keyVariantAttribute in keyVariantAttributes) { object kvaValue; if (keyVariantAttribute.DataType.Equals(PropertyDataType.Lookup)) { var lookup = lookups.SingleOrDefault(l => l.LookupName == keyVariantAttribute.LookupDefinition.LookupName); kvaValue = GetLocalizedKvaDisplayValueFromLookup(lookup, culture.Name, variant, keyVariantAttribute); } else { kvaValue = GetLocalizedKvaDisplayValueFromValue(culture.Name, variant, keyVariantAttribute); } if (kvaValue != null) { list.Add(new KeyVariantAttributes() { Key = keyVariantAttribute.PropertyName, Value = kvaValue.ToString(), OriginalValue = variant.PropertyBag[keyVariantAttribute.PropertyName].ToString() }); } } return(list); }
/// <summary> /// Adds a new membership user to the data source. /// </summary> /// <param name="username">The user name could be user's email depending on configuration.</param> /// <param name="password">The password for the new user.</param> /// <param name="email">The e-mail address for the new user.</param> /// <param name="passwordQuestion">The password question for the new user.</param> /// <param name="passwordAnswer">The password answer for the new user</param> /// <param name="isApproved">The new user is always approved no matter the value of this parameter.</param> /// <param name="providerUserKey">The unique identifier from the membership data source for the user. Generated if null.</param> /// <param name="status">A <see cref="T:System.Web.Security.MembershipCreateStatus"/> enumeration value indicating whether the user was created successfully.</param> /// <returns> /// A <see cref="T:System.Web.Security.MembershipUser"/> object populated with the information for the newly created user. /// </returns> public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) { string domainUsername; if (TryGetDomainUser(username, out domainUsername)) { // Username shouldn't contain domain status = MembershipCreateStatus.UserRejected; return(null); } var args = new ValidatePasswordEventArgs(domainUsername, password, true); OnValidatingPassword(args); if (args.Cancel) { status = MembershipCreateStatus.InvalidPassword; return(null); } Guid userId = Guid.Empty; if (providerUserKey != null) { if (!(providerUserKey is Guid)) { status = MembershipCreateStatus.InvalidProviderUserKey; return(null); } userId = (Guid)providerUserKey; } var request = new CreateCustomerMembershipRequest { Id = userId, Username = username, Email = email, FirstName = OvertureMembershipConfiguration.DefaultFirstName, // Required in Overture LastName = OvertureMembershipConfiguration.DefaultLastName, // Required in Overture Password = password, PasswordQuestion = passwordQuestion, PasswordAnswer = passwordAnswer, ScopeId = GetCurrentScope(), }; try { var createdCustomer = _client.Send(request); status = MembershipCreateStatus.Success; return(ConvertToMembershipUser(createdCustomer)); } catch (ValidationError ex) { switch (ex.ErrorCode) { case "InvalidPassword": case "InvalidOperationException": status = MembershipCreateStatus.InvalidPassword; return(null); case "PasswordQuestionNoSet": status = MembershipCreateStatus.InvalidQuestion; return(null); case "UserNameAlreadyUsed": status = MembershipCreateStatus.DuplicateUserName; return(null); default: status = MembershipCreateStatus.UserRejected; return(null); } } catch (WebException ex) { throw new MembershipCreateUserException(ex.Message, ex); } catch (WebServiceException ex) { throw new MembershipCreateUserException(ex.ErrorMessage, ex); } }
public TResponse Send <TResponse>(IReturn <TResponse> request) { return(Intercept(() => _client.Send(request), request)); }