Ejemplo n.º 1
0
        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();
            }
        }