public async Task DeleteCoachAsync(Guid coachId) { var coach = this.DbContext.Coaches.WithId(coachId); var coachUser = await this.UserManager.FindByIdAsync(coach.RegisteredUser.AspNetUserId); var coachUserClaims = await this.UserManager.GetClaimsAsync(coachUser); if (!coachUserClaims.IsNullOrEmpty()) { var claimsToRemove = coachUserClaims.Where(c => CoachesClaims.Any(uc => uc.Type == c.Type)); await this.UserManager.RemoveClaimsAsync(coachUser, claimsToRemove); } this.DbContext.Coaches.Remove(coach); await this.DbContext.SaveChangesAsync(); }
public async Task CreateCoachIfNotExists(Guid registeredUserId) { var coach = (from c in this.Database.Coaches where c.RegisteredUserId == registeredUserId select c).SingleOrDefault(); var registeredUser = this.DbContext.RegisteredUsers.WithId(registeredUserId); if (coach == null) { coach = new Coach { RegisteredUser = registeredUser }; this.DbContext.Coaches.Add(coach); } var coachUser = await this.UserManager.FindByIdAsync(registeredUser.AspNetUserId); var coachUserClaims = await this.UserManager.GetClaimsAsync(coachUser); var newClaims = CoachesClaims.Where(c => coachUserClaims.All(uc => uc.Type != c.Type)); if (!newClaims.IsNullOrEmpty()) { var result = await this.UserManager.AddClaimsAsync(coachUser, newClaims); if (!result.Succeeded) { throw new ArgumentException($"Coaches claims operation failed: {string.Join(';', result.Errors)}"); } } if (coach != null) { await this.DbContext.SaveChangesAsync(); } }