public void InsertStore()
        {
            IMongoStore mongoStore = new MongoDbStoreRepository();
            IMongoDbProductRepository mongoProduct = new MongoDbProductRepository();

            //mongoStore.DropCollection();
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "Lidl", StoreAddress = "111 Backebol Norra", PinCode = 1234, ProductDetails = mongoProduct.GetAllProducts().Take(5).ToList <MongoProduct>()
            });
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "COOP", StoreAddress = "223 Elisedal", PinCode = 4567, ProductDetails = mongoProduct.GetAllProducts().TakeLast(8).ToList <MongoProduct>()
            });
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "ICA", StoreAddress = "345 Korsvagen", PinCode = 8907, ProductDetails = mongoProduct.GetAllProducts().Take(10).ToList <MongoProduct>()
            });
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "Willys", StoreAddress = "234 Wavrinskyplats", PinCode = 9356, ProductDetails = mongoProduct.GetAllProducts().Take(13).ToList <MongoProduct>()
            });
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "HemKop", StoreAddress = "435 Kapelplatsen", PinCode = 8976, ProductDetails = mongoProduct.GetAllProducts().Take(8).ToList <MongoProduct>()
            });
            mongoStore.InsertStore(new MongoStore()
            {
                StoreName = "Pressbyran", StoreAddress = "444 Hjalmar ", PinCode = 2345, ProductDetails = mongoProduct.GetAllProducts().TakeLast(2).ToList <MongoProduct>()
            });
        }
Beispiel #2
0
        public void GetAllTest()
        {
            IProductRepository productRepository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());

            List <Product> products = productRepository.GetAll();

            Assert.NotEmpty(products);
        }
Beispiel #3
0
        public string  UpdateProduct(MongoProduct product)
        {
            IMongoDbProductRepository mongoRep = new MongoDbProductRepository();
            string res = mongoRep.UpdateProduct(product);

            Console.WriteLine(res);
            Console.WriteLine();
            return(res);
        }
Beispiel #4
0
        public void CalltoGetAllWithAnExistingProduct()
        {
            IProductRepository productRepository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());
            List <Product>     products          = productRepository.GetAll();

            string temp = products[0].Name;

            Assert.Equal("Apple", temp);
        }
Beispiel #5
0
        public void CalltoGetAllWithNumberOfProducts()
        {
            IProductRepository productRepository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());

            List <Product> products = productRepository.GetAll();
            var            num      = products.Count;


            Assert.Equal(10, num); //The number of products in database is 10
        }
Beispiel #6
0
        public void CheckExistenceTestReturnFalse()
        {
            IProductRepository productRepository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());
            Product            product           = new Product();

            product.ProductId = "100";    // a product which we know doesn't exist in database.

            var result = productRepository.CheckExistence(product);

            Assert.False(result);
        }
Beispiel #7
0
        public void GetOneProductTest()
        {
            IProductRepository productRepository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());
            Product            product           = new Product();

            product.ProductId = "0";

            Product product1 = productRepository.GetOneProduct(product.ProductId);
            var     result   = product1.Name;

            Assert.Equal("Apple", result);   // in database Apple's Id is 0
        }
