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)); }
public bool Deregister(SocketUser user) { if (!registry.Remove(user.Id)) { return(false); } OnUserDeleted?.Invoke(this, new UserId(user)); return(true); }
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)); }