Ejemplo n.º 1
0
        public void DeleteUser(Guid userId)
        {
            using var dbContext = _dbProvider.CreateContext();
            var user = dbContext.Users
                       .Include(u => u.Permissions)
                       .Include(u => u.Preferences)
                       .Include(u => u.AccessSchedules)
                       .Include(u => u.ProfileImage)
                       .FirstOrDefault(u => u.Id == userId);

            if (user == null)
            {
                throw new ResourceNotFoundException(nameof(userId));
            }

            if (dbContext.Users.Find(user.Id) == null)
            {
                throw new ArgumentException(string.Format(
                                                CultureInfo.InvariantCulture,
                                                "The user cannot be deleted because there is no user with the Name {0} and Id {1}.",
                                                user.Username,
                                                user.Id));
            }

            if (dbContext.Users.Count() == 1)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.InvariantCulture,
                                                        "The user '{0}' cannot be deleted because there must be at least one user in the system.",
                                                        user.Username));
            }

            if (user.HasPermission(PermissionKind.IsAdministrator) &&
                Users.Count(i => i.HasPermission(PermissionKind.IsAdministrator)) == 1)
            {
                throw new ArgumentException(
                          string.Format(
                              CultureInfo.InvariantCulture,
                              "The user '{0}' cannot be deleted because there must be at least one admin user in the system.",
                              user.Username),
                          nameof(userId));
            }

            // Clear all entities related to the user from the database.
            if (user.ProfileImage != null)
            {
                dbContext.Remove(user.ProfileImage);
            }

            dbContext.RemoveRange(user.Permissions);
            dbContext.RemoveRange(user.Preferences);
            dbContext.RemoveRange(user.AccessSchedules);
            dbContext.Users.Remove(user);
            dbContext.SaveChanges();
            OnUserDeleted?.Invoke(this, new GenericEventArgs <User>(user));
        }
Ejemplo n.º 2
0
        public bool Deregister(SocketUser user)
        {
            if (!registry.Remove(user.Id))
            {
                return(false);
            }

            OnUserDeleted?.Invoke(this, new UserId(user));
            return(true);
        }
Ejemplo n.º 3
0
        public void DeleteUser(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException(nameof(user));
            }

            var dbContext = _dbProvider.CreateContext();

            if (dbContext.Users.Find(user.Id) == null)
            {
                throw new ArgumentException(string.Format(
                                                CultureInfo.InvariantCulture,
                                                "The user cannot be deleted because there is no user with the Name {0} and Id {1}.",
                                                user.Username,
                                                user.Id));
            }

            if (dbContext.Users.Count() == 1)
            {
                throw new InvalidOperationException(string.Format(
                                                        CultureInfo.InvariantCulture,
                                                        "The user '{0}' cannot be deleted because there must be at least one user in the system.",
                                                        user.Username));
            }

            if (user.HasPermission(PermissionKind.IsAdministrator) &&
                Users.Count(i => i.HasPermission(PermissionKind.IsAdministrator)) == 1)
            {
                throw new ArgumentException(
                          string.Format(
                              CultureInfo.InvariantCulture,
                              "The user '{0}' cannot be deleted because there must be at least one admin user in the system.",
                              user.Username),
                          nameof(user));
            }

            dbContext.Users.Remove(user);
            dbContext.SaveChanges();
            OnUserDeleted?.Invoke(this, new GenericEventArgs <User>(user));
        }