public ICollection <IXmlDailyShopReport> DailyShopReport(DealershipDbContext dbContext, ICollection <IXmlDailyShopReport> report)
        {
            using (dbContext)
            {
                var shops = dbContext.Shops.ToList();

                foreach (var shop in shops)
                {
                    var dailySells = dbContext.Sales.Where(s => s.ShopId == shop.Id).GroupBy(s => new { s.DateOfSale, s.Price }).OrderBy(d => d.Key.DateOfSale);


                    IXmlDailyShopReport market = new XmlDailyShopReport();

                    market.ShopPlace = shop.Name;

                    foreach (var day in dailySells)
                    {
                        if (!market.Transactions.ContainsKey(day.Key.DateOfSale))
                        {
                            market.Transactions[day.Key.DateOfSale] = new List <decimal?>();
                        }

                        market.Transactions[day.Key.DateOfSale].Add(day.Key.Price);
                    }

                    report.Add(market);
                }
            }

            return(report);
        }
        private void SeedDataFromXml()
        {
            textWriter.WriteLine("Seeding data from XML...");
            var xmlEmployeeReader = new XmlEmployeeReader();

            using (var dbContext = new DealershipDbContext())
            {
                var data = new DealershipData(dbContext);

                var employees = new DealershipRepository <Employee>(dbContext);
                var positions = new DealershipRepository <Position>(dbContext);
                var countries = new DealershipRepository <Country>(dbContext);
                var cities    = new DealershipRepository <City>(dbContext);
                var addresses = new DealershipRepository <Address>(dbContext);
                var shops     = new DealershipRepository <Shop>(dbContext);

                var employeeSeeder = new EmployeeSeeder(data, employees, positions, countries, cities, addresses, shops);

                var employeeSeedUtil = new EmployeeSeedUtil(xmlEmployeeReader, employeeSeeder);

                employeeSeedUtil.Seed();
            }

            textWriter.WriteLine("XML data seeded successfully!");
        }
        private void SeedDataFromMongo()
        {
            textWriter.WriteLine("Seeding data from Mongo...");
            string mongoDbConnectionString = Constants.MongoDbConnectionStringLocal;
            string mongoDbDatabaseName     = Constants.MongoDbDatabaseNameLocal;

            using (var dbContext = new DealershipDbContext())
            {
                var data = new DealershipData(dbContext);

                var vehicles     = new DealershipRepository <Vehicle>(dbContext);
                var brands       = new DealershipRepository <Brand>(dbContext);
                var fuels        = new DealershipRepository <Fuel>(dbContext);
                var vehicleTypes = new DealershipRepository <VehicleType>(dbContext);

                var mongoDbSeeder = new MongoDbSeeder(
                    mongoDbConnectionString,
                    mongoDbDatabaseName,
                    data,
                    vehicles,
                    brands,
                    fuels,
                    vehicleTypes
                    );
                if (!mongoDbSeeder.IsDataSeeded())
                {
                    mongoDbSeeder.SeedData();
                }
            }

            textWriter.WriteLine("Mongo data seeded successfully!");
        }
        public void CreateCarAddWorksCorrectlyAndSavesInDb()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Create_CarAdd")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new CarAddsService(db);

            var inputModel = this.GetCarAddInputModel();

            var engineType   = service.GetCarEngineType(inputModel.CarEngineType);
            var transmission = service.GetCarTransmissionType(inputModel.CarTransmission);
            var category     = service.GetCarCategory(inputModel.CarCategory);
            var extras       = service.CreateCarExtras(inputModel.CarExtras);

            var car = service.CreateCar(inputModel, engineType, transmission, category, extras);

            var carAdd = service.CreateCarAdd(inputModel, car.Id, "1");

            Assert.True(db.CarAdds.Count() == 1);
            Assert.True(db.CarAdds.First().CarId == car.Id);
            Assert.True(db.CarAdds.First().CreatorId == "1");
        }
        public void CreateCarWorksAndSavesCarInDb()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Create_Car")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new CarAddsService(db);

            var inputModel = this.GetCarAddInputModel();

            var engineType   = service.GetCarEngineType(inputModel.CarEngineType);
            var transmission = service.GetCarTransmissionType(inputModel.CarTransmission);
            var category     = service.GetCarCategory(inputModel.CarCategory);
            var extras       = service.CreateCarExtras(inputModel.CarExtras);

            var car = service.CreateCar(inputModel, engineType, transmission, category, extras);

            Assert.True(db.Cars.Count() == 1);
            Assert.True(db.CarExtras.Count() == 4);
            Assert.True(db.Cars.First().Make == inputModel.CarMake);
            Assert.True((int)db.Cars.First().EngineType == 4);
            Assert.True(db.Cars.First().EngineType.ToString() == Constants.GasolineAndLpgEngineTypeCorrection);
        }
