public override async Task UpdatedAsync(UpdateContentContext context) { if (context.ContentItem.ContentType == "Party") { if (context.ContentItem.Content["PartyPart"]?["PartyType"].ToString() == "0") //IS A PERSON { if (!String.IsNullOrEmpty(context.ContentItem.Content["Party"]?["UserName"]?["Text"].ToString())) //only call if is attached to user { var userManager = _serviceProvider.GetRequiredService <UserManager <IUser> >(); var user = await userManager.FindByNameAsync(context.ContentItem.Content["Party"]?["UserName"]?["Text"].ToString()) as User; var usermetadataContext = new UserMetadataContext() { Origin = "Party", User = user, UserName = context.ContentItem.Content["Party"]?["UserName"]?["Text"].ToString(), //PartyContentItemId = context.ContentItem.ContentItemId, FirstName = context.ContentItem.Content["PartyPart"]?["FirstName"].ToString(), LastName = context.ContentItem.Content["PartyPart"]?["LastName"].ToString(), FullName = $"{context.ContentItem.Content["PartyPart"]?["FirstName"].ToString()} {context.ContentItem.Content["PartyPart"]?["LastName"].ToString()}", // Avatar = context.ContentItem.Content.SelectToken("UserProfile.Avatar")?.Paths.Count > 0 ? context.ContentItem.Content.SelectToken("UserProfile.Avatar")?.Paths[0].ToString(): String.Empty }; await Handlers.InvokeAsync((handler, _context) => handler.UserMetadataChangeAsync(_context), usermetadataContext, _logger); } } } }
public override async Task <IDisplayResult> UpdateAsync(User user, Models.UserMetadata userMetadata, IUpdateModel updater, BuildEditorContext context) { var model = new UserMetadataViewModel(); if (await context.Updater.TryUpdateModelAsync(model, Prefix)) { userMetadata.FirstName = model.FirstName; userMetadata.LastName = model.LastName; userMetadata.FullName = $"{model.FirstName} {model.LastName}"; userMetadata.Avatar = model.Avatar; var usermetadataContext = new UserMetadataContext() { Origin = "UserAdmin", User = user, UserName = user.UserName, // UserProfileContentItemId = user.Properties.SelectToken("UserProfileContentItem.UserProfileContentItemId")?.ToString() ?? String.Empty, // PartyContentItemId = user.Properties.SelectToken("PartyContentItem.PartyContentItemId")?.ToString() ?? String.Empty, FirstName = userMetadata.FirstName, LastName = userMetadata.LastName, FullName = userMetadata.FullName, Avatar = userMetadata.Avatar }; await Handlers.InvokeAsync((handler, _context) => handler.UserMetadataChangeAsync(_context), usermetadataContext, _logger); } return(await EditAsync(userMetadata, context)); }
public async Task UserMetadataChangeAsync(UserMetadataContext context) { if (context.Origin != "UserAdmin") { //update user metadata from change in user profile or party data var user = await _userManager.FindByNameAsync(context.UserName) as User; user.Alter <UserMetadata.Models.UserMetadata>(nameof(UserMetadata.Models.UserMetadata), x => { x.FirstName = context.FirstName; x.LastName = context.LastName; x.FullName = context.FullName; x.Avatar = context.Avatar; }); await _userManager.UpdateAsync(user); } }
public Task UserMetadataChangeAsync(UserMetadataContext context) { return(Task.CompletedTask); //todo sync party common properties from user object /*if (context.Origin != "Party") * { * * var user = context.User as User; * var partyMetadataItem = user.As<PartyContentItem>(); * * if (partyMetadataItem != null) * { * // Resolve from DI to avoid circular references. * var session = _serviceProvider.GetRequiredService<ISession>(); * //update user profile metadata from change in user admin or party data * * var partyContentItem = await session * .Query<ContentItem, ContentItemIndex>() * .Where(x => x.ContentItemId == partyMetadataItem.PartyContentItemId && x.Published == true).FirstOrDefaultAsync(); * * if (partyContentItem != null) * { * //update firstname lastname , fullname * * partyContentItem.Alter<PartyPart>(x => * { * x.FirstName = context.FirstName; * x.LastName = context.LastName; * x.FullName = $"{context.FirstName} {context.LastName}"; * }); * //also update avatar field * partyContentItem.Content.Party.Avatar.Text = context.Avatar; * * partyContentItem.DisplayText= $"{context.FirstName} {context.LastName}"; * //use session to avoid calling handlers that will cause circular references with updated event * session.Save(partyContentItem); * * } * } * * }*/ }
protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); FixSnakeCaseNames(builder); UserContext.Build(builder); UserMetadataContext.Build(builder); MetadataTypeReferenceContext.Build(builder); UserAnswerContext.Build(builder); UserQuestionContext.Build(builder); QuestionReportContext.Build(builder); QuestionContext.Build(builder); QuestionLocalizationContext.Build(builder); QuestionTypeReferenceContext.Build(builder); AnswerContext.Build(builder); AnswerLocalizationContext.Build(builder); LocalizationContext.Build(builder); LocaleReferenceContext.Build(builder); }
public Task UserMetadataChangeAsync(UserMetadataContext context) { return(Task.CompletedTask); //todo sync user profile from party changes /* if (context.Origin != "UserProfile") * { * // var userManager= _serviceProvider.GetRequiredService<UserManager<IUser>>(); * // var user = await userManager.FindByNameAsync(context.UserName) as User; * var user = context.User as User; * * * var userProfileMetadataItem = user.As<UserProfileContentItem>(); * if (userProfileMetadataItem != null) * { * // Resolve from DI to avoid circular references. * var session = _serviceProvider.GetRequiredService<ISession>(); * //update user profile metadata from change in user admin or party data * var profileContentItem = await session * .Query<ContentItem, ContentItemIndex>() * .Where(x => x.ContentItemId == userProfileMetadataItem.UserProfileContentItemId && x.Published == true).FirstOrDefaultAsync(); * * if (profileContentItem != null) * { * //update firstname lastname , fullname * profileContentItem.Content.UserProfile.FirstName.Text = context.FirstName; * profileContentItem.Content.UserProfile.LastName.Text = context.LastName; * profileContentItem.DisplayText=$"{context.FirstName} {context.LastName}"; * //use session to avoid calling handlers that will cause circular references with updated event * session.Save(profileContentItem); * } * } * * * * } */ }