Esempio n. 1
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(Moderator model, IViewProviderContext context)
        {
            var moderator = await _moderatorStore.GetByIdAsync(model.Id);

            if (moderator == null)
            {
                return(await BuildIndexAsync(model, context));
            }

            // Validate model
            if (await ValidateModelAsync(model, context.Updater))
            {
                // Update claims
                moderator.Claims = GetPostedClaims();
                await _moderatorStore.UpdateAsync(moderator);
            }

            return(await BuildEditAsync(moderator, context));
        }
Esempio n. 2
0
        public async Task <ICommandResult <IEnumerable <Moderator> > > CreateAsync(Moderator moderator, IEnumerable <int> categoryIds)
        {
            var result = new CommandResult <IEnumerable <Moderator> >();

            // Get all moderators
            var moderators = await _moderatorStore
                             .QueryAsync()
                             .ToList();

            var output = new List <Moderator>();

            foreach (var categoryId in categoryIds)
            {
                // Does the moderator already exists for the category?
                var existingModerator =
                    moderators.Data.FirstOrDefault(m => m.UserId == moderator.UserId && m.CategoryId == categoryId);

                Moderator newOrUpdatedModerator = null;

                // IF so update existing moderator
                if (existingModerator != null)
                {
                    moderator.Id          = existingModerator.Id;
                    newOrUpdatedModerator = await _moderatorStore.UpdateAsync(moderator);
                }
                else
                {
                    moderator.CategoryId  = categoryId;
                    newOrUpdatedModerator = await _moderatorStore.CreateAsync(moderator);
                }

                if (newOrUpdatedModerator != null)
                {
                    output.Add(newOrUpdatedModerator);
                }
            }


            return(result.Success(output));
        }
Esempio n. 3
0
        public override async Task <IViewProviderResult> BuildUpdateAsync(Moderator model, IViewProviderContext context)
        {
            var moderator = await _moderatorStore.GetByIdAsync(model.Id);

            if (moderator == null)
            {
                return(await BuildIndexAsync(model, context));
            }

            // Validate model
            if (await ValidateModelAsync(model, context.Updater))
            {
                // Get all moderators
                var moderators = await _moderatorStore
                                 .QueryAsync()
                                 .ToList();

                // Get selected channels
                var selectedCategories = GetChannelsToAdd();

                var output = new List <Moderator>();
                foreach (var categoryId in selectedCategories)
                {
                    // Does the moderator already exists for the category?
                    var existingModerator =
                        moderators.Data.FirstOrDefault(m =>
                                                       m.UserId == moderator.UserId && m.CategoryId == categoryId);

                    Moderator newOrUpdatedModerator = null;
                    moderator.CategoryId = categoryId;
                    moderator.Claims     = GetPostedClaims();

                    // If so update existing moderator
                    if (existingModerator != null)
                    {
                        moderator.Id          = existingModerator.Id;
                        newOrUpdatedModerator = await _moderatorStore.UpdateAsync(moderator);
                    }
                    else
                    {
                        moderator.Id          = 0;
                        newOrUpdatedModerator = await _moderatorStore.CreateAsync(moderator);
                    }

                    if (newOrUpdatedModerator != null)
                    {
                        output.Add(newOrUpdatedModerator);
                    }
                }

                // If we have channels, lets delete the "All Channels" entry
                if (output.Count > 0)
                {
                    var allChannels = moderators?.Data.FirstOrDefault(m =>
                                                                      m.UserId == moderator.UserId && m.CategoryId == 0);
                    if (allChannels != null)
                    {
                        await _moderatorStore.DeleteAsync(allChannels);
                    }
                }
            }

            return(await BuildEditAsync(moderator, context));
        }