Пример #6
0
        public void SeedSalesTable_alt(ExcelSalesReport excelSalesReport)
        {
            var employeeIdList    = this.employees.All().Select(e => e.Id).ToList();
            var VehicleIdAndModel = this.vehicles.All().Select(v => new { v.Id, v.Model }).ToList();
            var ShopIdAndName     = this.shops.All().Select(sh => new { sh.Id, sh.Name }).ToList();

            var shop = ShopIdAndName.Where(s => s.Name.ToLower() == excelSalesReport.DistributorName.ToLower()).FirstOrDefault();

            if (shop != null)
            {
                string formattedDateTime = String.Format("{0:yyyy/M/d HH:mm:ss}", excelSalesReport.DateOfSale);

                using (var dealershipDbContext = new DealershipDbContext())
                {
                    var result = dealershipDbContext.Database.ExecuteSqlCommand($"DELETE FROM [Sales] WHERE ShopId={shop.Id} AND DateOfSale='{formattedDateTime}'");
                }
                int counter = 0;

                foreach (var record in excelSalesReport.Records)
                {
                    var vehicle = VehicleIdAndModel.Where(v => v.Model.ToLower().Contains(record.VehicleModel.ToLower())).FirstOrDefault();
                    if (employeeIdList.Exists(i => (i == record.EmployeeId)) &&
                        vehicle != null)
                    {
                        Sale s = new Sale()
                        {
                            ShopId     = shop.Id,
                            VehicleId  = vehicle.Id,
                            EmployeeId = record.EmployeeId,
                            Quantity   = record.Quantity,
                            Price      = record.UnitPrice,
                            DateOfSale = excelSalesReport.DateOfSale
                        };

                        this.sales.Add(s);
                        counter++;

                        //Console.Write(".");

                        if (counter > maxRecordsPerLoad)
                        {
                            this.data.SaveChanges();
                            counter = 0;
                        }
                    }
                    else //null
                    {
                        Console.Write($"No such EmployeeId: {record.EmployeeId} or/and VehicleModel: {record.VehicleModel}");
                    }
                }


                this.data.SaveChanges();
            }
            else //null
            {
                Console.Write($"No such DistributorName{excelSalesReport.DistributorName}");
            }
        }
Пример #7
0
        public void GenerateXmlShopReport()
        {
            var         dbContext = new DealershipDbContext();
            ReportQuery query     = new ReportQuery();

            ICollection <IXmlShopReport> totalReport = new List <IXmlShopReport>();
            IReportWriter totalWriter = new XmlShopReportWriter(query.ShopReport(dbContext, totalReport));

            totalWriter.Write();
        }
Пример #8
0
        public void GeneratePdfAggregateDailySalesReport()
        {
            var         dbContext = new DealershipDbContext();
            ReportQuery query     = new ReportQuery();

            ICollection <IPdfAggregatedDailySalesReport> totalReport = new List <IPdfAggregatedDailySalesReport>();
            IReportWriter totalWriter = new PdfAggregatedDailySalesReportWriter(query.AggregatedDailySalesReports(dbContext, totalReport));

            totalWriter.Write();
        }
        public static void GenerateXmlDailyShopReport()
        {
            var         dbContext = new DealershipDbContext();
            ReportQuery query     = new ReportQuery();

            ICollection <IXmlDailyShopReport> dailyReport = new List <IXmlDailyShopReport>();
            IReportWriter dailyWrite = new XmlDailyShopReportWriter(query.DailyShopReport(dbContext, dailyReport));

            dailyWrite.Write();
        }
 public DealershipController(DealershipDbContext context)
 {
     _context = context;
     if (_context.Cars.Count() == 0)
     {
         _context.Cars.Add(new Cars {
             Make = "Jeep", Model = "Grand Cherokee", Year = 1995, Color = "Blue"
         });
     }
 }
Пример #11
0
        private NewsService GetNewsService()
        {
            var guid = new Guid().ToString();

            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: guid)
                          .Options;

            var db = new DealershipDbContext(options);

            return(new NewsService(db));
        }
