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); }
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); }
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); }
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); }
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); }
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); }
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)); } }
public EditModel(ICarsData carsData, IHtmlHelper htmlHelper) { this.carsData = carsData; this.htmlHelper = htmlHelper; }
public ListModel(ICarsData carsData) { this.carsData = carsData; }
public DetailModel(ICarsData carsData) { this.carsData = carsData; }
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; }