Example #1
0
        internal static void Initialize(IServiceProvider services)
        {
            var options = services.GetRequiredService <DbContextOptions <Garage_2_0Context> >();

            using (var context = new Garage_2_0Context(options))
            {
                if (context.Members.Any() && context.Vehicles.Any() && context.VehicleTypeClass.Any())
                {
                    return;
                }

                var rnd = new Random();


                // Populate Member
                var members = new List <Member>();
                for (int i = 0; i < 100; i++)
                {
                    var member = new Member()
                    {
                        Name = Faker.Name.FullName()
                    };
                    members.Add(member);
                }
                context.AddRange(members);


                // Populate VehicleTypeClass
                var types = new Dictionary <string, int>()
                {
                    { "Bil", 2 }, { "Motorcykel", 1 }, { "Båt", 10 }, { "Flygplan", 100 }, { "Buss", 20 }
                };
                var vehicleTypeClasses = new List <VehicleTypeClass>();

                foreach (var type in types)
                {
                    var vehicleTypeClass = new VehicleTypeClass()
                    {
                        Type  = type.Key,
                        Price = type.Value
                    };
                    vehicleTypeClasses.Add(vehicleTypeClass);
                }
                context.AddRange(vehicleTypeClasses);


                var aToZ = new List <string>()
                {
                    "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
                };
                var brands = new List <string>()
                {
                    "Volvo", "Ferrari", "BMW", "Mercedes", "Audi", "Ford", "Mini", "Boeing", "Nimbus"
                };
                var models = new List <string>()
                {
                    "XC90", "Testarossa", "M3", "Sport", "A5", "Mustang", "Clubman", "747", "Flybridge"
                };
                var colors = new List <string>()
                {
                    "Röd", "Blå", "Grön", "Blå", "Gul", "Silver", "Svart", "Vit"
                };


                // Populate Vehicle
                var vehicles = new List <Vehicle>();
                foreach (var member in members)
                {
                    if (Faker.RandomNumber.Next(2) == 0)
                    {
                        foreach (var vehicleTypeClass in vehicleTypeClasses)
                        {
                            var randomCarBrandsAndModel = rnd.Next(0, brands.Count);

                            var vehicle = new Vehicle()
                            {
                                RegNr            = "" + aToZ[rnd.Next(26)] + aToZ[rnd.Next(26)] + aToZ[rnd.Next(26)] + rnd.Next(0, 9) + rnd.Next(0, 9) + rnd.Next(0, 9),
                                Color            = colors[rnd.Next(0, colors.Count)],
                                Brand            = brands[randomCarBrandsAndModel],
                                Model            = models[randomCarBrandsAndModel],
                                Member           = member,
                                VehicleTypeClass = vehicleTypeClass,
                                NoWheels         = vehicleTypeClass.Type == "Bil" ? 4 :
                                                   vehicleTypeClass.Type == "Motorcykel" ? 2 :
                                                   vehicleTypeClass.Type == "Buss" ? 18 :
                                                   vehicleTypeClass.Type == "Flygplan" ? 10 : 0,
                                ParkedIn = DateTime.Now
                            };
                            vehicles.Add(vehicle);
                        }
                    }
                }
                context.AddRange(vehicles);
                context.SaveChanges();
            }
        }