//Commented so i can start the program. private async static void GetMongoData() { try { var repo = new MongoDbRepository(); var cars = (await repo.GetCarsData()).ToList(); var ctx = new CarsFactoryDbContext(); using (ctx) { foreach (Car car in cars) { if (!ctx.Cars.Any(pl => pl.Id == car.Id)) { ctx.Cars.Add(car); } } ctx.SaveChanges(); } } catch (DataException) { throw new ArgumentException("MongoDb is not set up correctly."); } }
public async Task SaveAllMongoData(IMongoDbRepository repo, IMsSqlRepository mssqlRepo, ICarsFactoryDbContext ctx) { var towns = (await repo.GetTownsData()).ToList(); var platforms = (await repo.GetPlatformsData()).ToList(); var orders = (await repo.GetOrdersData()).ToList(); var models = (await repo.GetModelsData()).ToList(); var manufacturers = (await repo.GetManufacturersData()).ToList(); var engines = (await repo.GetEnginesData()).ToList(); var dealers = (await repo.GetDealersData()).ToList(); var cars = (await repo.GetCarsData()).ToList(); using (ctx = new CarsFactoryDbContext()) { mssqlRepo.ExtractTowns(towns, ctx); mssqlRepo.ExtractPlatforms(platforms, ctx); mssqlRepo.ExtractOrders(orders, ctx); mssqlRepo.ExtractManufacturers(manufacturers, ctx); mssqlRepo.ExtractEngines(engines, ctx); mssqlRepo.ExtractModels(models, ctx); mssqlRepo.ExtractCars(cars, ctx); mssqlRepo.ExtractDealers(dealers, ctx); await ctx.SaveChangesAsync(); } Console.WriteLine(cars.Count); Console.WriteLine(models.Count); Console.WriteLine(manufacturers.Count); Console.WriteLine(orders.Count); Console.WriteLine(platforms.Count); Console.WriteLine(engines.Count); Console.WriteLine(dealers.Count); Console.WriteLine(towns.Count); }
/// <summary> /// Creates XML reports and save them as a XML file /// </summary> public void CreateReport() { Console.WriteLine(ProcessInformation); XmlDocument report = new XmlDocument(); XmlDeclaration xmlDeclaration = report.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = report.CreateElement(RootName); report.AppendChild(root); report.InsertBefore(xmlDeclaration, root); using (var db = new CarsFactoryDbContext()) { var groupedCars = db.Models.GroupBy(s => s.Manufacturer) .ToList(); foreach (var eachCar in groupedCars) { XmlElement manufacturer = report.CreateElement("manufacturer"); manufacturer.SetAttribute("name", eachCar.Key.Name); root.AppendChild(manufacturer); foreach (var single in eachCar) { XmlElement car = report.CreateElement("car"); car.SetAttribute("model", single.Name.ToString()); car.SetAttribute("created-on", (single.Year.ToString())); manufacturer.AppendChild(car); } } } report.Save(SaveFilePath + FileName); }
public static void Main() { using (var dbContext = new CarsFactoryDbContext()) { dbContext.Database.CreateIfNotExists(); } //Startup.GetMongoData(); }
/// <summary> /// Generate a JSON file for each order /// Filename is the Id of order /// </summary> public void GenerateJson() { using (CarsFactoryDbContext ctx = new CarsFactoryDbContext()) { var ordersList = (from order in ctx.Orders let date = order.Date let totalRevenue = (decimal?)order.Cars.Where( y => y.OrderId != null && y.Order.OrderStatus == OrderStatus.Closed) .Sum(x => x.Price) let unitsSold = order.Cars.Count( y => y.OrderId != null && y.Order.OrderStatus == OrderStatus.Closed) select new { OrderId = order.Id, Date = date, UnitsSold = unitsSold, TotalRevenue = totalRevenue, }) .ToList(); foreach (var order in ordersList) { var path = "..\\..\\..\\Output\\Json-Reports"; var di = Directory.CreateDirectory(path); using (var writer = new StreamWriter("..\\..\\..\\Output\\Json-Reports\\" + order.OrderId + ".json")) { writer.Write(JsonConvert.SerializeObject(order, Formatting.Indented)); } MySqlConnect dbConn = new MySqlConnect(); dbConn.Insert(JsonConvert.SerializeObject(order, Formatting.Indented)); } } }