public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            var userStore = new UserStore<User>(context);
            var userManager = new UserManager<User>(userStore);

            var adminUser = new User
            {
                UserName = AdministratorUserName,
                Email = AdministratorUserName
            };

            var headhunterUser = new User
            {
                UserName = HeadhunterUserName,
                Email = HeadhunterUserName
            };

            var developerUser = new User
            {
                UserName = DeveloperUserName,
                Email = DeveloperUserName
            };

            var employerUser = new User
            {
                UserName = EmployerUserName,
                Email = EmployerUserName
            };

            userManager.Create(adminUser, AdministratorPassword);
            userManager.Create(headhunterUser, HeadhunterPassword);
            userManager.Create(developerUser, DeveloperPassword);
            userManager.Create(employerUser, EmployerPassword);

            userManager.AddToRole(adminUser.Id, GlobalConstants.AdministratorRoleName);
            userManager.AddToRole(headhunterUser.Id, GlobalConstants.HeadhunterRoleName);
            userManager.AddToRole(developerUser.Id, GlobalConstants.UserRoleName);
            userManager.AddToRole(employerUser.Id, GlobalConstants.UserRoleName);

            for (int i = 0; i < 60; i++)
            {
                var currentUser = new User
                {
                    Email = string.Format("user_{0}@somemail.com", i + 1),
                    UserName = string.Format("user_{0}", i + 1)
                };

                userManager.Create(currentUser, currentUser.Email);

                if (i % 2 == 0)
                {
                    userManager.AddToRole(currentUser.Id, GlobalConstants.HeadhunterRoleName);
                }
                else
                {
                    userManager.AddToRole(currentUser.Id, GlobalConstants.UserRoleName);
                }
            }
        }
        public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            var roleStore = new RoleStore<IdentityRole>(context);
            var roleManager = new RoleManager<IdentityRole>(roleStore);

            var adminRole = new IdentityRole { Name = GlobalConstants.AdministratorRoleName };
            var headhunterRole = new IdentityRole { Name = GlobalConstants.HeadhunterRoleName };
            var userRole = new IdentityRole { Name = GlobalConstants.UserRoleName };
            roleManager.Create(adminRole);
            roleManager.Create(headhunterRole);
            roleManager.Create(userRole);
        }
        public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            var random = new Random();

            var allOrganiazations = context.Organizations.ToList();
            var headhunterRole = context.Roles.FirstOrDefault(r => r.Name == GlobalConstants.HeadhunterRoleName);

            var allHeadhunters = context.Users.Where(u => u.Roles.Any(r => r.RoleId == headhunterRole.Id)).ToList();

            var skills = context.Skills.ToList();

            for (int i = 0; i < allOrganiazations.Count; i++)
            {
                var organization = allOrganiazations[i];

                for (int j = 0; j < 5; j++)
                {
                    var user = allHeadhunters[i % allHeadhunters.Count];

                    var requiredSkills = this.GetRandomRequiredSkills(skills);

                    HeadhunterProfile headhunter = user.HeadhunterProfile;

                    if (headhunter == null)
                    {
                        headhunter = new HeadhunterProfile
                        {
                            User = user
                        };

                        context.HeadhunterProfiles.Add(headhunter);
                        context.SaveChanges();
                    }

                    var jobOffer = new JobOffer
                    {
                        Organization = organization,
                        Headhunter = headhunter,
                        RegistrationDate = DateTime.Now.AddDays(-100).AddDays(random.Next(0, 100)),
                        IsActive = j % 3 == 0 ? false : true,
                        RequiredSkills = requiredSkills
                    };

                    context.JobOffers.Add(jobOffer);
                }
            }

            context.SaveChanges();
        }
        public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            var skills = new string[]
                   {
                    "C#",
                    "JavaScript",
                    "Java", "HTML",
                    "CSS",
                    "Objective-C",
                    "Swift", "C++",
                    "ASP",
                    "Handlebars",
                    "PowerShell",
                    "Shell",
                    "SQLPL",
                    "PHP",
                    "TypeScript",
                    "Smalltalk",
                    "CoffeeScript",
                    "Groff",
                    "Ruby",
                    "Python",
                    "OOP",
                    "HQC"
                   };

            foreach (var skillName in skills)
            {
                context.Skills.Add(new Skill
                {
                    Name = skillName
                });
            }

            context.SaveChanges();
        }
        public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            var allUsers = context.Users.ToList();

            for (int i = 0; i < allUsers.Count; i++)
            {
                if (i % 2 == 0)
                {
                    continue;
                }

                var user = allUsers[i];
                var organization = new Organization
                {
                    Name = string.Format("Organization of {0}", user.UserName),
                    FoundedOn = DateTime.Now,
                    Founder = user
                };

                context.Organizations.Add(organization);
            }

            context.SaveChanges();
        }
        public void SeedData(EmployerEmployeeHuntDbContext context)
        {
            IGithubService githubService = new GithubService();

            var developersProfiles = new string[]
            {
                "https://github.com/TsvetanMilanov", "https://github.com/IvanMomchilov", "https://github.com/ivaylokenov", "https://github.com/NikolayIT"
            };

            var adminRole = context.Roles.FirstOrDefault(r => r.Name == GlobalConstants.AdministratorRoleName);
            var headhunterRole = context.Roles.FirstOrDefault(r => r.Name == GlobalConstants.HeadhunterRoleName);

            var users = context.Users.Where(u => !u.Roles.Any(r => r.RoleId == adminRole.Id || r.RoleId == headhunterRole.Id)).ToList();

            for (int i = 0; i < developersProfiles.Length; i++)
            {
                var currentProfile = developersProfiles[i];

                string userId = string.Empty;

                if (i < users.Count)
                {
                    var currentUser = users[i];

                    userId = currentUser.Id;
                }
                else
                {
                    var userStore = new UserStore<User>(context);
                    var userManager = new UserManager<User>(userStore);

                    var newUser = new User
                    {
                        UserName = string.Format("developer_{0}", i),
                        Email = string.Format("developer_{0}@somemail.com", i)
                    };

                    userManager.Create(newUser, newUser.Email);
                    userManager.AddToRole(newUser.Id, GlobalConstants.UserRoleName);

                    userId = newUser.Id;
                }

                string userName = this.GetUserNameFromGithubProfileLink(currentProfile);

                Dictionary<string, long> skills = githubService.GetAllLanguagesFromGithubReposForUser(userName);

                var skillsNames = new List<string>();

                foreach (var skill in skills)
                {
                    if (skill.Value >= MinLinesOfCodeForSkill)
                    {
                        skillsNames.Add(skill.Key);
                    }
                }

                var allDbSkills = context.Skills.ToList();

                Dictionary<string, Skill> allDbSkillsWithNames = new Dictionary<string, Skill>();

                foreach (var skill in allDbSkills)
                {
                    allDbSkillsWithNames.Add(skill.Name, skill);
                }

                var userSkills = new List<Skill>();

                foreach (var skill in skillsNames)
                {
                    if (allDbSkillsWithNames.ContainsKey(skill))
                    {
                        userSkills.Add(allDbSkillsWithNames[skill]);
                    }
                    else
                    {
                        userSkills.Add(new Skill() { Name = skill });
                    }
                }

                DeveloperProfile developerProfile = new DeveloperProfile
                {
                    GithubProfile = currentProfile,
                    IsAvailableForHire = true,
                    Skills = userSkills,
                    Id = userId
                };

                context.DeveloperProfiles.Add(developerProfile);
                context.SaveChanges();
            }
        }