public async Task AddSkillAsync(int skillId, string userId) { var user = this.usersRepository.All() .FirstOrDefault(x => x.Id == userId); var skill = this.skillsService.GetById(skillId); if (user == null || skill == null) { throw new Exception(NotCorrectInput); } var exist = this.usersSkillRepository.All().FirstOrDefault(x => x.SkillId == skill.Id && x.ApplicationUserId == userId); if (exist == null) { var usersSkill = new UsersSkill { ApplicationUserId = userId, ApplicationUser = user, SkillId = skillId, Skill = skill, }; skill.Check = true; skill.UsersSkills.Add(usersSkill); user.UsersSkills.Add(usersSkill); await this.skillRepository.SaveChangesAsync(); await this.usersRepository.SaveChangesAsync(); } else { throw new Exception(UserAlreadyApplySkill); } }
public void DeleteSkill() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase(Guid.NewGuid().ToString()); var repository = new EfDeletableEntityRepository <ApplicationUser>(new ApplicationDbContext(options.Options)); var studentEfRepository = new EfRepository <StudentJob>(new ApplicationDbContext(options.Options)); var userSkillRepository = new EfRepository <UsersSkill>(new ApplicationDbContext(options.Options)); var jobRepository = new EfDeletableEntityRepository <Job>(new ApplicationDbContext(options.Options)); var jobService = new JobsService(jobRepository, studentEfRepository); var skillRepository = new EfDeletableEntityRepository <Skill>(new ApplicationDbContext(options.Options)); var skillService = new SkillsService(skillRepository, userSkillRepository); var usersService = new ApplicationUsersService(repository, jobService, studentEfRepository, jobRepository, skillService, userSkillRepository, skillRepository); var user = new ApplicationUser { FullName = "Gosho" }; var skill = new Skill { Name = "C#", }; var userSkill = new UsersSkill { SkillId = skill.Id, ApplicationUserId = user.Id, }; repository.AddAsync(user).GetAwaiter().GetResult(); repository.SaveChangesAsync().GetAwaiter().GetResult(); skillRepository.AddAsync(skill).GetAwaiter().GetResult(); skillRepository.SaveChangesAsync().GetAwaiter().GetResult(); userSkillRepository.AddAsync(userSkill).GetAwaiter().GetResult(); userSkillRepository.SaveChangesAsync(); userSkillRepository.Delete(userSkill); skillService.DeleteAsync(skill.Id, user.Id).GetAwaiter().GetResult(); Assert.Equal(1, skillRepository.All().Count()); }