Ejemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("FeatureID,FeatureDescription")] VehicleFeature vehicleFeature)
        {
            if (id != vehicleFeature.FeatureID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(vehicleFeature);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!VehicleFeatureExists(vehicleFeature.FeatureID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(vehicleFeature));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Create([Bind("FeatureID,FeatureDescription")] VehicleFeature vehicleFeature)
        {
            if (ModelState.IsValid)
            {
                _context.Add(vehicleFeature);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(vehicleFeature));
        }
Ejemplo n.º 3
0
        public ICollection <VehicleFeature> getVehicleFeatures(ICollection <int> features)
        {
            ICollection <VehicleFeature> vfList = new Collection <VehicleFeature>();

            foreach (var item in features)
            {
                VehicleFeature vfeature = new VehicleFeature();

                var vfeatureS = vehicle.GetVehicleFeatureByFeatureId(item);
                vfeature.Feature   = vfeatureS.Feature;
                vfeature.FeatureId = vfeatureS.FeatureId;
                vfList.Add(vfeature);
            }
            return(vfList);
        }
Ejemplo n.º 4
0
        private static void SeedVehicleFeatureData(ApplicationDbContext dbContext)
        {
            var vehicleFeatureIB = new VehicleFeature
            {
                FeatureName = "Insulated Box"
            };

            dbContext.Add(vehicleFeatureIB);
            var vehicleFeature = new VehicleFeature
            {
                FeatureName = "Normal"
            };

            dbContext.Add(vehicleFeature);
            dbContext.SaveChanges();
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> CreateVehicle([FromBody] SaveVehicleResource vehicleResource)
        {
            if (!ModelState.IsValid)
            {
                Console.WriteLine(vehicleResource.Contact.Name);
                Console.WriteLine(vehicleResource.Id);
                foreach (var state in ModelState)
                {
                    foreach (var error in state.Value.Errors)
                    {
                        Console.WriteLine(error.ErrorMessage);
                    }
                }
                return(BadRequest(ModelState));
            }
            var vehicle = mapper.Map <SaveVehicleResource, Vehicle>(vehicleResource);

            var features = repository.GetAllFeature();

            vehicle.LastUpdate = DateTime.Now;
            repository.Add(vehicle);

            await unitOfWork.CompleteAsync();

            vehicle = await repository.GetVehicle(vehicle.Id);

            var res = (from item in features join value in vehicleResource.Features on item.Id equals value select item).ToList();

            foreach (Feature feature in res)
            {
                var modelToAdd = new VehicleFeature
                {
                    VehicleId = vehicle.Id,
                    FeatureId = feature.Id
                };
                repository.AddVehicleFeature(modelToAdd);
                vehicle.Features.Add(modelToAdd);
            }

            await unitOfWork.CompleteAsync();

            var result = mapper.Map <Vehicle, VehicleResource>(vehicle);

            return(Ok(result));
        }
 public void AddVehicleFeature(VehicleFeature feature)
 {
     context.VehicleFeatures.Add(feature);
 }
Ejemplo n.º 7
0
        public async Task <AdAndVehicleIds> CreateAsync(VehicleCreateServiceModel model)
        {
            if (model == null)
            {
                return(new AdAndVehicleIds
                {
                    AdId = 0,
                    VehicleId = 0,
                });
            }

            var manufacturerExist = await this.db.Manufacturers.AnyAsync(m => m.Id == model.ManufacturerId);

            if (!manufacturerExist)
            {
                return(new AdAndVehicleIds
                {
                    AdId = 0,
                    VehicleId = 0,
                });
            }

            var newVehicle = this.mapper.Map <Vehicle>(model);

            newVehicle.Model = await this.db.Models
                               .FirstOrDefaultAsync(m => m.ManufacturerId == model.ManufacturerId && m.Name == model.ModelName);

            if (newVehicle.Model == null)
            {
                return(new AdAndVehicleIds
                {
                    AdId = 0,
                    VehicleId = 0,
                });
            }

            var vehicleFeatures = new List <VehicleFeature>();

            foreach (var modelFeatureId in model.FeatureIds)
            {
                var feature = new VehicleFeature
                {
                    FeatureId = modelFeatureId,
                    Vehicle   = newVehicle
                };
                vehicleFeatures.Add(feature);
            }

            var newAd = new Ad
            {
                CreationDate = DateTime.UtcNow,
                Vehicle      = newVehicle,
                UserId       = model.UserId,
                PhoneNumber  = model.PhoneNumber
            };

            try
            {
                this.ValidateEntityState(newVehicle);
                this.ValidateEntityState(newAd);

                await this.db.AddAsync(newAd);

                await this.db.AddRangeAsync(vehicleFeatures);

                await this.db.SaveChangesAsync();
            }
            catch
            {
                return(new AdAndVehicleIds
                {
                    AdId = 0,
                    VehicleId = 0,
                });
            }

            return(new AdAndVehicleIds
            {
                AdId = newAd.Id,
                VehicleId = newVehicle.Id,
            });
        }
Ejemplo n.º 8
0
        public async Task <bool> UpdateAsync(AdEditServiceModel serviceModel)
        {
            if (serviceModel == null)
            {
                return(false);
            }

            try
            {
                var ad = await this.db
                         .Ads
                         .Include(v => v.Vehicle)
                         .SingleOrDefaultAsync(a => a.Id == serviceModel.Id);

                var modelId = await this.db
                              .Models
                              .Where(m => m.Name == serviceModel.Vehicle.ModelName)
                              .Select(m => m.Id)
                              .SingleOrDefaultAsync();

                if (ad == null || modelId == default(int))
                {
                    return(false);
                }

                var vehicle = ad.Vehicle;

                ad.PhoneNumber = serviceModel.PhoneNumber;

                vehicle.ModelId            = modelId;
                vehicle.Description        = serviceModel.Vehicle.Description;
                vehicle.ManufacturerId     = serviceModel.Vehicle.ManufacturerId;
                vehicle.FuelTypeId         = serviceModel.Vehicle.FuelTypeId;
                vehicle.TransmissionTypeId = serviceModel.Vehicle.TransmissionTypeId;
                vehicle.Engine             = serviceModel.Vehicle.Engine;
                vehicle.EngineHorsePower   = serviceModel.Vehicle.EngineHorsePower;
                vehicle.YearOfProduction   = serviceModel.Vehicle.YearOfProduction;
                vehicle.TotalMileage       = serviceModel.Vehicle.TotalMileage;
                vehicle.FuelConsumption    = serviceModel.Vehicle.FuelConsumption;
                vehicle.Price    = serviceModel.Vehicle.Price;
                vehicle.Pictures = serviceModel.Vehicle.Pictures;

                var vehicleFeatures = new List <VehicleFeature>();
                foreach (var featureId in serviceModel.Vehicle.FeatureIds)
                {
                    var vehicleFeature = new VehicleFeature
                    {
                        FeatureId = featureId,
                    };

                    vehicleFeatures.Add(vehicleFeature);
                }

                vehicle.Features = vehicleFeatures;

                await DeleteFeaturesByVehicleIdAsync(serviceModel); //TODO implement logic to check if the Id exists and to skip instead of deleting it.

                this.db.Update(vehicle);
                await this.db.SaveChangesAsync();

                return(true);
            }
            catch
            {
                return(false);
            }
        }
        private static void SeedAds(CarDealerDbContext dbContext)
        {
            if (!dbContext.Vehicles.Any())
            {
                var random               = new Random();
                var usersIds             = dbContext.Users.Select(u => u.Id).ToList();
                var manufacturers        = dbContext.Manufacturers.Include(m => m.Models).ToList();
                var fuelTypesIds         = dbContext.FuelTypes.Select(ft => ft.Id).ToList();
                var transmissionTypesIds = dbContext.TransmissionTypes.Select(gt => gt.Id).ToList();
                var featuresIds          = dbContext.Features.Select(vt => vt.Id).ToList();


                var phoneNumbers = new List <string>(new[] { "(670) 309-2183", "(679) 340-0199", "(878) 777-3611", "(695) 214-5297", "(236) 253-7130", "(546) 501-6817", "(667) 421-2466", "(851) 213-5807", "(443) 864-6982", "(261) 377-3425", "(578) 282-9419", "(736) 351-5888", "(914) 914-3479", "(881) 499-7281", "(454) 316-0099", "(695) 540-3684", "(962) 776-8434", "(743) 410-3443", "(265) 930-8419", "(551) 495-0821", "(719) 892-6865", "(712) 265-8480", "(685) 741-6643", "(368) 460-9327", "(277) 489-0443", "(603) 653-6829", "(621) 974-1692", "(939) 616-9905", "(968) 764-9261", "(966) 674-2575", "(271) 675-9175", "(914) 794-8121", "(506) 860-2903", "(998) 846 - 2177", "(672) 259 - 5085", "(323) 546 - 4602", "(224) 874 - 6451", "(703) 567-8344", "(715) 467-1275", "(229) 693-7707", "(518) 747 - 7492", "(777) 431 - 9597", "(958) 268 - 4251", "(359) 994 - 0362", "(995) 341 - 0274", "(679) 718 - 5858", "(421) 986 - 3652", "(261) 677 - 1217", "(567) 714 - 6920", "(458) 200 - 3714", "(918) 391 - 1595", "(876) 353 - 1315", "(718) 939 - 6369", "(536) 621 - 6715", "(491) 459 - 1174", "(939) 260 - 8986", "(289) 298 - 6482", "(626) 752 - 8369", "(757) 642 - 6735", "(302) 800-1794", "(954) 679-8213", "(591) 635-9912", "(302) 545-1067", "(712) 289-3904", "(450) 728-8389", "(320) 521-0603", "(437) 496-3317", "(983) 481-8388", "(538) 762-8202", "(683) 269-7351", "(862) 283-5363", "(451) 431-4749", "(756) 980-6403", "(493) 493-4287", "(995) 731-0489", "(770) 328-4035", "(518) 538-2948", "(302) 488-9289", "(850) 642-0775", "(325) 751-3081", "(972) 200-2723", "(625) 343-3966", "(583) 854-0977", "(858) 884-9278", "(447) 496-6180", "(659) 984-7782", "(468) 346-8208", "(236) 396-9261", "(525) 870-2714", "(749) 857-3482", });
                var description  = @"
Lorem ipsum dolor sit amet, consectetur adipiscing elit.Fusce tempor eleifend est et hendrerit. Sed magna ante, dictum ut nisi non, ornare interdum augue. Nulla condimentum a enim et posuere. Donec aliquam tristique arcu quis semper. Quisque aliquam urna malesuada, commodo ex sed, interdum lectus.Sed eu ante sit amet est volutpat ullamcorper. Donec eget vestibulum risus. Integer ut sapien varius, posuere ipsum non, semper magna.Vestibulum quis nisl euismod elit auctor viverra.Mauris lobortis gravida turpis, vitae ullamcorper lectus laoreet quis. Nunc ac consectetur mi. Fusce elementum et nulla vel vulputate. Nulla consequat efficitur convallis. Nunc vehicula erat et sapien interdum, et pharetra mauris tincidunt.Quisque placerat interdum eros in tincidunt.Suspendisse gravida odio ut consequat faucibus.
Nunc sed nisi placerat odio tincidunt posuere.Phasellus sollicitudin metus vel arcu viverra, nec ultricies felis dapibus.Sed pulvinar turpis urna, eget molestie ante faucibus a. In hac habitasse platea dictumst.Fusce quis purus sit amet sapien imperdiet vehicula. Fusce sit amet ullamcorper mauris.Morbi aliquam interdum mi, sed luctus massa tincidunt eu. Vestibulum turpis ligula, suscipit quis leo in, tristique vestibulum ex.Etiam tempus tempor cursus. Aenean a diam quis libero commodo placerat in quis felis. Nunc ut lorem lacus. Duis commodo laoreet quam, vitae iaculis purus. Fusce sollicitudin elit nec sem egestas vestibulum.
Sed metus nisl, interdum ultrices orci laoreet, rutrum sollicitudin libero. Donec in dictum enim, a tempor erat. Aliquam ac lacus turpis. Morbi sed varius felis. Vestibulum non tortor bibendum, tristique purus id, fringilla enim.Praesent cursus laoreet libero. Donec laoreet nunc ac ante placerat tempus.Aenean turpis odio, lobortis eu leo quis, fermentum ultricies ex. Etiam sit amet augue sed arcu vehicula pharetra. Aenean lacinia risus ut nibh interdum tincidunt.
Maecenas ut odio nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas sed tincidunt leo. Sed viverra at urna eu aliquam. Aenean elementum varius cursus. Aliquam dignissim dolor ullamcorper sapien tempus, non sollicitudin justo laoreet.Suspendisse dictum eget sem eu mollis. Ut nunc ex, mollis id lorem eget, vulputate fermentum elit. Donec sit amet velit lacus.Donec vitae nulla eu nibh porta faucibus.Interdum et malesuada fames ac ante ipsum primis in faucibus.Donec quis lacinia nulla. Nunc placerat maximus lacus. Ut facilisis eu lectus eget facilisis. Mauris sed arcu sed neque finibus vestibulum.
Duis elit nisi, mollis vitae hendrerit eu, aliquet ac metus. Vestibulum placerat sagittis scelerisque. Cras ultrices purus arcu, vitae sagittis turpis placerat ac. Quisque sit amet erat varius, ultricies ante sed, aliquam mi. Suspendisse laoreet ultricies vestibulum. Aliquam fermentum lacus in augue faucibus, ultricies vehicula elit tempor.Etiam lacinia quam sed bibendum sollicitudin. Vestibulum sed nunc malesuada, egestas erat eget, rhoncus leo.Nulla venenatis quam nunc, ac dapibus nisi convallis ac. Duis bibendum mauris eu mauris facilisis viverra.Integer imperdiet neque eget orci lobortis hendrerit.
Mauris varius, est sed eleifend mollis, tellus est tempor sem, id laoreet tellus nulla ac quam.Integer volutpat dui ipsum, finibus bibendum est sodales sit amet.Integer sed venenatis quam. Aliquam maximus eu urna tincidunt condimentum. Sed a dignissim nunc. Morbi aliquam hendrerit suscipit. Fusce at tempus augue. Donec nisi enim, egestas id dapibus ut, scelerisque eu lorem. Phasellus quis tempor turpis. Morbi eleifend pharetra ultricies. Aenean maximus fermentum ante sit amet tincidunt.Maecenas libero tortor, pellentesque sed mattis in, gravida in felis.
Nam egestas erat felis, in malesuada erat interdum sed. Nulla rhoncus et augue eu placerat. Suspendisse molestie luctus justo, nec volutpat lacus sollicitudin sed. In elit nisi, sodales nec magna vitae, pellentesque sodales lacus. Aenean eget orci pharetra felis feugiat faucibus.Pellentesque fringilla lorem sed consequat venenatis. Morbi ut turpis sit amet leo eleifend sodales. Vestibulum in massa ut quam semper laoreet.Aliquam fringilla tincidunt sapien vel euismod. Suspendisse suscipit vestibulum sapien sed pellentesque. Donec vitae laoreet risus, ac maximus ante. Morbi tempor diam quis volutpat laoreet.
Vivamus ullamcorper felis vitae pellentesque placerat. Phasellus consequat quam maximus turpis gravida, nec auctor sapien suscipit.Nam at ante in libero facilisis condimentum vitae sit amet arcu.Quisque ut sapien congue, facilisis turpis ut, commodo odio.In dapibus neque in mi luctus accumsan.Donec est tellus, malesuada a eleifend ac, consequat at mi. Phasellus iaculis tincidunt ex, in condimentum magna luctus ac. In fringilla efficitur purus vel cursus. Nullam finibus massa vel sodales eleifend. Pellentesque semper non dolor vel auctor.
Vivamus efficitur erat mi, et sollicitudin enim auctor a. Mauris vehicula lectus pharetra ligula mollis, vulputate bibendum ipsum volutpat.In malesuada ipsum eget augue pharetra venenatis.Quisque a est nulla. Fusce tincidunt rutrum purus non tincidunt. Vivamus eget metus rhoncus, interdum est at, luctus arcu.Curabitur aliquam pellentesque nisi, eu convallis lectus efficitur id. Duis aliquam ut urna dignissim aliquam. Morbi interdum purus dui. Lorem ipsum dolor sit amet, consectetur adipiscing elit.Sed egestas in elit quis laoreet.Phasellus aliquam congue sollicitudin. Etiam quis tellus semper est tincidunt tempor ac id nibh. Maecenas porta nec lorem condimentum finibus.
Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse quis ultricies ex. Nullam vehicula tellus a dignissim pellentesque. Aliquam at cursus tortor, in viverra turpis. Maecenas lacinia est nisl, at tincidunt augue sollicitudin eu. Aenean bibendum a nunc eu semper. Proin sit amet lectus diam.Curabitur quis erat faucibus, consectetur libero vitae, fermentum magna.Nulla volutpat condimentum neque, sed pellentesque nulla pulvinar eu. ";

                var ads = new List <Ad>();
                foreach (var user in usersIds)
                {
                    for (int manufacturerIndex = 0; manufacturerIndex < manufacturers.Count; manufacturerIndex++)
                    {
                        //var model = manufacturers[manufacturerIndex].Models.Take(10).ToList();
                        var model = manufacturers[manufacturerIndex].Models.ToList();
                        foreach (var vehicleModel in model)
                        {
                            for (int vehicleCount = 0; vehicleCount < random.Next(1, 22); vehicleCount++)
                            {
                                var phone = phoneNumbers[random.Next(1, phoneNumbers.Count)];

                                var vehicleFeatures = new List <VehicleFeature>();
                                for (int f = 1; f <= random.Next(1, featuresIds.Count); f++)
                                {
                                    var feature = new VehicleFeature
                                    {
                                        FeatureId = f,
                                    };

                                    vehicleFeatures.Add(feature);
                                }

                                var vehicle = new Vehicle
                                {
                                    ManufacturerId     = manufacturerIndex + 1,
                                    IsDeleted          = false,
                                    ModelId            = vehicleModel.Id,
                                    Condition          = (ConditionType)random.Next(0, 1),
                                    Description        = description,
                                    Engine             = "Lorem ipsum dolor sit amet.",
                                    Features           = vehicleFeatures,
                                    EngineHorsePower   = random.Next(10, 1000),
                                    FuelConsumption    = random.Next(4, 30),
                                    YearOfProduction   = random.Next(1990, DateTime.UtcNow.Year),
                                    TotalMileage       = random.Next(1, 300000),
                                    Price              = random.Next(5000, 1000000),
                                    FuelTypeId         = fuelTypesIds[random.Next(0, fuelTypesIds.Count)],
                                    TransmissionTypeId = transmissionTypesIds[random.Next(0, transmissionTypesIds.Count)],
                                    Pictures           = new List <Picture> {
                                        new Picture {
                                            Path = GlobalConstants.DefaultPicturePath
                                        }
                                    },
                                };

                                var ad = new Ad
                                {
                                    CreationDate = DateTime.UtcNow,
                                    PhoneNumber  = phone,
                                    UserId       = user,
                                    Vehicle      = vehicle,
                                    IsDeleted    = false,
                                    IsReported   = false,
                                };

                                ads.Add(ad);
                            }
                        }
                    }
                }

                using (var scope = CreateTransactionScope(TimeSpan.FromHours(1)))
                {
                    try
                    {
                        dbContext.ChangeTracker.AutoDetectChangesEnabled = false;
                        int count     = 0;
                        var startTime = DateTime.Now;
                        foreach (var entityToInsert in ads)
                        {
                            ++count;
                            dbContext = AddToContext(dbContext, entityToInsert, count, 100, true, ads.Count, startTime);
                        }
                    }
                    finally
                    {
                        dbContext?.Dispose();
                    }

                    scope.Complete();
                }
            }
        }
Ejemplo n.º 10
0
        public static void Initialize(CarContext context)
        {
            context.Database.EnsureCreated();

            // Look for any students.
            if (context.VehicleManufacters.Any())
            {
                return;   // DB has been seeded
            }

            var manufacter = new VehicleManufacter[]
            {
                new VehicleManufacter {
                    ManufacterID = 01, ManufacterName = "BMW"
                },
                new VehicleManufacter {
                    ManufacterID = 02, ManufacterName = "Audi"
                },
                new VehicleManufacter {
                    ManufacterID = 03, ManufacterName = "Mercedes Benz"
                },
                new VehicleManufacter {
                    ManufacterID = 04, ManufacterName = "Ferrari"
                },
                new VehicleManufacter {
                    ManufacterID = 05, ManufacterName = "McLaren"
                },
                new VehicleManufacter {
                    ManufacterID = 06, ManufacterName = "Nissan"
                },
            };

            foreach (VehicleManufacter m in manufacter)
            {
                context.VehicleManufacters.Add(m);
            }
            context.SaveChanges();

            var color = new VehicleColour[]
            {
                new VehicleColour {
                    ColourID = 01, ColourName = "White"
                },
                new VehicleColour {
                    ColourID = 02, ColourName = "Black"
                },
                new VehicleColour {
                    ColourID = 03, ColourName = "Blue"
                },
                new VehicleColour {
                    ColourID = 04, ColourName = "Green"
                },
                new VehicleColour {
                    ColourID = 05, ColourName = "Red"
                },
                new VehicleColour {
                    ColourID = 06, ColourName = "Orange"
                },
                new VehicleColour {
                    ColourID = 07, ColourName = "Pink"
                },
            };

            foreach (VehicleColour c in color)
            {
                context.VehicleColours.Add(c);
            }
            context.SaveChanges();

            var feature = new VehicleFeature[]
            {
                new VehicleFeature {
                    FeatureID = 01, FeatureDescription = "200km max"
                },
                new VehicleFeature {
                    FeatureID = 02, FeatureDescription = "250km max"
                },
                new VehicleFeature {
                    FeatureID = 03, FeatureDescription = "300km max"
                },
                new VehicleFeature {
                    FeatureID = 04, FeatureDescription = "350km max"
                },
                new VehicleFeature {
                    FeatureID = 05, FeatureDescription = "400km max"
                },
            };

            foreach (VehicleFeature f in feature)
            {
                context.VehicleFeatures.Add(f);
            }
            context.SaveChanges();

            var fuel = new VehicleFuelType[]
            {
                new VehicleFuelType {
                    FuelTypeID = 01, FuelTypeName = "Magnus"
                },
                new VehicleFuelType {
                    FuelTypeID = 02, FuelTypeName = "Premium"
                },
                new VehicleFuelType {
                    FuelTypeID = 03, FuelTypeName = "Diesel"
                },
            };

            foreach (VehicleFuelType fu in fuel)
            {
                context.VehicleFuelTypes.Add(fu);
            }
            context.SaveChanges();

            var models = new VehicleModel[]
            {
                new VehicleModel {
                    ModelID = 01, ModelName = "M3", ManufacterID = manufacter.Single(m => m.ManufacterName == "BMW").ManufacterID
                },
                new VehicleModel {
                    ModelID = 02, ModelName = "Z4", ManufacterID = manufacter.Single(m => m.ManufacterName == "BMW").ManufacterID
                },
                new VehicleModel {
                    ModelID = 03, ModelName = "M5", ManufacterID = manufacter.Single(m => m.ManufacterName == "BMW").ManufacterID
                },
                new VehicleModel {
                    ModelID = 04, ModelName = "RS", ManufacterID = manufacter.Single(m => m.ManufacterName == "Audi").ManufacterID
                },
                new VehicleModel {
                    ModelID = 05, ModelName = "SL65M6", ManufacterID = manufacter.Single(m => m.ManufacterName == "Mercedes Benz").ManufacterID
                },
                new VehicleModel {
                    ModelID = 06, ModelName = "Enzo", ManufacterID = manufacter.Single(m => m.ManufacterName == "Ferrari").ManufacterID
                },
                new VehicleModel {
                    ModelID = 07, ModelName = "Carrera", ManufacterID = manufacter.Single(m => m.ManufacterName == "Ferrari").ManufacterID
                },
                new VehicleModel {
                    ModelID = 08, ModelName = "Senna", ManufacterID = manufacter.Single(m => m.ManufacterName == "McLaren").ManufacterID
                },
                new VehicleModel {
                    ModelID = 09, ModelName = "Skyline", ManufacterID = manufacter.Single(m => m.ManufacterName == "Nissan").ManufacterID
                },
                new VehicleModel {
                    ModelID = 10, ModelName = "GT R", ManufacterID = manufacter.Single(m => m.ManufacterName == "Nissan").ManufacterID
                },
            };

            foreach (VehicleModel mo in models)
            {
                context.VehicleModels.Add(mo);
            }
            context.SaveChanges();

            var details = new VehicleDetail[]
            {
                new VehicleDetail {
                    CarRegistration = "BMW01", ModelID = models.Single(mo => mo.ModelID == 01).ModelID, ManufactureYear = DateTime.Parse("01-01-2012"),
                    ColourID        = color.Single(c => c.ColourID == 01).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 02).FuelTypeID, CurrentMilage = 2300000, VehiclePrice = 500000
                },
                new VehicleDetail {
                    CarRegistration = "BMW02", ModelID = models.Single(mo => mo.ModelID == 02).ModelID, ManufactureYear = DateTime.Parse("01-01-2016"),
                    ColourID        = color.Single(c => c.ColourID == 04).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 02).FuelTypeID, CurrentMilage = 530000, VehiclePrice = 1500000
                },
                new VehicleDetail {
                    CarRegistration = "BMW03", ModelID = models.Single(mo => mo.ModelID == 03).ModelID, ManufactureYear = DateTime.Parse("01-01-2010"),
                    ColourID        = color.Single(c => c.ColourID == 02).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 325000, VehiclePrice = 450000
                },
                new VehicleDetail {
                    CarRegistration = "Audi01", ModelID = models.Single(mo => mo.ModelID == 04).ModelID, ManufactureYear = DateTime.Parse("01-01-2006"),
                    ColourID        = color.Single(c => c.ColourID == 01).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 650000, VehiclePrice = 890000
                },
                new VehicleDetail {
                    CarRegistration = "MB01", ModelID = models.Single(mo => mo.ModelID == 05).ModelID, ManufactureYear = DateTime.Parse("01-01-1998"),
                    ColourID        = color.Single(c => c.ColourID == 06).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 125000, VehiclePrice = 1250000
                },
                new VehicleDetail {
                    CarRegistration = "F01", ModelID = models.Single(mo => mo.ModelID == 06).ModelID, ManufactureYear = DateTime.Parse("01-01-2000"),
                    ColourID        = color.Single(c => c.ColourID == 05).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 568900, VehiclePrice = 3500000
                },
                new VehicleDetail {
                    CarRegistration = "F02", ModelID = models.Single(mo => mo.ModelID == 07).ModelID, ManufactureYear = DateTime.Parse("01-01-1992"),
                    ColourID        = color.Single(c => c.ColourID == 07).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 2000000, VehiclePrice = 6500000
                },
                new VehicleDetail {
                    CarRegistration = "MC01", ModelID = models.Single(mo => mo.ModelID == 08).ModelID, ManufactureYear = DateTime.Parse("01-01-2016"),
                    ColourID        = color.Single(c => c.ColourID == 02).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 02).FuelTypeID, CurrentMilage = 15000, VehiclePrice = 16000000
                },
                new VehicleDetail {
                    CarRegistration = "NSS01", ModelID = models.Single(mo => mo.ModelID == 09).ModelID, ManufactureYear = DateTime.Parse("01-01-1971"),
                    ColourID        = color.Single(c => c.ColourID == 01).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 01).FuelTypeID, CurrentMilage = 6500000, VehiclePrice = 750000
                },
                new VehicleDetail {
                    CarRegistration = "NSS02", ModelID = models.Single(mo => mo.ModelID == 10).ModelID, ManufactureYear = DateTime.Parse("01-01-2017"),
                    ColourID        = color.Single(c => c.ColourID == 06).ColourID, FuelTypeID = fuel.Single(fu => fu.FuelTypeID == 02).FuelTypeID, CurrentMilage = 40000, VehiclePrice = 830000
                },
            };

            foreach (VehicleDetail d in details)
            {
                context.VehicleDetails.Add(d);
            }
            context.SaveChanges();

            var link = new LinkFeatureToVehicle[]
            {
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "BMW01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 01).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "BMW02").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 02).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "BMW03").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 02).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "Audi01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 01).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "MB01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 01).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "F01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 03).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "F02").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 04).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "MC01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 05).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "NSS01").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 01).FeatureID
                },
                new LinkFeatureToVehicle {
                    CarRegistration = details.Single(d => d.CarRegistration == "NSS02").CarRegistration, FeatureID = feature.Single(f => f.FeatureID == 04).FeatureID
                },
            };

            foreach (LinkFeatureToVehicle l in link)
            {
                context.LinkFeatureToVehicles.Add(l);
            }
            context.SaveChanges();
        }