public async Task <IActionResult> AssignEntitiesAsync(EntitiesAssignModel model)
        {
            if (ModelState.IsValid)
            {
                var Owner = await S.Db.Users
                            .IncludeEntitiesToCheckSlim()
                            .FirstOrDefaultAsync(u => u.Id == model.ModeratorId);

                await S.Permissions.ValidateAccessModeratorsPanelAsync(Owner);

                var entities = Owner.ModeratorsGroup.EntitiesToCheck
                               .Where(e => !e.IsResolved)
                               .Take(model.NumOfEntitiesToAssign)
                               .ToArray();
                foreach (var entity in entities)
                {
                    entity.AssignedModerator = Owner;
                    entity.AssignationTime   = DateTime.UtcNow;
                }
                await S.Db.SaveChangesAsync();

                LayoutModel.AddMessage($"{entities.Length} new entities were assigned to you");

                return(RedirectToPage("/ModeratorPanel", new { id = Owner.Id }));
            }
            else
            {
                throw new Exception();
            }
        }
Beispiel #2
0
        public async Task <IActionResult> OnGetAsync(string id)
        {
            var currentUser = await S.Utilities.GetCurrentUserModelOrThrowAsync();

            TargetModeratorId = id ?? currentUser.Id;
            Owner             = await S.Db.Users.AsNoTracking()
                                .Include(u => u.ModeratorsGroup)
                                .FirstOrDefaultAsync(u => u.Id == TargetModeratorId);

            await S.Permissions.ValidateAccessModeratorsPanelAsync(Owner);

            ReadOnlyAccess = Owner.Id != currentUser.Id;

            Group = await S.Db.ModeratorsGroups.AsNoTracking()
                    .Include(g => g.TargetUsers)
                    .Include(g => g.Moderators)
                    .IncludeEntitiesToCheck()
                    .FirstOrDefaultAsync(g => g.Id == Owner.ModeratorsGroup.Id);

            Entities    = Group.EntitiesToCheck.OrderBy(e => e.AddTime);
            TargetUsers = Owner.ModeratorsGroup.TargetUsers;

            AssignModel = new EntitiesAssignModel()
            {
                ModeratorId           = Owner.Id,
                NumOfEntitiesToAssign = 0
            };

            return(Page());
        }