public void Import(string jsonImportFilePath)
        {
            var jsonText = this.CheckIfFileExsists(jsonImportFilePath);
            var convertedColection = JsonConvert.DeserializeObject<List<JsonCar>>(jsonText);
            var saveFrequency = 100;
            var objectCount = 0;

            foreach (var car in convertedColection)
            {
                var carToAddToDatabes = new Car
                                            {
                                                Model = car.Model, 
                                                Year = car.Year, 
                                                Manufacturer = this.AddManufacturer(car), 
                                                Dealer = this.AddDealer(car),
                                                TransmisionType = (TransmisionType)car.TransmisionType, 
                                                Price = car.Price
                                            };

                this.databaseContext.Cars.Add(carToAddToDatabes);
                this.logger.Log(".");

                objectCount += 1;

                if (objectCount % saveFrequency == 0)
                {
                    this.databaseContext.SaveChanges();
                }
            }
        }
        public HttpResponseMessage PostCar([FromBody] CarDetailedModel car,
            [ValueProvider(typeof(HeaderValueProviderFactory<string>))] string sessionKey)
        {
            var messageResponse = this.TryExecuteOperation<HttpResponseMessage>(() =>
            {
                var user = unitOfWork.userRepository.All().Single(x => x.SessionKey == sessionKey);
                ValidateUser(user);
                ValidateMaker(car.Maker);
                ValidateModel(car.Model);
                ValidateProductionYear(car.ProductionYear);
                ValidatePrice(car.Price);
                ValidateEngine(car.Engine);
                ValidateFuelType(car.FuelType);
                ValidateEngineVolume(car.EngineVolume);
                ValidateHp(car.HP);
                ValidateMileage(car.Mileage);
                ValidateGear(car.Gear);
                ValidateDoors(car.Doors);
                ValidateImageUrl(car.ImageUrl);

                var newCar = new Car()
                {
                    Maker = car.Maker,
                    Model = car.Model,
                    ProductionYear = car.ProductionYear,
                    Price = car.Price,
                    Engine = car.Engine,
                    HP = car.HP,
                    Gear = car.Gear,
                    ImageUrl = car.ImageUrl,
                    Doors = car.Doors,
                    EngineVolume = car.EngineVolume,
                    FuelType = car.FuelType,
                    Mileage = car.Mileage,
                    Owner = user,
                };

                if (car.Extras != null)
                {
                    foreach (var extra in car.Extras)
                    {
                        var newExtra = new Extra();
                        var existingExtra =
                            this.unitOfWork.extraRepository.All().FirstOrDefault(x => x.Name == extra.Name);
                        if (existingExtra == null)
                        {
                            newExtra.Name = extra.Name;
                        }
                        else
                        {
                            newExtra = existingExtra;
                        }

                        newCar.Extras.Add(newExtra);
                    }
                }

                unitOfWork.carRepository.Add(newCar);

                return Request.CreateResponse(HttpStatusCode.Created, car);
            });

            return messageResponse;
        }