public static async Task <long> AddVendorProduct(vendorproduct product) { using (var db = new VendorsConfigEntities()) { db.vendorproducts.Add(product); await db.SaveChangesAsync(); return(product.Id); } }
private async Task InsertVendorProducts() { var count = 0; try { for (var rCnt = (int)_vendor.RowAt; rCnt <= _range.Rows.Count; rCnt++) { var SKU = (_productfileconfig.SKU != -1) ? (_range.Cells[rCnt, (_productfileconfig.SKU + 1)] as Range).Value2 : null; var Name = (_productfileconfig.Name != -1) ? (_range.Cells[rCnt, (_productfileconfig.Name + 1)] as Range).Value2 : null; var Description = (_productfileconfig.Description != -1) ? (_range.Cells[rCnt, (_productfileconfig.Description + 1)] as Range).Value2 : null; var ShortDescription = (_productfileconfig.ShortDescription != -1) ? (_range.Cells[rCnt, (_productfileconfig.ShortDescription + 1)] as Range).Value2 : null; var Category = (_productfileconfig.Category != -1) ? (_range.Cells[rCnt, (_productfileconfig.Category + 1)] as Range).Value2 : null; var UPCCode = (_productfileconfig.UPCCode != -1) ? (_range.Cells[rCnt, (_productfileconfig.UPCCode + 1)] as Range).Value2 : null; var SupplierCost = (_productfileconfig.SupplierCost != -1) ? (_range.Cells[rCnt, (_productfileconfig.SupplierCost + 1)] as Range).Value2 : null; var product = new vendorproduct { VendorId = _vendor.Id, SKU = (SKU != null) ? Convert.ToString(SKU) : "", Name = (Name != null) ? Convert.ToString(Name) : "", Description = (Description != null) ? Convert.ToString(Description) : "", ShortDescription = (ShortDescription != null) ? Convert.ToString(ShortDescription) : "", Category = (Category != null) ? Convert.ToString(Category) : "", UPCCode = (UPCCode != null) ? Convert.ToString(UPCCode) : "", SupplierCost = (SupplierCost != null) ? Convert.ToDecimal(SupplierCost) : 0, ResultDate = _date }; var productId = await VendorsConfig.AddVendorProduct(product); await InsertProductImages(productId, rCnt); count++; var percentage = (((double)count + 1) / _range.Rows.Count) * 100.00; System.Console.WriteLine("{1:#0.00}% Inserted product: {0}", product.SKU, percentage); } System.Console.WriteLine("Uploaded {0} products for {1}", count, _vendor.VendorName); } catch (Exception ex) { System.Console.WriteLine(ex.StackTrace); } }
private async Task InsertVendorProduct(string unSplitRowValues) { var rowValues = unSplitRowValues.Split(_delimiter).ToList(); var product = new vendorproduct { VendorId = _vendor.Id, SKU = rowValues[(int)_productfileconfig.SKU], Name = rowValues[(int)_productfileconfig.Name], Description = rowValues[(int)_productfileconfig.Description], ShortDescription = rowValues[(int)_productfileconfig.ShortDescription], Category = rowValues[(int)_productfileconfig.Category], UPCCode = rowValues[(int)_productfileconfig.UPCCode], SupplierCost = Convert.ToDecimal(rowValues[(int)_productfileconfig.SupplierCost]), ResultDate = _date }; var vendorProductId = await VendorsConfig.AddVendorProduct(product); await InsertProductImages(rowValues, vendorProductId); }
public int DoUpadateOrInsertVendorProduct(VendorProduct model, bool isToUpdate, string submittedBy) { try { // NEED TO CREATE NEW DB CONTEXT SINCE THIS METHOD IS SHARED TO CONSOLE SERVICES using (var context = new EisInventoryContext()) { if (isToUpdate) { // get the existing vendor product var product = context.vendorproducts.FirstOrDefault(x => x.EisSupplierSKU == model.EisSupplierSKU); if (product == null) { return(0); } // set the new quantity for this vendor product if (model.IsQuantitySet) { // get the number of order items which are Unshipped/Pending for this item var pendingQtyOrders = context.orderproducts.Where(x => x.EisSupplierSKU == model.EisSupplierSKU) .Join(context.orderitems, op => op.OrderItemId, oi => oi.OrderItemId, (op, oi) => new { OrderProduct = op, OrderItem = oi }) .Join(context.orders.Where(x => x.OrderStatus == OrderStatus.Unshipped || x.OrderStatus == OrderStatus.Pending), ooi => ooi.OrderItem.OrderId, o => o.OrderId, (ooi, o) => new { ooi.OrderProduct }) .Select(x => x.OrderProduct) .DefaultIfEmpty <orderproduct>() .Sum(x => (x == null ? 0 : x.Quantity)); // deduct the availability for this item with its pending orders product.Quantity = model.Quantity - pendingQtyOrders; } if (model.Name != null) { product.Name = model.Name; } if (model.Description != null) { product.Description = model.Description; } if (model.IsSupplierPriceSet) { product.SupplierPrice = model.SupplierPrice; } if (model.IsMinPackSet) { product.MinPack = model.MinPack; } if (model.UPC != null) { product.UPC = model.UPC; } if (model.Category != null) { product.Category = model.Category; } if (model.Weight != null) { product.Weight = model.Weight; } if (model.WeightUnit != null) { product.WeightUnit = model.WeightUnit; } if (model.Shipping != null) { product.Shipping = model.Shipping; } if (model.VendorMOQ != null) { product.VendorMOQ = model.VendorMOQ; } if (model.VendorMOQType != null) { product.VendorMOQType = model.VendorMOQType; } if (model.IsAutoLinkToEisSKUSet) { product.IsAutoLinkToEisSKU = model.IsAutoLinkToEisSKU; } product.Modified = DateTime.UtcNow; product.ModifiedBy = submittedBy; context.SaveChanges(); // let's set some properties; assuming that only EisSupplierSKU is supplied // these data will be used when creating new EisSKU model.Name = product.Name; model.Description = product.Description; model.ShortDescription = product.ShortDescription; model.Category = product.Category; model.UPC = product.UPC; model.SubmittedBy = submittedBy; } else { var product = new vendorproduct(); CopyObject.CopyFields(model, product); product.Created = DateTime.UtcNow; product.CreatedBy = submittedBy; // add it to the context and save context.vendorproducts.Add(product); context.SaveChanges(); } UpdateVendorProductImages(model.Images, model.EisSupplierSKU); } return(1); } catch (DbEntityValidationException ex) { var errorMsg = EisHelper.ParseDbEntityValidationException(ex); _logger.LogError(LogEntryType.VendorProductFileUploadWorker, errorMsg, ex.StackTrace); return(0); } catch (Exception ex) { _logger.LogError(LogEntryType.VendorProductFileUploadWorker, string.Format("Error in updating vendor product details -> SupplierSKU: {0} VendorId: {1}. <br/>Error message: {2}", model.SupplierSKU, model.VendorId, EisHelper.GetExceptionMessage(ex)), ex.StackTrace); return(0); } }