public void AddNewProduct(int contractorId, string article, decimal purchaseprice, decimal saleprice, decimal vat) { if (contractorId <= 0 || String.IsNullOrEmpty(article)) return; Product item = new Product() { Article = article, PurchasePrice = purchaseprice, SalePrice = saleprice, VAT = vat, ContractorId = contractorId }; var datacontextModel = new SkladDataContext(); PrepareProductData(item); item.Supplier = (from x in datacontextModel.Contractors where x.ContractorId == item.ContractorId && x.ContractorTypeId == (int)EntityEnum.ContractorTypeEnum.Factory select x).First<Contractor>(); if (item.Supplier == null) { logger.ErrorFormat("для товара {0} не найден поставщик с id={1}", item.Article, item.ContractorId); return; } string validationMessage = ValidateProductData(datacontextModel.Products, item, true); if (!String.IsNullOrEmpty(validationMessage)) { logger.Error(validationMessage); return; } datacontextModel.Products.Add(item); datacontextModel.SaveChanges(); logger.InfoFormat("Создан товар {0} от поставщика {1}", item.Article, item.Supplier.Code); }
private string ValidateProductData(DbSet<Product> dbSet, Product product, bool isNew) { if (String.IsNullOrEmpty(product.Article)) return "Артикул товара обязателен"; if(product.Supplier == null) return "Не указан поставщик товара"; if (isNew) { Product item = dbSet.Where(x => String.Compare(x.Article, product.Article, StringComparison.OrdinalIgnoreCase) == 0 && x.ContractorId == product.Supplier.ContractorId).FirstOrDefault<Product>(); if (item != null) return "Товар с таким артикулом существует"; product.CreatedAt = DateTime.Now; } else { Product item = (from x in dbSet where x.ProductId == product.ProductId select x).First<Product>(); // if Article was changed if (item.Article.ToLower() != product.Article.ToLower()) { if ((from x in dbSet where String.Compare(x.Article, product.Article, StringComparison.OrdinalIgnoreCase) == 0 select x).FirstOrDefault<Product>() != null) return "Товар с таким артикулом существует"; } product.ModifiedAt = DateTime.Now; } return String.Empty; }
private void UpdateProduct(Product item, Product editedItem) { item.Article = (editedItem.Article ?? String.Empty).Trim(); item.PurchasePrice = editedItem.PurchasePrice; item.SalePrice = editedItem.SalePrice; item.VAT = editedItem.VAT; item.ContractorId = editedItem.ContractorId; item.Description = (editedItem.Description ?? String.Empty).Trim(); }
private void PrepareProductData(Product product) { product.Article = (product.Article ?? String.Empty).Trim().Replace(" ",""); product.Description = (product.Description ?? String.Empty).Trim(); }
public ActionResult ProductEditRows(Product editedItem) { // Get the grid and database models var gridModel = new SkladJqGridModel(); var datacontextModel = new SkladDataContext(); // If we are in "Edit" mode if (gridModel.WarehouseGrid.AjaxCallBackMode == AjaxCallBackMode.EditRow) { // Get the data from and find the item corresponding to the edited row Product item = (from x in datacontextModel.Products where x.ProductId == editedItem.ProductId select x).First<Product>(); // update the item information UpdateProduct(item, editedItem); datacontextModel.SaveChanges(); } if (gridModel.WarehouseGrid.AjaxCallBackMode == AjaxCallBackMode.DeleteRow) { Product item = (from x in datacontextModel.Products where x.ProductId == editedItem.ProductId select x) .First<Product>(); // delete the record datacontextModel.Products.Remove(item); datacontextModel.SaveChanges(); } return RedirectToAction("Product", "Reference"); }
private Product GetOrCreateProduct(SkladDataContext datacontextModel, int supplierId, decimal purchaseprice, decimal marginabs, string article, string comment) { Product product = datacontextModel.Products.Where(x => x.Article.ToLower() == article && x.ContractorId == supplierId).FirstOrDefault(); if (product == null) { // Add new product Product item = new Product { Article = article, ContractorId = supplierId, PurchasePrice = purchaseprice, SalePrice = purchaseprice + marginabs, CreatedAt = DateTime.Now, }; datacontextModel.Products.Add(item); datacontextModel.SaveChanges(); product = datacontextModel.Products.Where(x => x.Article.ToLower() == article && x.ContractorId == supplierId).FirstOrDefault(); } if (String.IsNullOrEmpty(product.Description)) product.Description = comment; else if (product.Description.IndexOf(comment) == -1) product.Description += ". " + comment; else product.Description = comment; datacontextModel.SaveChanges(); return product; }