示例#1
0
        public static void CreateReports(ISqlServerDb sqlServerDatabase, XmlSerializer xmlSerializer, DirectoryInfo destinationDir)
        {
            var allReports = sqlServerDatabase
                             .SalesReports
                             .All()
                             .Select(r => new SalesReport()
            {
                Id    = r.Id,
                Sales = r.Sales.Select(s => new Sale()
                {
                    Id         = s.Id,
                    Employee   = s.Employee.Name,
                    SaleDate   = s.SaleDate,
                    Shop       = s.Shop.Name,
                    TotalValue = s.TotalValue
                })
                        .ToList()
            })
                             .ToList();

            var xmlWriterSettings = new XmlWriterSettings();

            xmlWriterSettings.Indent = true;

            foreach (var report in allReports)
            {
                string fileName = $"{destinationDir}\\{report.Id}.xml";

                using (var writer = XmlWriter.Create(fileName, xmlWriterSettings))
                {
                    xmlSerializer.Serialize(writer, report);
                }
            }
        }
示例#2
0
 public void TransferToSqlServer(IMongoDatabase mongoDataBase, ISqlServerDb sqlServerDatabase)
 {
     this.TransferDisplays(mongoDataBase, sqlServerDatabase);
     this.TransferBatteries(mongoDataBase, sqlServerDatabase);
     this.TransferProcessors(mongoDataBase, sqlServerDatabase);
     this.TransferMobileDevices(mongoDataBase, sqlServerDatabase);
 }
示例#3
0
        private static Sale CreateSale(DataRow row, ISqlServerDb db)
        {
            string str    = row["ShopId"].ToString();
            var    shopId = Guid.Parse(row["ShopId"].ToString());
            var    shop   = db.Shops.All().FirstOrDefault(s => s.Id == shopId);

            var productId = Guid.Parse(row["ProductId"].ToString());
            var product   = db.MobileDevices.All().FirstOrDefault(d => d.Id == productId);

            var employeeId = Guid.Parse(row["ResponsibleEmploeeId"].ToString());
            var employee   = db.Employees.All().FirstOrDefault(e => e.Id == employeeId);

            var saleDate   = DateTime.Parse(row["DateTime"].ToString());
            var quantity   = int.Parse(row["Quantity"].ToString());
            var totalValue = int.Parse(row["TotalValue"].ToString());
            var currency   = (CurrencyType)Enum.Parse(typeof(CurrencyType), row["Currency"].ToString());

            var sale = new Sale
            {
                ShopId     = shopId,
                Shop       = shop,
                ProductId  = productId,
                Product    = product,
                EmployeeId = employeeId,
                Employee   = employee,
                SaleDate   = saleDate,
                Quantity   = quantity,
                TotalValue = totalValue,
                Currency   = currency
            };

            return(sale);
        }
示例#4
0
        private static void TraverseDirectory(DirectoryInfo directory, ISqlServerDb db)
        {
            DirectoryInfo[] childDirectories = directory.GetDirectories();
            foreach (DirectoryInfo dir in childDirectories)
            {
                TraverseDirectory(dir, db);
            }

            FileInfo[] files = directory.GetFiles();
            foreach (var file in files)
            {
                DataTable   data   = ReadFile(file.FullName);
                SalesReport report = new SalesReport();

                foreach (DataRow row in data.Rows)
                {
                    Sale sale = CreateSale(row, db);
                    db.Sales.Add(sale);
                    sale.SalesReport   = report;
                    sale.SalesReportId = report.Id;
                    report.Sales.Add(sale);
                }

                db.SalesReports.Add(report);
                db.SaveChanges();
            }
        }
示例#5
0
        public static void ImportReports(DirectoryInfo rootDirectory, ISqlServerDb db)
        {
            string nullRootDirectoryMessage = string.Format(NullObjectMessage, "Excel root directory");
            string nullDatabaseMessage      = string.Format(NullObjectMessage, "Database");

            ValidateIfObjectIsNull(rootDirectory, nullRootDirectoryMessage);
            ValidateIfObjectIsNull(db, nullDatabaseMessage);

            TraverseDirectory(rootDirectory, db);
        }
示例#6
0
        private void TransferProcessors(IMongoDatabase mongoDatabse, ISqlServerDb sqlServerDatabase)
        {
            var processorsCollection = mongoDatabse.GetCollection <Processor>("processors");
            var mongoProcessors      = processorsCollection.Find(b => true).ToList();
            var processorsTable      = sqlServerDatabase.Processors;

            foreach (var processor in mongoProcessors)
            {
                var newProcessor = this.mssqlModelsFactory
                                   .CreateProcessor(processor.ClockSpeed, processor.CacheMemory);
                processorsTable.Add(newProcessor);
            }

            sqlServerDatabase.SaveChanges();
        }
