예제 #1
0
        public async Task <Unit> Handle(UserUpdateGroupsCommand request, CancellationToken cancellationToken)
        {
            var user = await _db.Users.Where(w => w.Id == request.UserId).Include(w => w.UserGroups)
                       .FirstOrDefaultAsync(cancellationToken);

            if (user == null)
            {
                throw new UserNotFoundException(request.UserId);
            }

            switch (request.Type)
            {
            case AddRemove.Add when user.UserGroups.FirstOrDefault(w => w.GroupId == request.GroupId) != null:
                return(Unit.Value);

            case AddRemove.Remove:
                user.UserGroups.Remove(user.UserGroups.FirstOrDefault(w => w.GroupId == request.GroupId));
                break;

            default:
                user.UserGroups.Add(new UserGroup {
                    GroupId = request.GroupId, UserId = request.UserId
                });
                break;
            }

            await _db.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
예제 #2
0
        private void AddUserCommandExecuted()
        {
            RaisePropertyChanged("DisableParentWindow");

            var view = new AddUserView();

            view.ShowDialog();

            RaisePropertyChanged("EnableParentWindow");

            if (view.ViewModel.User.HasErrors)
            {
                return;
            }

            IsBusy = true;

            var user = view.ViewModel.User;

            CopyPermissionsFromGroup(user.UserGroup.UserGroup, user.User);
            LoadUserPermissions(user);

            LoadAuthorisationPermissions(user);

            user.PropertyChanged += OnUserModelPropertyChanged;

            var firstOrDefault = UserGroups.FirstOrDefault(x => x.UserGroup.ID == user.User.UserGroupID);

            if (firstOrDefault != null)
            {
                firstOrDefault.Users.Add(user);
            }

            SelectedUser = user;

            IsBusy = false;
        }
예제 #3
0
 public UserGroup GetUserGroup() =>
 UserGroups.FirstOrDefault(g => g.Code == UserGroupCode.User);
예제 #4
0
 public UserGroup GetAdminGroup() =>
 UserGroups.FirstOrDefault(g => g.Code == UserGroupCode.Admin);