/// <summary>
        /// Method that seeds the initial amount of schools based on a given constant.
        /// </summary>
        /// <param name="context"></param>
        public static void SeedDbSchools(InteractiveLearningSystemDbContext context)
        {
            Schools = new List<School>();

            for (int i = 0; i < DataSeedConstants.SCHOOL_COUNT; i++)
            {
                var name = RandomGenerator.GenerateRandomSchoolName();
                var school = new School()
                {
                    Name = name,
                    Email = "school" + i + "@ils.edu",
                    Mobile = RandomGenerator.GenerateRandomMobile(),
                    Phone = RandomGenerator.GenerateRandomPhone(),
                    SiteUrl = "www." + name.Trim() + ".edu",
                    AvatarUrl = DataSeedConstants.DEFAULT_SCHOOL_AVATAR,
                    Address = RandomGenerator.GenerateRandomAddress(),
                    City = RandomGenerator.GenerateRandomCity(),
                    isDeleted = false,
                    Notes = RandomGenerator.GenerateRandomSentence(10),
                    Affinity = RandomGenerator.GenerateRandomAffinity(),
                    Points = 0,
                    Experience = 0,
                    Level = 0,
                };
                context.Schools.Add(school);
                context.SaveChanges();
                Schools.Add(school);
            }

        }
        public static void SeedDbRoles(InteractiveLearningSystemDbContext context)
        {

            var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));

            foreach (var role in DataSeedConstants.ROLES)
            {
                if (!roleManager.RoleExists(role))
                {
                    roleManager.Create(new IdentityRole(role));
                }
            }
        }
        public static void SeedDbGroups(InteractiveLearningSystemDbContext context, 
            List<User> teachers, List<School> schools, List<User> students)
        {
            int j = -1;
            int k = 0;
            Groups = new List<Group>();
            for (int i = 0; i < DataSeedConstants.GROUP_COUNT; i++)
            {
                if(i%4 == 0)
                {
                    j++;
                }
                var group = new Group()
                {
                    Name = "group" + i,
                    AvatarUrl = DataSeedConstants.DEFAULT_GROUP_AVATAR,
                    Points = 0,
                    Experience = 0,
                    Level = 0,
                    Teacher = teachers[i],
                    School = schools[j]
                };
                for (int z = 0; z <= 4; z++)
                {
                    group.Students.Add(students[k]);
                    k++;
                }

                group.Level = GameCalculator.EvaluateGroupLevel(group);
                group.Points = GameCalculator.EvaluateGroupPoints(group);
                group.Experience = GameCalculator.EvaluateGroupExperience(group);
                teachers[i].Group = group;
                context.Groups.Add(group);
                context.SaveChanges();
                Groups.Add(group);
            }
            EvaluateSchoolGameDetails();
        }
 public static void SeedDbMessages(InteractiveLearningSystemDbContext context, List<User> users)
 {
     var flag = true;
     var count = users.Count;
     for (int i = 0; i < count*2; i++)
     {
         if(i%3 == 0)
         {
             flag = false;
         }
         var message = new Message()
         {
             Title = RandomGenerator.GenerateRandomSentence(5),
             Content = RandomGenerator.GenerateRandomSentence(30),
             DateCreated = RandomGenerator.GenerateRandomDate(),
             Receiver = users[RandomGenerator.GenerateRandomInteger(0, users.Count/2)],
             Sender = users[RandomGenerator.GenerateRandomInteger(users.Count/2+1, users.Count)],
             isViewed = flag,
             Flag = RandomGenerator.GenerateRandomSentence(3)
         };
         context.Messages.Add(message);
     }
     context.SaveChanges();
 }
        public static void SeedDbAnswers(InteractiveLearningSystemDbContext context)
        {

        }
        public static void SeedDbProblems(InteractiveLearningSystemDbContext context)
        {

        }
        public void SeedDbUsers(InteractiveLearningSystemDbContext context)
        {
            var userManager = new UserManager<User>(new UserStore<User>(context));
            List<User> currentGroup = new List<User>();
            /*
            Creating the Interactive Learning System one and only Admin!
            */
            var admin = new User()
            {
                UserName = "******",
                PasswordHash = new PasswordHasher().HashPassword("admin"),
                FirstName = RandomGenerator.GenerateRandomName(),
                LastName = RandomGenerator.GenerateRandomFamily(),
                Email = "*****@*****.**",
                AvatarUrl = DataSeedConstants.DEFAULT_ADMIN_AVATAR,
                Level = 100,
                Experience = 999999,
                Points = 999999,
                Notes = "He is the one and only!!!",
                PhoneNumber = RandomGenerator.GenerateRandomMobile()
            };
            context.Users.Add(admin);
            userManager.Create(admin);
            context.SaveChanges();

            userManager.AddToRole(admin.Id, "Administrator");
            Admin = admin;
            /*
            Creating 10 moderators for the Interactive Learning System.
            */
            for (int i = 0; i < DataSeedConstants.MODERATOR_COUNT; i++)
            {
                var count = rand.Next(0, 512);
                firstName = RandomGenerator.GenerateRandomName();
                lastName = RandomGenerator.GenerateRandomFamily();
                level = (int)Generator.GenerateUserLevel();
                experience = Generator.GenerateUserExperience(level);
                var moderator = new User()
                {
                    UserName = firstName + "_" + lastName + count * i + "@ils.edu",
                    PasswordHash = new PasswordHasher().HashPassword(firstName),
                    FirstName = firstName,
                    LastName = lastName,
                    Email = firstName + "_" + lastName + count * i + "@ils.edu",
                    AvatarUrl = DataSeedConstants.DEFAULT_MODERATOR_AVATAR + "0" + rand.Next(0, 2) + ".png",
                    Experience = experience,
                    Level = level,
                    Points = Generator.GenerateUserPoints(experience),
                    PhoneNumber = RandomGenerator.GenerateRandomMobile(),
                    Notes = "Moderator"
                };
                context.Users.Add(moderator);
                userManager.Create(moderator);
                context.SaveChanges();
                userManager.AddToRole(moderator.Id, "Moderator");
                Moderators.Add(moderator);
            }

            /*
            Creating 40 teachers for the Interactive Learning System.
            */
            for (int i = 0; i < DataSeedConstants.TEACHER_COUNT; i++)
            {
                var count = rand.Next(0, 512);
                firstName = RandomGenerator.GenerateRandomName();
                lastName = RandomGenerator.GenerateRandomFamily();
                level = (int)Generator.GenerateUserLevel();
                experience = Generator.GenerateUserExperience(level);
                var teacher = new User()
                {
                    UserName = firstName + "_" + lastName + count * i + "@ils.edu",
                    PasswordHash = new PasswordHasher().HashPassword(firstName),
                    FirstName = firstName,
                    LastName = lastName,
                    Email = firstName + "_" + lastName + count * i + "@ils.edu",
                    AvatarUrl = DataSeedConstants.DEFAULT_TEACHER_AVATAR + "0" + rand.Next(0, 2) + ".png",
                    Experience = experience,
                    Level = level,
                    Points = Generator.GenerateUserPoints(experience),
                    PhoneNumber = RandomGenerator.GenerateRandomMobile(),
                    Notes = "Teacher"
                };
                context.Users.Add(teacher);
                userManager.Create(teacher);
                context.SaveChanges();
                userManager.AddToRole(teacher.Id, "Teacher");
                Teachers.Add(teacher);
            }

            /*
           Creating 10 advisers for the Interactive Learning System.
           */
            for (int i = 0; i < DataSeedConstants.ADVISER_COUNT; i++)
            {
                var count = rand.Next(0, 512);
                firstName = RandomGenerator.GenerateRandomName();
                lastName = RandomGenerator.GenerateRandomFamily();
                level = (int)Generator.GenerateUserLevel();
                experience = Generator.GenerateUserExperience(level);
                var adviser = new User()
                {
                    UserName = firstName + "_" + lastName + count * i + "@ils.edu",
                    PasswordHash = new PasswordHasher().HashPassword(firstName),
                    FirstName = firstName,
                    LastName = lastName,
                    Email = firstName + "_" + lastName + count * i + "@ils.edu",
                    AvatarUrl = DataSeedConstants.DEFAULT_ADVISER_AVATAR + "0" + rand.Next(0, 2) + ".png",
                    Experience = experience,
                    Level = level,
                    Points = Generator.GenerateUserPoints(experience),
                    PhoneNumber = RandomGenerator.GenerateRandomMobile(),
                    Notes = "Adviser"
                };
                context.Users.Add(adviser);
                userManager.Create(adviser);
                context.SaveChanges();
                userManager.AddToRole(adviser.Id, "Adviser");
                Advisers.Add(adviser);
            }

            /*
          Creating 200 students for the Interactive Learning System.
          */

            for (int i = 0; i < DataSeedConstants.STUDENT_COUNT; i++)
            {
                var count = rand.Next(0, 512);
                firstName = RandomGenerator.GenerateRandomName();
                lastName = RandomGenerator.GenerateRandomFamily();
                level = (int)Generator.GenerateUserLevel();
                experience = Generator.GenerateUserExperience(level);
                var student = new User()
                {
                    UserName = firstName + "_" + lastName + count*i + "@ils.edu",
                    PasswordHash = new PasswordHasher().HashPassword(firstName),
                    FirstName = firstName,
                    LastName = lastName,
                    Email = firstName + "_" + lastName + count * i + "@ils.edu",
                    AvatarUrl = DataSeedConstants.DEFAULT_STUDENT_AVATAR + "0" + rand.Next(0, 3) + ".png",
                    Experience = experience,
                    Level = level,
                    Points = Generator.GenerateUserPoints(experience),
                    PhoneNumber = RandomGenerator.GenerateRandomMobile()
                };
                context.Users.Add(student);
                userManager.Create(student);
                context.SaveChanges();
                userManager.AddToRole(student.Id, "Student");
                Students.Add(student);
            }
        }