示例#7
0
        private void TransferBatteries(IMongoDatabase mongoDatabse, ISqlServerDb sqlServerDatabase)
        {
            var batteriesCollection = mongoDatabse.GetCollection <Battery>("batteries");
            var mongoBatteries      = batteriesCollection.Find(b => true).ToList();
            var batteriesTable      = sqlServerDatabase.Batteries;

            foreach (var battery in mongoBatteries)
            {
                var newBattery = this.mssqlModelsFactory
                                 .CreateBattery(battery.Type, battery.Capacity);
                batteriesTable.Add(newBattery);
            }

            sqlServerDatabase.SaveChanges();
        }
示例#8
0
        private void TransferDisplays(IMongoDatabase mongoDatabse, ISqlServerDb sqlServerDatabase)
        {
            var displaysCollection = mongoDatabse.GetCollection <Display>("displays");
            var mongoDisplays      = displaysCollection.Find(d => true).ToList();
            var displaysTable      = sqlServerDatabase.Displays;

            foreach (var display in mongoDisplays)
            {
                var newDisplay = this.mssqlModelsFactory
                                 .CreateDisplay(display.Type, display.Size, display.Resolution);
                displaysTable.Add(newDisplay);
            }

            sqlServerDatabase.SaveChanges();
        }
示例#9
0
        public static void SeedDatabase(ISqlServerDb sqlServerDatabase, MySqlDb databaseToSeed)
        {
            var allReports = sqlServerDatabase
                             .SalesReports
                             .All()
                             .Select(r => r.Sales.Select(s => new SalesReport()
            {
                Employee   = s.Employee.Name,
                Product    = s.Product.Model,
                Shop       = s.Shop.Name,
                Date       = s.SaleDate,
                TotalValue = s.TotalValue
            }))
                             .SelectMany(x => x)
                             .ToList();

            databaseToSeed.SalesRepository.AddMany(allReports);
            databaseToSeed.SalesRepository.SaveChanges();
        }
示例#10
0
        private void TransferMobileDevices(IMongoDatabase mongoDatabse, ISqlServerDb sqlServerDatabase)
        {
            var devicesCollection = mongoDatabse.GetCollection <MobileDevice>("mobileDevices");
            var mongoDevices      = devicesCollection.Find(b => true).ToList();
            var devicesTable      = sqlServerDatabase.MobileDevices;

            foreach (var device in mongoDevices)
            {
                var newDevice = this.mssqlModelsFactory
                                .CreateMobileDevice(
                    device.Brand,
                    device.Model,
                    device.Display,
                    device.Battery,
                    device.Processor);

                devicesTable.Add(newDevice);
            }

            sqlServerDatabase.SaveChanges();
        }
示例#11
0
        public static void CreateReports(ISqlServerDb sqlServerDatabase, DirectoryInfo destinationDir)
        {
            string nullDatabaseMessage             = string.Format(NullObjectMessage, "Database");
            string nullDestinationDirectoryMessage = string.Format(NullObjectMessage, "Destination folder");

            ValidateIfObjectIsNull(sqlServerDatabase, nullDatabaseMessage);
            ValidateIfObjectIsNull(destinationDir, nullDestinationDirectoryMessage);

            var allReports = sqlServerDatabase
                             .SalesReports
                             .All()
                             .Select(r => new
            {
                Id    = r.Id,
                Sales = r.Sales.Select(s => new
                {
                    Employee   = s.Employee.Name,
                    SaleDate   = s.SaleDate,
                    ShopName   = s.Shop.Name,
                    Product    = (Brand)s.Product.Brand,
                    TotalValue = s.TotalValue
                })
                        .ToList()
            })
                             .ToList();

            foreach (var report in allReports)
            {
                string fileName   = $"{destinationDir}\\{report.Id}.json";
                var    jsonObject = JsonConvert.SerializeObject(report);

                using (var writer = new StreamWriter(fileName))
                {
                    writer.WriteLine(jsonObject);
                }
            }
        }
示例#12
0
 protected XmlImporter(ISqlServerDb sqlServerDatabase, IMongoDatabase mongoData, XmlSerializer xmlSerializer)
 {
     this.SqlServerDatabase = sqlServerDatabase;
     this.MongoDatabase     = mongoData;
     this.XmlSerializer     = xmlSerializer;
 }
示例#13
0
 public MsSqlModelsFactory(ISqlServerDb db)
 {
     this.db = db;
 }
示例#14
0
 public PdfReporter(ISqlServerDb database)
 {
     this.database = database;
 }
示例#15
0
 public MobileDeviceXmlImporter(ISqlServerDb sqlServerData, IMongoDatabase mongoData, XmlSerializer serializer)
     : base(sqlServerData, mongoData, serializer)
 {
     this.mobileDeviceFactory = new MsSqlModelsFactory(sqlServerData);
 }
 public DataAccessLayer(ISqlServerDb sqlServer)
 {
     _sql = sqlServer;
 }