示例#1
0
        public static async Task <long> AddVendorProduct(vendorproduct product)
        {
            using (var db = new VendorsConfigEntities())
            {
                db.vendorproducts.Add(product);
                await db.SaveChangesAsync();

                return(product.Id);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }