コード例 #1
0
        protected List <DbProduct> Populate(DbContext advWorks, int numRows)
        {
            var list = new List <DbProduct>(numRows);

            var productModel = advWorks.Set <DbProductModel>().First(p => p.ProductModelID == 15);
            var productSet   = advWorks.Set <DbProduct>();

            var insertId = 2000;

            for (var i = 0; i < numRows; i++)
            {
                var product = new DbProduct
                {
                    ProductID         = insertId++,
                    Name              = "TEST_INSERTS",
                    DaysToManufacture = 5
                };
                productModel.Products.Add(product);

                productSet.Add(product);

                list.Add(product);
            }

            advWorks.SaveChanges();

            return(list);
        }
コード例 #2
0
        public async Task <IActionResult> Save(Guid id, string name, decimal price, int count, Guid categoryId)
        {
            var file = Request.Form.Files.FirstOrDefault();

            byte[] imageData = null;
            if (file != null)
            {
                using (var binaryReader = new BinaryReader(file.OpenReadStream()))
                {
                    imageData = binaryReader.ReadBytes((int)file.Length);
                }
            }

            var product = new DbProduct
            {
                Id         = id,
                Count      = count,
                Image      = imageData,
                Name       = name,
                Price      = price,
                CategoryId = categoryId,
            };
            await _productService.Save(product);

            return(Redirect($"/Product/GetRegistry/{categoryId}"));
        }
コード例 #3
0
        public void InconsistentAvailabilityShouldReturnNull()
        {
            // Arrange
            var loggerMock      = new Mock <ILogger <ProductService> >();
            var priceCalculator = new PriceCalculator(loggerMock.Object);

            var dbProduct = new DbProduct
            {
                Availability = new List <Store>
                {
                    new Store
                    {
                        Type     = StoreType.Shop,
                        Price    = 1000,
                        Quantity = 1,
                    },
                    new Store
                    {
                        Type     = StoreType.Shop,
                        Price    = 2000,
                        Quantity = 1,
                    }
                }
            };

            // Act
            (var price, var salePrice) = priceCalculator.GetPrice(dbProduct);

            // Assert
            Assert.IsNull(price);
            Assert.IsNull(salePrice);
        }
コード例 #4
0
        public async Task <DbProduct> Save(DbProduct product)
        {
            if (!_permissionService.HasPermissionToChangeProducts())
            {
                throw new InvalidOperationException("Нет прав доступа для изменения Товаров");
            }

            if (product.Id != Guid.Empty)
            {
                var existProuct = await _context.Products.Where(x => x.Id == product.Id).FirstOrDefaultAsync();

                if (existProuct == null)
                {
                    throw new InvalidOperationException("Позиция не найдена.");
                }
                Update(existProuct, product);
                _context.Update(existProuct);
                await _context.SaveChangesAsync();

                return(existProuct);
            }
            product.OwnerId = Guid.Parse(_httpContextAccessor.HttpContext.User.Claims.First(c => c.Type == "UserId").Value);
            _context.Products.Add(product);
            await _context.SaveChangesAsync();

            return(product);
        }
コード例 #5
0
        public IActionResult Create([FromBody] ProductAddVM model)
        {
            if (!ModelState.IsValid)
            {
                var errors = CustomValidator.GetErrorsByModel(ModelState);
                return(BadRequest(errors));
            }
            var    fileDestDir = _env.ContentRootPath;
            string dirName     = _configuration.GetValue <string>("ImagesPath");
            //Папка де зберігаються фотки
            string dirPathSave = Path.Combine(fileDestDir, dirName);

            if (!Directory.Exists(dirPathSave))
            {
                Directory.CreateDirectory(dirPathSave);
            }
            var    bmp       = model.Image.FromBase64StringToImage();
            var    imageName = Path.GetRandomFileName() + ".jpg";
            string fileSave  = Path.Combine(dirPathSave, $"{imageName}");

            bmp.Save(fileSave, ImageFormat.Jpeg);

            DbProduct p = new DbProduct
            {
                Name       = model.Name,
                Price      = model.Price,
                DateCreate = DateTime.Now
            };

            _context.Products.Add(p);
            _context.SaveChanges();
            return(Ok(p.Id));
        }
コード例 #6
0
        public void TestCalculationAboveLowerBoundary()
        {
            // Arrange
            var loggerMock      = new Mock <ILogger <ProductService> >();
            var priceCalculator = new PriceCalculator(loggerMock.Object);

            var dbProduct = new DbProduct
            {
                Availability = new List <Store>
                {
                    new Store
                    {
                        Type     = StoreType.Shop,
                        Price    = 10000,
                        Quantity = 1,
                    }
                }
            };

            // Act
            (var price, var salePrice) = priceCalculator.GetPrice(dbProduct);

            // Assert
            Assert.AreEqual(10000, price);
            Assert.AreEqual(9700, salePrice);
        }
コード例 #7
0
ファイル: Foods.cs プロジェクト: Rabitttt/Foodex
        public void first_open()
        {
            food_list.Clear();
            food_list = DbProduct.db_fill_FoodList("Main Menu");
            fill_products();

            panel_drinks.BackColor    = Color.White;
            panel_mainfoods.BackColor = Color.DarkOrange;
            panel_desserts.BackColor  = Color.White;



            if (Seller.activeSeller != 0)
            {
                btn_product0_buy.Enabled = false;
                btn_product1_buy.Enabled = false;
                btn_product2_buy.Enabled = false;
            }
            else
            {
                btn_product0_buy.Enabled = true;
                btn_product1_buy.Enabled = true;
                btn_product2_buy.Enabled = true;
            }
        }
コード例 #8
0
        public (decimal?price, decimal?salePrice) GetPrice(DbProduct product)
        {
            if (product?.Availability?.Any() != true)
            {
                return(null, null);
            }

            var availability = product.Availability
                               .Where(a => a.Type == StoreType.Shop || a.Type == StoreType.Warehouse)
                               .Where(a => a.Quantity > 0)
                               .Where(a => a.Price > 0)
                               .ToList();

            if (availability.Any() != true)
            {
                return(null, null);
            }

            var price = decimal.Round(availability.First().Price);

            if (availability.All(s => s.Price == price) == false)
            {
                price = availability.Max(a => a.Price);
                var prices = availability.Select(a => $"{a.Name}: {a.Price}");
                _logger.LogInformation($"Prices are not equal in stores for {product.Name} - {product.Id}. {string.Join(", ", prices)}");
            }

            return(price, ApplyDiscount(price));
        }
コード例 #9
0
        public Task <bool> AddIngredient(Guid recipeId, IIngredient ingredient)
        {
            return(Task.Run(() =>
            {
                using var context = new HomeAppDbContext(myDbOptions);

                DbProduct product = context.Products.FirstOrDefault(p => p.Id.Equals(ingredient.ProductId));
                if (product == null)
                {
                    return false;
                }
                DbRecipe recipe = context.Recipes.FirstOrDefault(p => p.Id.Equals(recipeId));
                if (product == null)
                {
                    return false;
                }
                context.Ingredients.AddAsync(new DbIngredient
                {
                    Product = product,
                    Recipe = recipe,
                    UnitQuantity = ingredient.UnitQuantity,
                    UnitQuantityType = ingredient.UnitQuantityType
                });
                context.SaveChanges();
                return true;
            }));
        }
コード例 #10
0
        public async Task CanUpdateProductDescription()
        {
            // Arrange
            var documentStoreProvider = DocumentStoreProvider;
            var existingProduct       = new DbProduct {
                Name = "MyProduct", DescriptionMarkdown = "# Hello World!"
            };

            using (var session = documentStoreProvider.Store.OpenAsyncSession())
            {
                await session.StoreAsync(existingProduct, existingProduct.GetIdentifier());
            }

            // Act
            var sut = new ProductManager(documentStoreProvider, logger);
            await sut.InsertOrUpdateProductDescriptionAsync("MyProduct", "# MyProduct");

            // Assert
            using (var session = documentStoreProvider.Store.OpenAsyncSession())
            {
                var product = await session.LoadAsync <DbProduct>(existingProduct.GetIdentifier());

                product.ShouldNotBeNull();
                product.DescriptionMarkdown.ShouldBe("# MyProduct");
            }
        }
コード例 #11
0
        public async Task GetsProductDescription()
        {
            // Arrange
            var documentStoreProvider = DocumentStoreProvider;

            using (var session = documentStoreProvider.Store.OpenAsyncSession())
            {
                var product = new DbProduct
                {
                    Name = "MyProduct",
                    DescriptionMarkdown = "# Hello World!",
                };
                await session.StoreAsync(product);

                await session.SaveChangesAsync();
            }

            WaitForIndexing(documentStoreProvider.Store);

            // Act
            var sut    = new ProductManager(documentStoreProvider, logger);
            var result = await sut.GetProductDescriptionAsync("MyProduct");

            // Assert
            result.ShouldNotBeNull();
            result.ShouldBe("# Hello World!");
        }