Пример #12
0
        public void InitialDependencies(IApplicationBuilder app)
        {
            _app = app;

            var scope = app.ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope();

            _context       = scope.ServiceProvider.GetService <DealershipDbContext>();
            _userManager   = scope.ServiceProvider.GetService <UserManager <ApplicationUser> >();
            _roleManager   = scope.ServiceProvider.GetService <RoleManager <IdentityRole> >();
            _configuration = scope.ServiceProvider.GetService <IConfiguration>();
            _adminEmail    = CredentialsBuilder.AdminEmail;
        }
        public void GenerateXmlShopReport()
        {
            textWriter.WriteLine("Generating Xml report...");

            var         dbContext = new DealershipDbContext();
            ReportQuery query     = new ReportQuery();

            ICollection <IXmlShopReport> totalReport = new List <IXmlShopReport>();
            IReportWriter totalWriter = new XmlShopReportWriter(query.ShopReport(dbContext, totalReport));

            totalWriter.Write();
            textWriter.WriteLine("Xml report created successfully!");
        }
        public void GenerateRdfAggregateDailySalesReport()
        {
            textWriter.WriteLine("Generating Pdf report...");
            var         dbContext = new DealershipDbContext();
            ReportQuery query     = new ReportQuery();

            ICollection <IPdfAggregatedDailySalesReport> totalReport = new List <IPdfAggregatedDailySalesReport>();
            IReportWriter totalWriter = new PdfAggregatedDailySalesReportWriter(query.AggregatedDailySalesReports(dbContext, totalReport));

            totalWriter.Write();

            textWriter.WriteLine("Pdf report created successfully!");
        }
        public void GetErrorModelReturnsTheCorrectMessage()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Get_Error_Model")
                          .Options;

            var db = new DealershipDbContext(options);

            var commentsService = new CommentsService(db);

            var errorModel = commentsService.GetErrorModel(Constants.CommentErrorMessage);

            Assert.True(errorModel.Message == Constants.CommentErrorMessage);
        }
Пример #16
0
        public void CreateNewsSaveNewsInDb()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Create_News")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new NewsService(db);

            var inputModel = this.GetNewsCreateInputModel();

            var news = service.CreateNews(inputModel, NewsAuthorId);

            Assert.True(db.News.Count() == 1);
            Assert.True(db.News.First().Title == NewsTitle);
        }
        public void ParseExcelData(IEnumerable <DirectoryInfo> matchingDirectories)
        {
            var excelSaleReportReader = new SalesReportsReaderExcel(Constants.ExcelSalesReportsConnectionStringPattern);

            using (var dealershipDbContext = new DealershipDbContext())
            {
                var result = dealershipDbContext.Database.ExecuteSqlCommand("TRUNCATE TABLE [Sales]");
            }

            foreach (var dir in matchingDirectories)
            {
                foreach (var excelFile in dir.GetFiles(Constants.AllowedExcelFileExtensionPattern))
                {
                    var excelData = excelSaleReportReader.ReadReport(excelFile.FullName, dir.Name);
                    this.seedingSQLDBFromZip.SeedSalesTable(excelData);
                }
            }
        }
        public void CreateCommentWorksCorrectly()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Create_Comment")
                          .Options;

            var db = new DealershipDbContext(options);

            var newsService     = new NewsService(db);
            var commentsService = new CommentsService(db);

            var news = newsService.CreateNews(GetNewsCreateInputModel(), AuthorId);

            var comment = commentsService.Create(AuthorId, news.Id, Content);

            Assert.True(db.News.First().Comments.Count() == 1);
            Assert.True(db.Comments.Count() == 1);
            Assert.True(db.Comments.First().Id == comment.Id);
        }
Пример #19
0
        public void GetAllNewsWorksCorrectly()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Get_All_News")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new NewsService(db);

            var inputModel = this.GetNewsCreateInputModel();

            var news = service.CreateNews(inputModel, NewsAuthorId);

            var wantedNews = service.GetAllNews();

            Assert.True(wantedNews.Count() == 1);
            Assert.True(wantedNews.First().Id == news.Id);
        }
        private static void ProcessZipFiles()
        {
            using (var dbContext = new DealershipDbContext())
            {
                var data      = new DealershipData(dbContext);
                var employees = new DealershipRepository <Employee>(dbContext);
                var sales     = new DealershipRepository <Sale>(dbContext);
                var vehicles  = new DealershipRepository <Vehicle>(dbContext);
                var shops     = new DealershipRepository <Shop>(dbContext);

                SeedingSQLDBFromZip seedingSQLDBFromZip = new SeedingSQLDBFromZip(data, employees, shops, sales, vehicles);

                var processor = new ZipUnpacker();
                processor.Unpack(Constants.PathToZipFile, Constants.PathToUnzip);

                var          matchingDirectories = Utility.GetDirectoriesByPattern(Constants.PathToUnzippedFiles);
                ReportReader reportReader        = new ReportReader(seedingSQLDBFromZip, data);
                reportReader.ParseExcelData(matchingDirectories);
            }
        }
        public void EditCommentWorksCorrectly()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Edit_Comment")
                          .Options;

            var db = new DealershipDbContext(options);

            var commentsService = new CommentsService(db);
            var newsService     = new NewsService(db);

            var news    = newsService.CreateNews(GetNewsCreateInputModel(), AuthorId);
            var comment = commentsService.Create(AuthorId, news.Id, Content);

            Assert.True(comment.Content == Content);

            commentsService.EditComment(comment.Id, "Changed Content!");

            Assert.True(comment.Content == "Changed Content!");
        }