Beispiel #8
0
        public void GetAllProducts()
        {
            MongoProduct product = new MongoProduct();
            //productRepository = new ProductRepository();
            IMongoDbProductRepository  mongoRep    = new MongoDbProductRepository();
            IEnumerable <MongoProduct> productList = mongoRep.GetAllProducts();

            Console.WriteLine("********Products details************");
            foreach (var products in productList)
            {
                Console.WriteLine($"Name : {products.Name} , ProductId:{products.Id} ,Price: {products.Price}, ManufacturerDetails : {products.ManufacturerDetails.ManufacturerName} ,ManufacturerDetails : {products.ManufacturerDetails.Place}, ManufacturerDetails : {products.ManufacturerDetails.PhoneNumber}");
            }
        }
        public void MongodbStoreManagement()
        {
            try
            {
                Console.WriteLine("\n\t*****Store MongoDb Implementation*****\n");
                InsertStore();
                RemoveStore(new MongoStore()
                {
                    StoreName = "HemKop"
                });
                var productList = new List <MongoProduct>()
                {
                    new MongoProduct()
                    {
                        Name = "Salt", Price = 34.57m, ProductInStock = 8, ManufacturerDetails = new Manufacturer()
                        {
                            ManufacturerName = "SSS", PhoneNumber = 762892347, Place = "Chalmers"
                        }
                    },
                    new MongoProduct()
                    {
                        Name = "Muffins", Price = 50.37m, ProductInStock = 16, ManufacturerDetails = new Manufacturer()
                        {
                            ManufacturerName = "AWE", PhoneNumber = 762892856, Place = "Hjlmar"
                        }
                    }
                };
                UpdateStore(new MongoStore()
                {
                    Id = "5ef5c31458ed8642580d7cc3", StoreName = "Pressbyran", StoreAddress = "777 Chalmers", PinCode = 2222, ProductDetails = productList
                });

                GetAllStores();
                GetByStoreId("5ef5c31458ed8642580d7cbf");

                //StoreFilter
                IMongoDbProductRepository productRepository = new MongoDbProductRepository();
                IMongoStore   storeRepository = new MongoDbStoreRepository();
                ProductFilter storeFilter     = new ProductFilter(productRepository, storeRepository);

                //searchBy Store
                storeFilter.GetStoresBySearch("Lidl");
            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Beispiel #10
0
        public void GetByProductId(string productId)
        {
            IMongoDbProductRepository mongoRep = new MongoDbProductRepository();
            MongoProduct prodts = mongoRep.GetByProductId(productId);

            if (prodts != null)
            {
                Console.WriteLine();
                Console.WriteLine("******Matched record by ProductId*****" + "\n"
                                  + "Name:" + prodts.Name + "," + "Price:" + prodts.Price + "," + "ProductID:" + prodts.Id + "," + "ManufacturerName:" + prodts.ManufacturerDetails.ManufacturerName + "," + "Place:" + prodts.ManufacturerDetails.Place + "," + "PhoneNumber:" + prodts.ManufacturerDetails.PhoneNumber);
            }
            else
            {
                Console.WriteLine("No matched records found for the productID:{0}:" + productId);
            }
        }
Beispiel #11
0
        public void InsertProductCallsInsertOneOnCollection()
        {
            //Arrange
            var collectionMock = new Mock <IMongoCollection <Product> >();

            collectionMock.Setup(p => p.InsertOne(It.IsAny <Product>(),
                                                  null, default(CancellationToken))).Verifiable();
            var repo    = new MongoDbProductRepository(collectionMock.Object);
            var product = new Product();

            //Act
            repo.Insert(product);

            //Assert
            collectionMock.Verify(collection => collection.InsertOne(It.IsAny <Product>(),
                                                                     null, default(CancellationToken)), Times.Once);
        }
        public void ListOfManufacturersWithProductCount()
        {
            var manufacturerList           = MongoDbProductRepository.GetAllProducts();
            var groupedManufacturerRecords =
                manufacturerList.GroupBy(c => c.ManufacturerDetails.ManufacturerName);

            Console.WriteLine("****List of Manufacturer details*****");

            foreach (var groups in groupedManufacturerRecords)
            {
                Console.WriteLine("ManufacturerName:" + groups.Key + "\n" + "Total no of products:" + groups.Count());
                foreach (var c in groups)
                {
                    Console.WriteLine("\t" + "ProductName:" + c.Name + "," + "Price:" + c.Price);
                }
                Console.WriteLine();
            }
        }
Beispiel #13
0
        public static void ListManufactures()
        {
            IProductRepository repository = new MongoDbProductRepository(MongoDBConfigFile.GetDBCollection());

            IEnumerable <Product>     list  = repository.GetAll();
            IEnumerable <Manufacture> list1 = list.Select(p => p.Manufacture).ToList();
            IEnumerable <string>      list2 = list1.Select(m => m.Name).ToList();

            list2 = list2.Distinct();

            Manufacture manufacture = new Manufacture();

            foreach (string s in list2)
            {
                manufacture.Products = list.Where(p => p.Manufacture.Name == s).ToList();
                manufacture.Name     = s;
                Console.WriteLine("Manufacture: " + manufacture.Name + "  Number of products: " + manufacture.Products.Count());
            }
        }
Beispiel #14
0
 public void MongoDbProdManagment()
 {
     try
     {
         InsertProduct();
         Console.WriteLine("********Product MongoDB implementation********");
         RemoveProduct(new MongoProduct {
             Name = "Pepsodent Tootpaste", Price = 50.37m, ProductInStock = 10, ManufacturerDetails = new Manufacturer()
             {
                 ManufacturerName = "ERE", PhoneNumber = 762892333, Place = "Redbergplasten"
             }
         });
         UpdateProduct(new MongoProduct {
             Name = "Toothbrush", Price = 50.78m, Id = "5ef5c2a3ac609330f4f799bf", ProductInStock = 10, ManufacturerDetails = new Manufacturer()
             {
                 ManufacturerName = "TTT", PhoneNumber = 762892530, Place = "Hjalmar"
             }
         });
         GetAllProducts();
         GetByProductId("5ef5c2a2ac609330f4f799b1");
         //ProductFilter-Search by ProductName
         IMongoDbProductRepository productRep = new MongoDbProductRepository();
         IMongoStore   storeRep      = new MongoDbStoreRepository();
         ProductFilter productFilter = new ProductFilter(productRep, storeRep);
         var           searchProduct = productFilter.SearchProductByName("Vaseline").FirstOrDefault();
         Console.WriteLine();
         Console.WriteLine("********Matched record by ProductName************");
         Console.WriteLine($"Name : {searchProduct.Name} , ProductId:{searchProduct.Id} ,Price: {searchProduct.Price},ProductInStock:{searchProduct.ProductInStock}, ManufacturerDetails : {searchProduct.ManufacturerDetails.ManufacturerName} ,ManufacturerDetails : {searchProduct.ManufacturerDetails.Place}, ManufacturerDetails : {searchProduct.ManufacturerDetails.PhoneNumber}");
         //ProductFilter-ProductsCostingLessThan
         Console.WriteLine("********Matched 10 records by ProductPrice ************");
         var matchedProduct = productFilter.ProductsCostingLessThan(130.12m);
         foreach (var records in matchedProduct)
         {
             Console.WriteLine($"Name : {records.Name} , ProductId:{records.Id} ,Price: {records.Price},ProductInStock:{records.ProductInStock}, ManufacturerDetails : {records.ManufacturerDetails.ManufacturerName} ,ManufacturerDetails : {records.ManufacturerDetails.Place}, ManufacturerDetails : {records.ManufacturerDetails.PhoneNumber}");
         }
         //ProductFilter-Manufacturerdetails
         productFilter.ListOfManufacturersWithProductCount();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Beispiel #15
0
        //public static void Main(string[] args)
        public static void Run()
        {
            //Read configuration files
            //using Microsoft.Extensions.Configuration; which must be added as nuget package.
            //Change connection string for database in file appsettings.json or appsettings.dev.json for a special developer
            //database.
            IConfiguration configuration = new ConfigurationBuilder()
                                           .AddJsonFile("appsettings.json", false, true)
                                           .AddJsonFile("appsettings.dev.json", true, true)
                                           .Build();

            var mongoConnectionString = configuration["ConnectionStrings:DefaultConnection"];

            //Using Entity Framework as ORM for accessing Relational database.
            // var context = new WareHouseContext();
            //
            // context.Products.Add(new Entities.Product());
            // context.SaveChanges();
            //
            // PrintList("",context.Products);
            //


            //Composition Root. Create all objects we need.
            var _client     = new MongoClient(mongoConnectionString);
            var _database   = _client.GetDatabase("Warehouse");
            var _collection = _database.GetCollection <Product>("Products");

            IProductRepository  productRepository   = new MongoDbProductRepository(_collection); //new FileProductRepository();
            IShopRepository     shopRepository      = new FileShopRepository();
            ManufacturerService manufacturerService = new ManufacturerService();

            ProductFilter productFilter = new ProductFilter(productRepository, shopRepository);

            var shop = new Shop()
            {
                Id = "1", Name = "Ica Maxi"
            };
            var shop1 = new Shop()
            {
                Id = "2", Name = "Coop"
            };

            //Create new product
            var product = ConsoleHelper.NewProduct();

            //Add shops to product
            shopRepository.Insert(shop);
            shopRepository.Insert(shop1);

            product.AddShop(shop);
            product.AddShop(shop1);

            //Insert new product into repository
            productRepository.Insert(product);

            PrintList("Products for each Manufacturer", productFilter.ListOfManufacturersWithProductCount());
            PrintList("Products costing less than 20", productFilter.ProductsCostingLessThan(20));

            //Do some changes
            PrintList("All products", productRepository.GetAll().Select(p => p.Price));

            product.Price = (decimal)123.45;
            ((MongoDbProductRepository)productRepository).Update(product);

            PrintList("All products", productRepository.GetAll().Select(p => p.Price));
        }
 public IEnumerable <MongoProduct> SearchProductByName(string name)
 {
     return(MongoDbProductRepository.GetAllProducts().Where(p => p.Name.Contains(name)));
 }
 public IEnumerable <MongoProduct> ProductsCostingLessThan(decimal price)
 {
     return(MongoDbProductRepository.GetAllProducts().Where(p => p.Price < price).Take(10));
 }
Beispiel #18
0
        private void InsertProduct()
        {
            IMongoDbProductRepository mongoRep = new MongoDbProductRepository();

            //mongoRep.DropCollection();
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Milk", Price = 50.06m, ProductInStock = 5, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "III", PhoneNumber = 762892451, Place = "Redbergplasten"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "SoyaMilk", Price = 75.45m, ProductInStock = 6, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "VVV", PhoneNumber = 762892400, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "CondensedMilk", Price = 89.45m, ProductInStock = 12, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "PPP", PhoneNumber = 762892410, Place = "korsvagen"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "CastorOil", Price = 100.33m, ProductInStock = 10, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "III", PhoneNumber = 762892412, Place = "Qvidingsgatan"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "SunflowerOil", Price = 120.34m, ProductInStock = 15, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "PPP", PhoneNumber = 762892433, Place = "Nordstan"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "SesameOil", Price = 112.22m, ProductInStock = 3, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "OPV", PhoneNumber = 762892423, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "ColgateTootpaste", Price = 122.34m, ProductInStock = 12, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "FFF", PhoneNumber = 762892422, Place = "Chalmers"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "sensodyneToothPaste", Price = 157.23m, ProductInStock = 10, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "FFF", PhoneNumber = 762892454, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Vaseline", Price = 145.45m, ProductInStock = 7, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "RTR", PhoneNumber = 762892433, Place = "korsvagen"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Nivea", Price = 130.33m, ProductInStock = 8, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "YUI", PhoneNumber = 762892421, Place = "Chalmers"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Cethaphil", Price = 200.43m, ProductInStock = 9, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "HTY", PhoneNumber = 762892455, Place = "Qvidingsgatan"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Muesli", Price = 222.55m, ProductInStock = 6, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "III", PhoneNumber = 762892421, Place = "Redbergplasten"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Pillows", Price = 170.56m, ProductInStock = 5, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SES", PhoneNumber = 762892411, Place = "Chalmers"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Curd", Price = 90.33m, ProductInStock = 7, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SES", PhoneNumber = 762892413, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Chicken", Price = 190.22m, ProductInStock = 12, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "VVV", PhoneNumber = 762892477, Place = "korsvagen"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "AllPurposeFlour", Price = 279.06m, ProductInStock = 8, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SWE", PhoneNumber = 762892454, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Sugar", Price = 127.89m, ProductInStock = 15, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SSS", PhoneNumber = 762892410, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Toys", Price = 89.09m, ProductInStock = 10, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SSS", PhoneNumber = 762892499, Place = "Qvidingsgatan"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Toothbrush", Price = 190.78m, ProductInStock = 12, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SWR", PhoneNumber = 762892534, Place = "Redbergplasten"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Salt", Price = 34.57m, ProductInStock = 8, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "SSS", PhoneNumber = 762892347, Place = "Chalmers"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Muffins", Price = 50.37m, ProductInStock = 16, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "AWE", PhoneNumber = 762892856, Place = "Hjlmar"
                }
            });
            mongoRep.InsertProduct(new MongoProduct {
                Name = "Pepsodent Tootpaste", Price = 50.37m, ProductInStock = 10, ManufacturerDetails = new Manufacturer()
                {
                    ManufacturerName = "ERE", PhoneNumber = 762892333, Place = "Redbergplasten"
                }
            });
        }