public MemberViewModel CreateFromModel(MemberCreationViewModel model) { if (!model.Validate() || _standardProperties.Except(model.Properties, new PropertyNameComparer()).Any() || string.IsNullOrEmpty(model.Type)) { throw new HttpResponseException(HttpStatusCode.BadRequest); } var name = model.Properties.Single(p => p.Name == "Name").Value; var email = model.Properties.Single(p => p.Name == "Email").Value; var password = model.Properties.Single(p => p.Name == "Password").Value; var member = (Member)Services.MemberService.CreateMember(email, email, name, model.Type); foreach (var property in model.Properties.Except(_standardProperties, new PropertyNameComparer())) { member.SetPropertyValue(property.Name, property.Value); } Services.MemberService.Save(member); Services.MemberService.SavePassword(member, password); Services.MemberService.AssignRole(member.Id, "AllUsers"); EventAggregator.Instance.Publish(new MemberCreated(member)); return(new MemberViewModel(member)); }
public MemberCreationViewModel CreationModel(string type) { var memberType = Services.MemberTypeService.Get(type); if (memberType == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } var propertyGroups = memberType.PropertyGroups; var typeProperties = memberType.CompositionPropertyTypes .Except(propertyGroups.SelectMany(p => p.PropertyTypes)) //Remove anything that is not a "Generic Property" .Where(p => p.PropertyEditorAlias != "Umbraco.NoEdit") .OrderBy(p => p.SortOrder) .Select(p => new PropertyViewModel() { Name = p.Alias, Prompt = p.Name, Type = p.PropertyEditorAlias, IsMandatory = p.Mandatory, AvailableValues = Services.DataTypeService.GetPreValuesByDataTypeId(p.DataTypeDefinitionId), Information = p.HelpText } ); var viewModel = new MemberCreationViewModel() { Type = type, Properties = _standardProperties.Concat(typeProperties) }; return(viewModel); }