protected override void GenerateEntity()
        {
            var project = new Project { Name = Random.GetString(5, 45)};

            var employeeCount = Random.GetInt(2, 20);
            var employeesForProject = new HashSet<int>();

            while (employeesForProject.Count < employeeCount)
            {
                employeesForProject.Add(this.employees[Random.GetInt(0, this.employees.Count - 1)]);
            }

            foreach (var employee in employeesForProject)
            {
                var startDate = Random.GeneraDateTime();
                var endDate = Random.GeneraDateTime();

                if (startDate > endDate)
                {
                    var switchDates = startDate;
                    startDate = endDate;
                    endDate = switchDates;
                }

                project.EmployeesProjects.Add(new EmployeesProject{ EmployeeId = employee, ProjectId = project.Id, EndingDate = endDate, StartingDate = startDate});
            }

            this.databaseContext.Projects.Add(project);
        }
        public override void Generate()
        {
            this.Logger.LogMessage("Adding projects");
            for (int i = 0; i < this.Count; i++)
            {
                DateTime startDate = RandomDay();
                DateTime endDate = startDate.AddDays(this.Random.GetRandomNumber(1, 200));

                var project = new Project
                {
                    Name = this.Random.GetRandomStringWithRandomLength(5, 50),
                    StartDate = startDate,
                    EndDate = endDate
                };

                this.Database.Projects.Add(project);

                if (i % 100 == 0)
                {
                    this.Logger.Dot();
                    this.Database.SaveChanges();
                }
            }

            this.Logger.LogMessage(" Projects added!\n");
        }
 public void GenerateData(CompanyEntities data, IRandomGenerator random, int count)
 {
     for (int i = 0; i < count; i++)
     {
         var project = new Project { Name = random.GetRandomString(random.GetRandomNumber(5, 50)) };
         data.Projects.Add(project);
     }
 }
        public override void Generate()
        {
            Console.WriteLine("Generating Projects");
            var employeesIds = this.Db.Employees.Select(d => d.ID).ToList();

            for (int i = 0; i < this.Count; i++)
            {
                var newProject = new Project
                {
                    Name = this.Random.GetString(5, 50),
                };
                if (employeesIds.Count > 1)
                {
                    var uniqueEmployeesIds = new HashSet<int>();
                    var employeesInProject = this.Random.GetInt(2, Math.Min(employeesIds.Count - 1, 20));
                    while (uniqueEmployeesIds.Count != employeesInProject)
                    {
                        uniqueEmployeesIds.Add(employeesIds[this.Random.GetInt(0, employeesIds.Count - 1)]);
                    }
                    foreach (var uniqueEmployeeId in uniqueEmployeesIds)
                    {
                        var startingDate = DateTime.Now.AddDays(this.Random.GetInt(-5, 10));
                        var endingDate = startingDate.AddDays(this.Random.GetInt(1, 5));
                        var newEmployeesProject = new EmployeesProject
                        {
                            Employee = this.Db.Employees.Find(uniqueEmployeeId),
                            Project = newProject,
                            StartingDate = startingDate,
                            EndingDate = endingDate
                        };
                        newProject.EmployeesProjects.Add(newEmployeesProject);
                    }
                }
                this.Db.Projects.Add(newProject);
                if (i % 100 == 0)
                {
                    Console.Write(".");
                    Db.SaveChanges();
                }
            }

            Console.WriteLine("\nGenerating Projects Done!");
        }
        public override void Generate()
        {
            var employeesIds = this.Database.Employees.Select(a => a.Id).ToList();

            Console.WriteLine("Adding Projects:");
            for (int i = 0; i < this.Count; i++)
            {
                var newProject = new Project
                {
                    Name = this.Random.GetRandomStringWithRandomLength(5, 50),
                    EmployeeId = employeesIds[this.Random.GetRandomNumber(0, employeesIds.Count - 1 )]
                };

                if (i % 100 == 0)
                {
                    Console.Write(".");
                    this.Database.SaveChanges();
                }

                this.Database.Projects.Add(newProject);
            }
            Console.WriteLine();
            Console.WriteLine("Projects added!");
        }
        static void Main(string[] args)
        {
            var random = RandomDataGenerator.Instance;
            var db = new CompanyEntities();
            db.Configuration.AutoDetectChangesEnabled = false;

            Console.WriteLine("\nAdding departments");

            for (int i = 0; i < 100; i++)
            {
                var department = new Department
                {
                    Name = random.GetRandomStringWithRandomLength(10,50)
                };

                db.Departments.Add(department);

                if (i%100 == 0)
                {
                    Console.Write(".");
                    db.SaveChanges();
                }
            }
            db.SaveChanges();
            Console.WriteLine("\nDepartents added");

            Console.WriteLine("\nAdding employees");

            var departmentIds = db.Departments.Select(d => d.Id).ToList();
            for (int i = 0; i < 5000; i++)
            {
              var employee = new Employee
                {
                    FirstName = random.GetRandomStringWithRandomLength(5,20),
                    LastName = random.GetRandomStringWithRandomLength(5,20),
                    DepartmentId = departmentIds[random.GetRandomNumber(0, departmentIds.Count - 1)],
                    YearSalary = random.GetRandomNumber(50000,200000),
                    ManagerId = (i > 250) ? i - 1 :(int?)null // 4750 employees will have a manager (95%) :)
                                                                  // it is very stupid i know but I left it for last and forgot it
                };

              db.Employees.Add(employee);

              if (i % 100 == 0)
              {
                  Console.Write(".");
                  db.SaveChanges();
              }
            }
            db.SaveChanges();
            Console.WriteLine("\nEmployees added");

            Console.WriteLine("\nAdding Projects"); //For some reason it does not want to work
            var employeeIds = db.Employees.Select(e => e.Id).ToList();
            for (int i = 0; i < 1000; i++)
            {
                var project = new Project
                {
                    Name = "Project" + i.ToString(),
                };

                var count = random.GetRandomNumber(5, 20);

                for (int j = 0; j < count; j++)
                {
                    var projectEmployee = new ProjectsEmployee
                    {
                        EmployeeId = employeeIds[i+j],
                        ProjectId = i+1,
                        StartDate = new DateTime(random.GetRandomNumber(1980, 2005), random.GetRandomNumber(1, 12), random.GetRandomNumber(1, 28)),
                        EndDate = new DateTime(random.GetRandomNumber(2005, 2020), random.GetRandomNumber(1, 12), random.GetRandomNumber(1, 28))

                    };

                    project.ProjectsEmployees.Add(projectEmployee);
                }

                db.Projects.Add(project);

                if (i % 100 == 0)
                {
                    Console.Write(".");
                    db.SaveChanges();
                }
            }
            db.SaveChanges();
            Console.WriteLine("\nProjects added");

            Console.WriteLine("\nAdding Reports");
            var employeeIds2 = db.Employees.Select(d => d.Id).ToList();
            for (int i = 0; i < 5000; i++)
            {
                var empId = employeeIds2[i];

                for (int j = 0; j < 50; j++) // every empolyee gets 50 reports
                {
                    var report = new Report
                    {
                        EmployeeId = empId,
                        TimeOfReport = new DateTime(random.GetRandomNumber(1980, 2014), random.GetRandomNumber(1, 12), random.GetRandomNumber(1, 28))
                    };
                    db.Reports.Add(report);
                }
                Console.Write(".");
                db.SaveChanges();

            }
            db.SaveChanges();
            Console.WriteLine("\nReports added");

            db.Configuration.AutoDetectChangesEnabled = true;
        }