コード例 #12
0
        public void Pay(string id)
        {
            DbProduct product     = DbProductFactory.Create();
            string    productData = product.GetProductById(id);

            Console.WriteLine(productData);
        }
コード例 #13
0
ファイル: ProductService.cs プロジェクト: skohub/WcSync
 private bool ProductEquals(WcProduct wcProduct, DbProduct dbProduct)
 {
     return
         (wcProduct.StockStatus == dbProduct.GetStockStatus() &&
          wcProduct.Availability == dbProduct.GetAvailability() &&
          ProductPriceEquals(wcProduct, dbProduct));
 }
コード例 #14
0
        public IActionResult Delete(int id)
        {
            DbProduct prod = _context.Products.Where(p => p.Id == id).FirstOrDefault();

            _context.Products.Remove(prod);
            _context.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #15
0
ファイル: AddProduct.cs プロジェクト: Rabitttt/Foodex
        private void btn_add_Click(object sender, EventArgs e)
        {
            Product product = new Product();

            product = fill_product_data_from_Form(product);
            DbProduct.db_addNewProduct(product);
            this.Close();
        }
コード例 #16
0
        public void AddProductDb()
        {
            var dbProduct = new DbProduct();
            var product   = new Product("The product name", 23.45m, "The product description", "The product catagory", "Img path");
            var flag      = dbProduct.AddProduct(product);

            Assert.AreNotEqual(0, flag);
        }
コード例 #17
0
        // Удаление позиций
        private static void DeletePositions()
        {
            var doc  = AcApp.DocumentManager.MdiActiveDocument;
            var ed   = doc.Editor;
            var db   = HostApplicationServices.WorkingDatabase;
            var opts = new PromptSelectionOptions
            {
                MessageForAdding = $"\n{Language.GetItem(LangItem, "h5")}: "
            };
            var res = ed.GetSelection(opts);

            if (res.Status != PromptStatus.OK)
            {
                return;
            }
            using (var tr = db.TransactionManager.StartTransaction())
            {
                try
                {
                    foreach (var objectId in res.Value.GetObjectIds())
                    {
                        var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite);

                        // Расширенные данные в виде спец.класса
                        var productInsert = (MpProductToSave)XDataHelpersForProducts.NewFromEntity(ent);
                        if (productInsert == null)
                        {
                            continue;
                        }

                        // Теперь получаем сам продукт
                        var product = DbProduct.GetProductFromSaved(productInsert);

                        // Если есть данные и нет позиции
                        if (product != null)
                        {
                            product.Position = string.Empty;
                            XDataHelpersForProducts.SaveDataToEntity(product.SetProductToSave(), ent, tr);
                        }
                    }
                }
                catch (Exception ex)
                {
                    ExceptionBox.Show(ex);
                }
                finally
                {
                    // В любом случае убираем подсветку со всех объектов
                    foreach (var objectId in res.Value.GetObjectIds())
                    {
                        var ent = (Entity)tr.GetObject(objectId, OpenMode.ForWrite);
                        ent.Unhighlight();
                    }

                    tr.Commit();
                }
            }
        }
コード例 #18
0
ファイル: Foods.cs プロジェクト: Rabitttt/Foodex
 private void pictureBox_desserts_Click(object sender, EventArgs e)
 {
     panel_drinks.BackColor    = Color.White;
     panel_mainfoods.BackColor = Color.White;
     panel_desserts.BackColor  = Color.DarkOrange;
     food_list         = DbProduct.db_fill_FoodList("Desserts");
     index_of_foodlist = 1;
     fill_products();
 }
コード例 #19
0
 private void Update(DbProduct oldProduct, DbProduct newProduct)
 {
     oldProduct.Count      = newProduct.Count;
     oldProduct.Image      = newProduct.Image;
     oldProduct.Name       = newProduct.Name;
     oldProduct.Price      = newProduct.Price;
     oldProduct.CategoryId = newProduct.CategoryId;
     oldProduct.OwnerId    = Guid.Parse(_httpContextAccessor.HttpContext.User.Claims.First(c => c.Type == "UserId").Value);
 }
コード例 #20
0
 /// <summary>
 /// Инициализация экземпляра <see cref="SpecificationItem"/> по экземпляру <see cref="DbProduct"/>
 /// </summary>
 /// <param name="product">Экземпляр <see cref="DbProduct"/>, связанный с позицией спецификации</param>
 /// <param name="steelDoc">Документ на сталь</param>
 /// <param name="steelType">Тип стали</param>
 /// <param name="dimension">Вариант измерения</param>
 public SpecificationItem(
     DbProduct product,
     string steelDoc,
     string steelType,
     string dimension)
 {
     Product   = product;
     Dimension = dimension;
     InputType = SpecificationItemInputType.DataBase;
     InitSpecificationItem(steelDoc, steelType);
 }
コード例 #21
0
        private async Task PrepareImage(ProductUpdateRequestDto model, DbProduct create)
        {
            if (model.Image != null && model.Image.Id == null)
            {
                var dbModel = _mapper.Map <DbImage>(model.Image);
                dbModel.Buffer = Convert.FromBase64String(model.Image.Base64String);
                var dbImage = await _imageRepository.Add(dbModel);

                create.ImageId = dbImage.Id;
            }
        }
コード例 #22
0
        private DbProduct SetProductData(AddEditProduct productFromView)
        {
            DbProduct newDbProduct = new DbProduct();

            newDbProduct.DbProductId       = String.IsNullOrEmpty(productFromView.ProductId) ? GeneratorId.GenerateId() : productFromView.ProductId;
            newDbProduct.DbProductName     = productFromView.ProductName;
            newDbProduct.DbProductWeight   = Decimal.Parse(productFromView.ProductWeight.Replace(".", ","));
            newDbProduct.DbProductCategory = (int)CategoryConverter.RusStringToEnum(productFromView.ProductCategory);
            newDbProduct.DbImageRes        = productFromView.ProductImageRes;
            return(newDbProduct);
        }
コード例 #23
0
        public void TestConcurrencyLessThenMaxAmount()
        {
            var i1 = 0;
            var i2 = 0;

            var prod = new Product("TestProd1", new decimal(10), "TestDescription", "Oste", "TestPath");
            var s    = new Shop("TestShop1", "TestAddress", "12345678", "OpeningTime", new DbChain().GetChain(1), new List <Warehouse>());

            //add product to database
            int prodId = new DbProduct().AddProduct(prod);

            prod.Id = prodId;
            //add shop to database
            var shopId = new DbShop().AddShop(s);

            s.Id = shopId;

            //add warehouse to databse and add it to shop
            var warehouse = new Warehouse(10, 0, prod, s, null);
            var warId     = new DbWarehouse().AddWarehouse(warehouse);

            warehouse.Id = warId;
            s.Warehouses.Add(warehouse);

            //make cart1 with part order
            var cart1 = new Cart();
            var po1   = new PartOrder(prod, 5, 20);

            cart1.PartOrders.Add(po1);
            cart1.PersonId = _cust.Id;
            cart1.ShopId   = s.Id;

            //make cart2 with part order
            var cart2 = new Cart();
            var po2   = new PartOrder(prod, 2, 20);

            cart2.PartOrders.Add(po2);
            cart2.PersonId = _cust1.Id;
            cart2.ShopId   = s.Id;

            //start 2 parallel queries
            var cartDb = new DbCart();

            Parallel.Invoke(() => { i1 = cartDb.AddCartWithPartOrders(cart1); }, () => { i2 = cartDb.AddCartWithPartOrders(cart2); });
            //var antal = new DbWarehouse().GetWarehouse(warId).Stock;
            var flag = 0;

            if (i1 == 0 || i2 == 0)
            {
                flag = 1;
            }
            Assert.AreEqual(1, flag);
        }
コード例 #24
0
ファイル: ProductDetail.cs プロジェクト: Rabitttt/Foodex
 public ProductDetail(int product_id)
 {
     InitializeComponent();
     product = DbProduct.get_product_from_id(product_id);
     fill_product_details();
     if (Seller.activeSeller != 0) //satıcı hesabi ise satın al butonlarını göremesini engelliyoruz
     {
         btn_buy.Enabled       = false;
         btn_GivePoint.Enabled = false;
     }
     fill_comments();
 }
コード例 #25
0
        private void loadProducts()
        {
            List <Category> categories = DbProduct.GetCategories();

            categories.Add(new Category(-1, Application.Current.Resources["cNone"] as String));
            PFCat.ItemsSource       = categories;
            PFCat.DisplayMemberPath = "Title";

            Data.Products          = DbProduct.GetProducts();
            dgProducts.ItemsSource = Data.Products;

            bAddProduct.IsEnabled = true;
        }
コード例 #26
0
        public IActionResult Create([FromBody] ProductCreateVM model)
        {
            DbProduct product = new DbProduct
            {
                CategoryId = model.CategoryId,
                Name       = model.Name,
                Price      = model.Price,
                Image      = model.Image
            };

            _context.Products.Add(product);
            _context.SaveChanges();
            return(Ok(product));
        }
