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());
        }