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(); } }
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()); }