コード例 #27
0
ファイル: WcSyncTests.cs プロジェクト: skohub/WcSync
        public void SetUp()
        {
            DefaultWcProduct = new WcProduct
            {
                Availability = "test",
                Sku          = "0",
                RegularPrice = 0,
                SalePrice    = 0,
                StockStatus  = "instock",
            };

            DefaultDbProduct = new DbProduct
            {
                Id           = 0,
                Availability = new List <Store>
                {
                    new Store
                    {
                        Name     = "test",
                        Quantity = 1,
                        Price    = 0,
                        Type     = StoreType.Shop,
                    }
                }
            };

            _wcProductServiceMock = new Mock <IWcProductService>();
            _wcProductServiceMock
            .Setup(m => m.GetProductsAsync())
            .Returns(Task.FromResult(new List <WcProduct> {
                DefaultWcProduct
            }));

            _dbProductRepositoryMock = new Mock <IDbProductRepository>();
            _dbProductRepositoryMock
            .Setup(r => r.GetProducts())
            .Returns(new List <DbProduct> {
                DefaultDbProduct
            });

            var loggerMock = new Mock <ILogger <ProductService> >();

            _productService = new ProductService(
                _wcProductServiceMock.Object,
                _dbProductRepositoryMock.Object,
                new PriceCalculator(loggerMock.Object),
                loggerMock.Object);
        }
コード例 #28
0
        public ActionResult Print(HttpPostedFileBase file)
        {
            if (file != null && file.ContentLength > 0)
            {
                var dto = DeliverySerializer.LoadFromStream(file.InputStream);
                Dictionary <string, int> titleArray = new Dictionary <string, int>();
                using (var db = new ApplicationDbContext())
                {
                    var row = new DbDeliveryRquest
                    {
                        ClientAddress = dto.ClientAddress,
                        Filled        = dto.Filled,
                        TimeDeliver   = dto.TimeDeliver,
                        TotalCost     = dto.TotalCost,
                        FullName      = dto.FullName
                    };

                    row.WayPoints = new Collection <DbWayPoint>();
                    foreach (var wpDto in dto.WayPoints)
                    {
                        var wp = new DbWayPoint
                        {
                            Address    = wpDto.Address,
                            PlaceTitle = wpDto.PlaceTitle,
                            ShopType   = wpDto.ShopType,
                        };
                        row.WayPoints.Add(wp);
                        wp.ProductsList = new Collection <DbProduct>();
                        foreach (var product in wpDto.ProductsList)
                        {
                            var p = new DbProduct
                            {
                                Name      = product.Name,
                                Amount    = product.Amount,
                                Additions = product.Additions,
                                Cost      = product.Cost,
                            };
                            wp.ProductsList.Add(p);
                        }
                        db.productList.AddRange(wp.ProductsList);
                    }
                    db.DeliveryRequest.Add(row);
                    db.SaveChanges();
                    return(View(dto));
                }
            }
            return(RedirectToAction("Index"));
        }
コード例 #29
0
        /// <summary>
        /// Inserts or updates the provided description for the product with the provided name.
        /// </summary>
        /// <param name="productName">The name of the product for which the description should be persisted.</param>
        /// <param name="descriptionMarkdown">The description that should be persisted.</param>
        public async Task InsertOrUpdateProductDescriptionAsync(string productName, string descriptionMarkdown)
        {
            var dbProduct = new DbProduct()
            {
                Name = productName,
                DescriptionMarkdown = descriptionMarkdown
            };

            using (var session = _storeProvider.Store.OpenAsyncSession())
            {
                // Using the store method when the product already exists in the database will override it completely, this is acceptable
                await session.StoreAsync(dbProduct, dbProduct.GetIdentifier());

                await session.SaveChangesAsync();
            }
        }
コード例 #30
0
        //Pay meu metodo de nivel alto. Onde estão as regras de negocio
        public void Pay(string id)
        {
            //Dependendo de uma classe de nivel BAIXO. SQL Server. Não é a regra de negocio.
            //Nessa refatoração vamos criar uma configuração
            //Vamos utilizar também a abstração e vamos usar factory.

            //Agora na classe de pagamento não vou depender de uma classe de baixo nivel.
            //Vamos ter uma dependencia de abstração. Não importa qual banco.
            //Vamos usar a factory do produto
            //SQLServerProduct product = new SQLServerProduct();

            DbProduct product     = DbProductFactory.Create();
            string    productData = product.GetProductById(id);

            Console.WriteLine(productData);
        }