コード例 #1
0
ファイル: PartyHandler.cs プロジェクト: nickaynes/test789
        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);
                    }
                }
            }
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
             *
             *      }
             *  }
             *
             * }*/
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
             *        }
             *    }
             *
             *
             *
             * } */
        }