Пример #22
0
        public void DeleteNewsRemovesTheCorrectNewsFromDb()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Delete_News")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new NewsService(db);

            var inputModel = this.GetNewsCreateInputModel();

            var news = service.CreateNews(inputModel, NewsAuthorId);

            Assert.True(db.News.Count() == 1);

            service.DeleteNews(news.Id);

            Assert.True(db.News.Count() == 0);
        }
        public void GetAddsAccordingToCriteriaWorksCorrectly()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Get_Adds_By_Criteria")
                          .Options;

            var db = new DealershipDbContext(options);

            var service = new CarAddsService(db);

            var inputModel = this.GetCarAddInputModel();

            var engineType   = service.GetCarEngineType(inputModel.CarEngineType);
            var transmission = service.GetCarTransmissionType(inputModel.CarTransmission);
            var category     = service.GetCarCategory(inputModel.CarCategory);
            var extras       = service.CreateCarExtras(inputModel.CarExtras);

            var car = service.CreateCar(inputModel, engineType, transmission, category, extras);

            var carAdd = service.CreateCarAdd(inputModel, car.Id, "1");

            var carSelectModel = new CarSelectInputModel
            {
                Category      = "Saloon",
                EndPrice      = decimal.MaxValue,
                EndYear       = 2019,
                EngineType    = "Gasoline / LPG",
                HorsePower    = 130,
                Location      = "Nqkude",
                Make          = "Opel",
                Model         = "Vectra",
                StartingPrice = 4000m,
                StartingYear  = 2000,
                Transmission  = "Manual"
            };

            var getCars = service.GetAddsAccordingToCriteria(carSelectModel);

            Assert.True(getCars.Count() == 1);
        }
        public void GetMyAddsWorksCorrectly()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Get_My_Adds")
                          .Options;

            var db = new DealershipDbContext(options);

            var userMock = new Mock <DealershipUser>();

            userMock.Setup(u => u.Id).Returns("1");
            userMock.Setup(u => u.UserName).Returns("Pesho");

            var service = new CarAddsService(db);

            var inputModel = this.GetCarAddInputModel();

            var engineType   = service.GetCarEngineType(inputModel.CarEngineType);
            var transmission = service.GetCarTransmissionType(inputModel.CarTransmission);
            var category     = service.GetCarCategory(inputModel.CarCategory);
            var extras       = service.CreateCarExtras(inputModel.CarExtras);

            var car = service.CreateCar(inputModel, engineType, transmission, category, extras);

            var carAdd = service.CreateCarAdd(inputModel, car.Id, "1");

            userMock.Setup(u => u.CarAdds).Returns(new List <CarAdd> {
                carAdd
            });

            var fakeUser = userMock.Object;

            db.Users.Add(fakeUser);
            db.SaveChanges();

            var myAdds = service.GetMyAdds("Pesho");

            Assert.True(myAdds.Count() == 1);
        }
        public ICollection <IXmlShopReport> ShopReport(DealershipDbContext dbContext, ICollection <IXmlShopReport> report)
        {
            using (dbContext)
            {
                var shops = dbContext.Shops.ToList();

                foreach (var shop in shops)
                {
                    var budget = dbContext.Sales.Where(s => s.ShopId == shop.Id).Sum(t => t.Price);

                    IXmlShopReport entity = new XmlShopReport();

                    entity.ShopPlace   = shop.Name;
                    entity.Location    = shop.Address.Street;
                    entity.TotalBudget = budget;

                    report.Add(entity);
                }
            }

            return(report);
        }
        public void DeleteCommentDeletesTheWriteComment()
        {
            var options = new DbContextOptionsBuilder <DealershipDbContext>()
                          .UseInMemoryDatabase(databaseName: "Delete_Comment")
                          .Options;

            var db = new DealershipDbContext(options);

            var newsService     = new NewsService(db);
            var commentsService = new CommentsService(db);

            var news = newsService.CreateNews(GetNewsCreateInputModel(), AuthorId);

            Assert.True(news.Comments.Count() == 0);

            var comment = commentsService.Create(AuthorId, news.Id, Content);

            Assert.True(news.Comments.Count() == 1);

            commentsService.DeleteComment(comment.Id);

            Assert.True(news.Comments.Count() == 0);
        }
Пример #27
0
 public CommentService(DealershipDbContext db, UserManager <ApplicationUser> userManager)
 {
     this._db          = db;
     this._userManager = userManager;
 }
Пример #28
0
 public NewsService(DealershipDbContext db)
 {
     this.db = db;
 }
Пример #29
0
 public CarAddsService(DealershipDbContext db)
 {
     this.db = db;
 }
Пример #30
0
 public CarService(DealershipDbContext db, IHostingEnvironment hostingEnvironment)
 {
     this._hostingEnvironment = hostingEnvironment;
     this._db = db;
 }