Example #1
0
 public static string GetName(PublishFeedModes mode)
 {
     if (mode == PublishFeedModes.Publish)
     {
         return("Publish/Repricing");
     }
     if (mode == PublishFeedModes.UnPublish)
     {
         return("Unpublish");
     }
     if (mode == PublishFeedModes.Hold)
     {
         return("Hold");
     }
     if (mode == PublishFeedModes.UnHold)
     {
         return("Unhold");
     }
     if (mode == PublishFeedModes.HoldStyle)
     {
         return("Hold styles");
     }
     if (mode == PublishFeedModes.UnHoldStyle)
     {
         return("Unhold styles");
     }
     return("n/a");
 }
        public ProcessFeedResult UploadFeed(string filepath,
                                            MarketType market,
                                            string marketplaceId,
                                            PublishFeedModes mode,
                                            bool isPrime)
        {
            var result = new ProcessFeedResult();

            _log.Info("Feed file: " + filepath);

            var results = ParseFeed(filepath);

            if (results == null)
            {
                return(result);
            }

            _log.Info("Parsed count: " + results.Count);

            result.ParsedCount = results.Count;
            return(result);
        }
        public IList <MessageString> PreviewFeed(string filepath, PublishFeedModes mode)
        {
            var ordersCount = 0;

            var results = new List <MessageString>();

            _log.Info("Preview Feed file: " + filepath);

            using (var stream = new FileStream(filepath, FileMode.Open, FileAccess.ReadWrite))
            {
                IWorkbook workbook = null;
                if (filepath.EndsWith(".xlsx"))
                {
                    workbook = new XSSFWorkbook(stream);
                }
                else
                {
                    workbook = new HSSFWorkbook(stream);
                }

                var sheet = workbook.GetSheetAt(0);

                var headerRow = sheet.GetRow(0);

                int?orderDateIndex = 1;
                //var modelColumnIndex = headerRow.Cells.FirstOrDefault(c => c != null
                //                                                               &&
                //                                                               (StringHelper.IsEqualNoCase(
                //                                                                   StringHelper.TrimWhitespace(
                //                                                                       c.StringCellValue), "SKU")
                //                                                                ||
                //                                                                StringHelper.IsEqualNoCase(
                //                                                                    StringHelper.TrimWhitespace(
                //                                                                        c.StringCellValue), "Model")
                //                                                                ||
                //                                                                StringHelper.IsEqualNoCase(
                //                                                                    StringHelper.TrimWhitespace(
                //                                                                        c.StringCellValue), "Product Id")))?
                //        .ColumnIndex;

                //var salePriceColumnIndex = headerRow.Cells.FirstOrDefault(c => c != null
                //    && StringHelper.IsEqualNoCase(StringHelper.TrimWhitespace(c.StringCellValue), "Price"))?.ColumnIndex;

                //var minPriceColumnIndex = headerRow.Cells.FirstOrDefault(c => c != null
                //    && (StringHelper.IsEqualNoCase(StringHelper.TrimWhitespace(c.StringCellValue), "Min Price")
                //        || StringHelper.IsEqualNoCase(StringHelper.TrimWhitespace(c.StringCellValue), "Min")))?.ColumnIndex;

                //var maxPriceColumnIndex = headerRow.Cells.FirstOrDefault(c => c != null
                //    && (StringHelper.IsEqualNoCase(StringHelper.TrimWhitespace(c.StringCellValue), "Max Price")
                //        || StringHelper.IsEqualNoCase(StringHelper.TrimWhitespace(c.StringCellValue), "Max")))?.ColumnIndex;

                //if (!modelColumnIndex.HasValue)
                //{
                //    results.Add(MessageString.Error("Unable to find the SKU/Model column"));
                //    return results;
                //}

                for (var i = 1; i <= sheet.LastRowNum; i++)
                {
                    var row = sheet.GetRow(i);
                    if (row.GetCell(0) != null)
                    {
                        if (String.IsNullOrEmpty(row.GetCell(orderDateIndex.Value).ToString()))
                        {
                            ordersCount++;
                        }
                        //            skuDataIssue++;
                        //        else
                        //            skuCount++;

                        //        try
                        //        {
                        //            var currentPrice = (salePriceColumnIndex.HasValue &&
                        //                                row.GetCell(salePriceColumnIndex.Value) != null)
                        //                ? PriceHelper.RoundToTwoPrecision(
                        //                    ExcelHelper.TryGetCellDecimal(row.GetCell(salePriceColumnIndex.Value)))
                        //                : 0;

                        //            var minPrice = (minPriceColumnIndex.HasValue &&
                        //                                row.GetCell(minPriceColumnIndex.Value) != null)
                        //                ? PriceHelper.RoundToTwoPrecision(
                        //                    ExcelHelper.TryGetCellDecimal(row.GetCell(minPriceColumnIndex.Value)))
                        //                : 0;

                        //            var maxPrice = (maxPriceColumnIndex.HasValue &&
                        //                                row.GetCell(maxPriceColumnIndex.Value) != null)
                        //                ? PriceHelper.RoundToTwoPrecision(
                        //                    ExcelHelper.TryGetCellDecimal(row.GetCell(maxPriceColumnIndex.Value)))
                        //                : 0;

                        //            if (currentPrice == 0 && (minPrice == 0 || maxPrice == 0))
                        //                priceDataIssue++;
                        //            else
                        //                priceCount++;
                        //        }
                        //        catch (Exception ex)
                        //        {
                        //            _log.Info("Issue with processing: " + ex.Message);
                        //            priceDataIssue++;
                        //        }
                    }
                }
            }

            _log.Info("Parsed count: " + results.Count);

            results.Add(MessageString.Info(String.Format("{0} Orders will be created", ordersCount)));

            //if (mode == PublishFeedModes.Publish)
            //{
            //    results.Add(MessageString.Info(String.Format("{0} SKU(s) will be published or updated", skuCount)));
            //    results.Add(MessageString.Info(String.Format("for {0} SKU(s) the price will be updated", priceCount)));
            //}
            //if (mode == PublishFeedModes.Hold)
            //{
            //    results.Add(MessageString.Info(String.Format("for {0} SKU(s) the status will be changed to \"on hold\"", skuCount)));
            //}
            //if (mode == PublishFeedModes.UnHold)
            //{
            //    results.Add(MessageString.Info(String.Format("for {0} SKU(s) the status will be changed to \"un hold\"", skuCount)));
            //}
            //if (mode == PublishFeedModes.HoldStyle)
            //{
            //    results.Add(MessageString.Info(String.Format("for {0} style(s) the status will be changed to \"on hold\"", skuCount)));
            //}
            //if (mode == PublishFeedModes.UnHoldStyle)
            //{
            //    results.Add(MessageString.Info(String.Format("for {0} style(s) the status will be changed to \"un hold\"", skuCount)));
            //}

            return(results);
        }