Beispiel #1
0
        private static XElement GenerateXmlElement(ICarsData data, Cars.Models.Car itemInResult)
        {
            var car = new XElement("Car");

            car.Add(new XElement("TransmissionType", itemInResult.TransmitionType));

            var dealer = data.Dealers.All().First(d => d.Id == itemInResult.DealerId);

            var xmlDealer = new XElement("Dealer", dealer.Name);

            var cities = itemInResult.Dealer.Cities.ToList();

            string listOfCities = string.Empty;

            foreach (var city in cities)
            {
                listOfCities += string.Format("{0}, ", city.Name);
            }

            xmlDealer.Add(new XElement("Cities", listOfCities.TrimEnd(' ').TrimEnd(',')));
            car.Add(xmlDealer);

            car.SetAttributeValue("Manufacturer", itemInResult.Manufacturer.Name);
            car.SetAttributeValue("Model", itemInResult.Model);
            car.SetAttributeValue("Year", itemInResult.Year);
            car.SetAttributeValue("Price", itemInResult.Price);

            return(car);
        }
Beispiel #2
0
        private static void Operate(string connectionstring)
        {
            var jsonImporter = new JsonImporter();
            var xmlSearcher  = new XmlSearcher();

            data = new CarsData(connectionstring);

            jsonImporter.Import(data, InputFolder);
            ////xmlSearcher.Search(data, SearchFile);
        }
Beispiel #3
0
        public void Import(ICarsData data, string inputFolder)
        {
            Console.Write("Importing...");
            List <CarModel> cars = new List <CarModel>();

            data.AutoDetectChanges(false);

            foreach (string jsonFile in Directory.EnumerateFiles(inputFolder, "*.json"))
            {
                using (StreamReader r = new StreamReader(jsonFile))
                {
                    string json = r.ReadToEnd();
                    cars = JsonConvert.DeserializeObject <List <CarModel> >(json);
                    var index = 0;

                    foreach (var car in cars)
                    {
                        var manufacturer = GetManufacturer(data, car);
                        var city         = GetCity(data, car);
                        var dealer       = GetDealer(data, car);

                        var cityExistsInDealerCities = dealer.Cities.Any(c => c.Name == car.Dealer.City);
                        if (!cityExistsInDealerCities)
                        {
                            dealer.Cities.Add(city);
                        }

                        var newCar = new Car()
                        {
                            Manufacturer    = manufacturer,
                            ManufacturerId  = manufacturer.Id,
                            Dealer          = dealer,
                            DealerId        = dealer.Id,
                            Price           = car.Price,
                            Model           = car.Model,
                            TransmitionType = car.TransmissionType,
                            Year            = car.Year
                        };

                        data.Cars.Add(newCar);

                        index++;
                        if (index % 200 == 0)
                        {
                            Console.Write(".");
                            data.SaveChanges();
                        }
                    }
                }
            }

            Console.WriteLine("Done!");
            data.AutoDetectChanges(true);
        }
Beispiel #4
0
        private static Manufacturer GetManufacturer(ICarsData data, CarModel car)
        {
            var manifacturer = data.Manufacturers.Local().FirstOrDefault(m => m.Name == car.ManufacturerName);

            if (manifacturer == null)
            {
                manifacturer      = new Manufacturer();
                manifacturer.Name = car.ManufacturerName;
                data.Manufacturers.Add(manifacturer);
            }

            return(manifacturer);
        }
Beispiel #5
0
        private static City GetCity(ICarsData data, CarModel car)
        {
            var city = data.Cities.Local().FirstOrDefault(c => c.Name == car.Dealer.City);

            if (city == null)
            {
                city      = new City();
                city.Name = car.Dealer.City;
                data.Cities.Add(city);
            }

            return(city);
        }
Beispiel #6
0
        private static Dealer GetDealer(ICarsData data, CarModel car)
        {
            var dealer = data.Dealers.Local().FirstOrDefault(d => d.Name == car.Dealer.Name);

            if (dealer == null)
            {
                dealer      = new Dealer();
                dealer.Name = car.Dealer.Name;
                data.Dealers.Add(dealer);
            }

            return(dealer);
        }
Beispiel #7
0
        public void Search(ICarsData data, string path)
        {
            var xmlQueries = XElement.Load(path).Elements();

            foreach (var xmlQuery in xmlQueries)
            {
                var allCars = data.Cars.All();

                var whereClauses = xmlQuery.Element("WhereClauses").Elements();
                var saveName     = xmlQuery.Attribute("OutputFileName").Value;
                var xmlResultSet = new XElement("Cars");

                foreach (var clause in whereClauses)
                {
                    var propertyName = clause.Attribute("PropertyName").Value;
                    var type         = clause.Attribute("Type").Value;

                    allCars = Where(data, allCars, clause, propertyName, type);
                }

                var orderBy = xmlQuery.Element("OrderBy").Value;
                allCars = OrderBy(allCars, orderBy);

                var result = allCars.ToList();

                foreach (var itemInResult in result)
                {
                    var car = GenerateXmlElement(data, itemInResult);
                    xmlResultSet.Add(car);
                }

                if (!Directory.Exists(this.reportFolder))
                {
                    Directory.CreateDirectory(this.reportFolder);
                }

                xmlResultSet.Save(string.Format("{0}{1}", this.reportFolder, saveName));
                Console.WriteLine(string.Format("{0} report made", saveName));
            }
        }
Beispiel #8
0
 public EditModel(ICarsData carsData, IHtmlHelper htmlHelper)
 {
     this.carsData   = carsData;
     this.htmlHelper = htmlHelper;
 }
Beispiel #9
0
 public ListModel(ICarsData carsData)
 {
     this.carsData = carsData;
 }
Beispiel #10
0
 public DetailModel(ICarsData carsData)
 {
     this.carsData = carsData;
 }
Beispiel #11
0
        private static IQueryable <Cars.Models.Car> Where(ICarsData data, IQueryable <Cars.Models.Car> allCars, XElement clause, string propertyName, string type)
        {
            if (propertyName == "City")
            {
                allCars = allCars.Where(c => c.Dealer.Cities.Any(city => city.Name == clause.Value));
            }

            if (propertyName == "Id")
            {
                var id = int.Parse(clause.Value);
                if (type == "GreaterThan")
                {
                    allCars = allCars.Where(c => c.Id > id);
                }

                if (type == "LessThan")
                {
                    allCars = allCars.Where(c => c.Id < id);
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Id == id);
                }
            }

            if (propertyName == "Year")
            {
                var year = int.Parse(clause.Value);
                if (type == "GreaterThan")
                {
                    allCars = allCars.Where(c => c.Year > year);
                }

                if (type == "LessThan")
                {
                    allCars = allCars.Where(c => c.Year < year);
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Year == year);
                }
            }

            if (propertyName == "Price")
            {
                var price = decimal.Parse(clause.Value, CultureInfo.InvariantCulture);
                if (type == "GreaterThan")
                {
                    allCars = allCars.Where(c => c.Price > price);
                }

                if (type == "LessThan")
                {
                    allCars = allCars.Where(c => c.Price < price);
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Price == price);
                }
            }

            if (propertyName == "Model")
            {
                if (type == "Contains")
                {
                    allCars = allCars.Where(c => c.Model.Contains(clause.Value));
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Model == clause.Value);
                }
            }

            if (propertyName == "Manufacturer ")
            {
                if (type == "Contains")
                {
                    allCars = allCars.Where(c => c.Manufacturer.Name.Contains(clause.Value));
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Manufacturer.Name == clause.Value);
                }
            }

            if (propertyName == "Dealer ")
            {
                if (type == "Contains")
                {
                    allCars = allCars.Where(c => c.Dealer.Name.Contains(clause.Value));
                }

                if (type == "Equals")
                {
                    allCars = allCars.Where(c => c.Dealer.Name == clause.Value);
                }
            }

            return(allCars);
        }
 public CarsController(ICarsData carsData)
 {
     _carsData = carsData;
 }