public static IList <ExcelWFSProductUSViewModel> GetItemsFor(ILogService log,
                                                                     ITime time,
                                                                     IMarketCategoryService categoryService,
                                                                     IHtmlScraperService htmlScraper,
                                                                     IMarketApi marketApi,
                                                                     IUnitOfWork db,
                                                                     CompanyDTO company,
                                                                     string asin,
                                                                     ExportToExcelMode exportMode,
                                                                     IList <FBAItemInfo> fbaItems,
                                                                     MarketType market,
                                                                     string marketplaceId,
                                                                     UseStyleImageModes useStyleImageMode,
                                                                     out string filename)
        {
            filename = null;

            var items = ItemExportHelper.GetParentItemAndChilds(log,
                                                                time,
                                                                htmlScraper,
                                                                marketApi,
                                                                db,
                                                                company,
                                                                asin,
                                                                fbaItems,
                                                                exportMode,
                                                                market,
                                                                marketplaceId);

            var parent   = items.Item1; // db.ParentItems.GetAsDTO(asin);
            var children = items.Item2; // db.Items.GetAllActualExAsDto().Where(i => i.ParentASIN == asin).ToList();

            var models = GetItemsFor(db, categoryService, exportMode, fbaItems, parent, children, useStyleImageMode, out filename);

            return(models);
        }
Ejemplo n.º 2
0
        public static IList <ExcelProductCAViewModel> GetItemsFor(ILogService log,
                                                                  ITime time,
                                                                  IMarketCategoryService categoryService,
                                                                  IHtmlScraperService htmlScraper,
                                                                  IMarketApi marketApi,
                                                                  IUnitOfWork db,
                                                                  CompanyDTO company,
                                                                  string parentAsin,
                                                                  MarketType market,
                                                                  string marketplaceId,
                                                                  UseStyleImageModes useStyleImageMode,
                                                                  out string filename)
        {
            var caExchangeRate = PriceHelper.CADtoUSD;
            var today          = time.GetAppNowTime();

            var models = new List <ExcelProductCAViewModel>();
            var items  = ItemExportHelper.GetParentItemAndChilds(log,
                                                                 time,
                                                                 htmlScraper,
                                                                 marketApi,
                                                                 db,
                                                                 company,
                                                                 parentAsin,
                                                                 null,
                                                                 ExportToExcelMode.Normal,
                                                                 market,
                                                                 marketplaceId);

            var parent     = items.Item1; // db.ParentItems.GetAsDTO(asin);
            var children   = items.Item2; // db.Items.GetAllActualExAsDto().Where(i => i.ParentASIN == asin).ToList();
            var firstChild = children.FirstOrDefault();

            FeatureValueDTO subLicense = null;
            string          itemStyle  = null;

            if (firstChild != null && firstChild.StyleId.HasValue)
            {
                //style = db.Styles.Get(parent.StyleId.Value);
                subLicense = db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.SUB_LICENSE1);
                itemStyle  = ItemExportHelper.GetFeatureValue(db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.ITEMSTYLE));
            }


            if (parent != null)
            {
                var variationType = ItemExportHelper.GetVariationType(children != null ? children.Select(ch => ch.Color).ToList() : null);

                string         childBrandName   = null;
                decimal?       childListPrice   = null;
                string         childDepartment  = null;
                string         childSize        = null;
                string         childStyleString = null;
                IList <string> childFeatures    = new List <string>();
                if (firstChild != null)
                {
                    childBrandName = children.Select(c => c.BrandName).FirstOrDefault();
                    childFeatures  = !String.IsNullOrEmpty(firstChild.Features)
                        ? firstChild.Features.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList()
                        : new List <string>();
                    childListPrice   = firstChild.ListPrice;
                    childDepartment  = firstChild.Department;
                    childSize        = firstChild.Size;
                    childStyleString = firstChild.StyleString;
                }

                //For simplicity, w can just use for parent SKU (unless it exist) style-%parentASIN%.
                string parentSku = parent.SKU;
                if (String.IsNullOrEmpty(parentSku))
                {
                    parentSku = childStyleString + "-" + parent.ASIN;
                }

                var gender       = (childDepartment ?? parent.Department ?? "");
                var sizeType     = ItemExportHelper.GetSizeType(childSize);
                var categoryInfo = categoryService.GetCategory(market, marketplaceId, itemStyle, gender, sizeType);
                //var itemType = ItemExportHelper.GetItemType(itemStyle);
                var newItemType   = categoryInfo.Key1;// ItemExportHelper.ItemTypeConverter(childSize ?? "", itemType, itemStyle, gender);
                var newDepartment = StringHelper.GetFirstNotEmpty(categoryInfo.Key2, ItemExportHelper.DepartmentConverter(gender, newItemType, sizeType));
                var parentImage   = ItemExportHelper.ImageConverter(StringHelper.GetFirstNotEmpty(
                                                                        parent.LargeImage != null ? parent.LargeImage.Image : null,
                                                                        parent.ImageSource));

                models.Add(new ExcelProductCAViewModel
                {
                    SKU           = parentSku,// parent.StyleString,
                    Title         = parent.AmazonName,
                    ASIN          = parent.ASIN,
                    ProductId     = "ASIN",
                    ClothingType  = "sleepwear",
                    Manufacturer  = parent.BrandName ?? childBrandName,
                    BrandName     = parent.BrandName ?? childBrandName,
                    Description   = parent.Description,
                    Type          = newItemType,
                    Update        = "Update",
                    StandardPrice = "",

                    SuggestedPrice = childListPrice.HasValue ? Math.Round(PriceHelper.Convert(childListPrice.Value / 100, caExchangeRate, true)).ToString("G") : "",
                    Currency       = childListPrice.HasValue ? "CAD" : "",

                    Quantity = "",

                    KeyProductFeatures1 = childFeatures.Count > 0 ? childFeatures[0] : String.Empty,
                    KeyProductFeatures2 = childFeatures.Count > 1 ? childFeatures[1] : String.Empty,
                    KeyProductFeatures3 = childFeatures.Count > 2 ? childFeatures[2] : String.Empty,
                    KeyProductFeatures4 = childFeatures.Count > 3 ? childFeatures[3] : String.Empty,
                    KeyProductFeatures5 = childFeatures.Count > 4 ? childFeatures[4] : String.Empty,

                    RecommendedBrowseNodes1 = ExcelProductCAViewModel.GetRecommendedBrowseNodes1(newDepartment, childSize, newItemType),

                    MainImageURL   = parentImage,
                    Parentage      = "Parent",
                    VariationTheme = variationType,

                    Department = newDepartment,
                    Color      = "",
                });

                foreach (var child in children)
                {
                    var styleImages = child.StyleId.HasValue ?
                                      db.StyleImages
                                      .GetAllAsDto()
                                      .Where(im => im.StyleId == child.StyleId.Value &&
                                             im.Type != (int)StyleImageType.Swatch)
                                      .ToList()
                                      .OrderByDescending(im => ImageHelper.GetSortIndex(im.Category))
                                      .ThenByDescending(im => im.IsDefault)
                                      .ThenBy(im => im.Id)
                                      .ToList()
                            : null;

                    IList <string> features = !String.IsNullOrEmpty(child.Features)
                        ? child.Features.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList()
                        : new List <string>();

                    var childImage = ItemExportHelper.ImageConverter(StringHelper.GetFirstNotEmpty(
                                                                         child.LargeImageUrl,
                                                                         child.ImageUrl));

                    if (useStyleImageMode == UseStyleImageModes.StyleImage)
                    {
                        if (styleImages != null && styleImages.Any())
                        {
                            childImage = styleImages.First().Image;
                        }
                    }

                    var itemPrice = child.SalePrice.HasValue && child.SaleStartDate < today
                        ? child.SalePrice.Value
                        : child.CurrentPrice;
                    models.Add(new ExcelProductCAViewModel
                    {
                        StyleId     = child.StyleId,
                        StyleItemId = child.StyleItemId,

                        SKU          = child.SKU,
                        Title        = child.Name,
                        ASIN         = child.ASIN,
                        ProductId    = "ASIN",
                        ClothingType = "sleepwear",
                        Manufacturer = child.BrandName,
                        BrandName    = child.BrandName,
                        Description  = parent.Description,
                        Type         = newItemType,
                        Update       = "Update",
                        //StandardPrice = child.Price.ToString("G"),
                        StandardPrice = CorrectCAPrice(PriceHelper.Convert(itemPrice, caExchangeRate, true)).ToString("G"),
                        //SalePrice = child.SalePrice.HasValue && child.SaleStartDate < today ? CorrectCAPrice(PriceHelper.Convert(child.SalePrice.Value, caExchangeRate, true)).ToString("G") : null,
                        SuggestedPrice = child.ListPrice.HasValue ? Math.Round(PriceHelper.Convert(child.ListPrice.Value / 100, caExchangeRate, true)).ToString("G") : "",
                        Currency       = child.ListPrice.HasValue ? "CAD" : "",
                        Quantity       = child.RealQuantity.ToString("G"),// "1", // i.Quantity.ToString("G"),

                        KeyProductFeatures1 = features.Count > 0 ? features[0] : String.Empty,
                        KeyProductFeatures2 = features.Count > 1 ? features[1] : String.Empty,
                        KeyProductFeatures3 = features.Count > 2 ? features[2] : String.Empty,
                        KeyProductFeatures4 = features.Count > 3 ? features[3] : String.Empty,
                        KeyProductFeatures5 = features.Count > 4 ? features[4] : String.Empty,

                        RecommendedBrowseNodes1 = ExcelProductCAViewModel.GetRecommendedBrowseNodes1(newDepartment, child.Size, newItemType),

                        MainImageURL     = childImage,
                        Parentage        = "Child",
                        ParentSKU        = parentSku,
                        RelationshipType = "Variation",
                        VariationTheme   = variationType,
                        Department       = newDepartment,
                        Color            = child.Color,
                        Size             = child.Size,
                        SpecialSize      = child.SpecialSize,
                    });
                }

                //Copy to parent child Type
                if (children.Count > 0)
                {
                    models[0].Type = models[1].Type;
                }

                if (children.Count > 0 &&
                    useStyleImageMode == UseStyleImageModes.StyleImage)
                {
                    models[0].MainImageURL = models[1].MainImageURL;
                }
            }

            filename = models[0].SKU + "_" + (subLicense != null ? subLicense.Value : "none") + "_CA.xls";

            return(models);
        }
Ejemplo n.º 3
0
        public static IList <ExcelProductUKViewModel> GetItemsFor(ILogService log,
                                                                  ITime time,
                                                                  IMarketCategoryService categoryService,
                                                                  IHtmlScraperService htmlScraper,
                                                                  IMarketApi marketApi,
                                                                  IUnitOfWork db,
                                                                  CompanyDTO company,
                                                                  string asin,
                                                                  MarketType market,
                                                                  string marketplaceId,
                                                                  UseStyleImageModes useStyleImageMode,
                                                                  out string filename)
        {
            var gbpExchangeRate = PriceHelper.GBPtoUSD;
            var today           = time.GetAppNowTime();

            var models = new List <ExcelProductUKViewModel>();
            var items  = ItemExportHelper.GetParentItemAndChilds(log,
                                                                 time,
                                                                 htmlScraper,
                                                                 marketApi,
                                                                 db,
                                                                 company,
                                                                 asin,
                                                                 null,
                                                                 ExportToExcelMode.Normal,
                                                                 market,
                                                                 marketplaceId);

            var parent     = items.Item1; // db.ParentItems.GetAsDTO(asin);
            var children   = items.Item2; // db.Items.GetAllActualExAsDto().Where(i => i.ParentASIN == asin).ToList();
            var firstChild = children.FirstOrDefault();

            FeatureValueDTO subLicense          = null;
            string          material            = null;
            string          materialComposition = null;
            string          itemStyle           = null;

            if (firstChild != null && firstChild.StyleId.HasValue)
            {
                subLicense          = db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.SUB_LICENSE1);
                itemStyle           = ItemExportHelper.GetFeatureValue(db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.ITEMSTYLE));
                material            = ItemExportHelper.GetFeatureValue(db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.MATERIAL));
                materialComposition = ItemExportHelper.GetFeatureValue(db.FeatureValues.GetValueByStyleAndFeatureId(firstChild.StyleId.Value, StyleFeatureHelper.MATERIAL_COMPOSITION));
            }

            if (parent != null)
            {
                var variationType = ItemExportHelper.GetVariationType(children != null ? children.Select(ch => ch.Color).ToList() : null);

                string  childBrandName   = null;
                decimal?childListPrice   = null;
                string  childDepartment  = null;
                string  childSize        = null;
                string  childStyleString = null;

                IList <string> childFeatures = new List <string>();
                //IList<string> searchTermList = new List<string>();

                //if (!String.IsNullOrEmpty(parent.SearchKeywords))
                //    searchTermList = parent.SearchKeywords.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();

                var searchTerms = (parent.SearchKeywords ?? "").Replace(";", ", ");
                searchTerms = ItemExportHelper.PrepareSearchTerms(searchTerms);

                if (firstChild != null)
                {
                    childBrandName = children.Select(c => c.BrandName).FirstOrDefault();
                    childFeatures  = !String.IsNullOrEmpty(firstChild.Features)
                        ? firstChild.Features.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList()
                        : new List <string>();

                    childListPrice   = firstChild.ListPrice;
                    childDepartment  = firstChild.Department;
                    childSize        = firstChild.Size;
                    childStyleString = firstChild.StyleString;
                }

                //For simplicity, w can just use for parent SKU (unless it exist) style-%parentASIN%.
                string parentSku = parent.SKU;
                if (String.IsNullOrEmpty(parentSku))
                {
                    parentSku = childStyleString + "-" + parent.ASIN;
                }

                var gender       = childDepartment ?? parent.Department ?? "";
                var sizeType     = ItemExportHelper.GetSizeType(childSize);
                var categoryInfo = categoryService.GetCategory(market, marketplaceId, itemStyle, gender, sizeType);

                //var itemType = ItemExportHelper.GetItemType(itemStyle);
                var    newItemType   = categoryInfo.Key1;// ItemExportHelper.ItemTypeConverter(childSize ?? "", itemType, itemStyle, gender);
                var    newDepartment = StringHelper.GetFirstNotEmpty(categoryInfo.Key2, ItemExportHelper.DepartmentConverter(gender, newItemType, sizeType));
                string clothingType  = categoryInfo.Key3;
                var    parentImage   = ItemExportHelper.ImageConverter(StringHelper.GetFirstNotEmpty(
                                                                           parent.LargeImage != null ? parent.LargeImage.Image : null,
                                                                           parent.ImageSource));

                var replaces = new Dictionary <string, string>()
                {
                    { "Nightgown", "Nighty" },
                    { "Nightys", "Nighties" },
                    { "nightgown", "nighty" },
                    { "nighty", "nighties" },
                    { "pajama", "pyjama" },
                    { "Pajama", "Pyjama" },
                };

                var hasCotton = StringHelper.GetInOneOfStrings("Cotton", new List <string>()
                {
                    searchTerms,
                    parent.AmazonName,
                    parent.Description,
                    firstChild != null ? firstChild.Features : null
                });

                if (String.IsNullOrEmpty(materialComposition))
                {
                    if (hasCotton)
                    {
                        materialComposition = "Cotton";
                    }
                    else
                    {
                        materialComposition = "Polyester";
                    }
                }

                models.Add(new ExcelProductUKViewModel
                {
                    SKU           = parentSku,
                    Title         = StringHelper.Replaces(parent.AmazonName, replaces),
                    ASIN          = parent.ASIN,
                    UPC           = "",
                    ProductId     = "",// "ASIN",
                    BrandName     = parent.BrandName ?? childBrandName,
                    Description   = parent.Description,
                    ClothingType  = clothingType,
                    Update        = "Update",
                    StandardPrice = "",

                    //SuggestedPrice = childListPrice.HasValue ? PriceHelper.Convert(childListPrice.Value / 100, gbpExchangeRate, false).ToString("G") : "",
                    Currency = "", // childListPrice.HasValue ? "GBP" : "",

                    Quantity = "",

                    RecommendedBrowseNodes1 = ExcelProductUKViewModel.GetRecommendedBrowseNodes1(newDepartment, childSize, newItemType),

                    KeyProductFeatures1 = childFeatures.Count > 0 ? childFeatures[0] : String.Empty,
                    KeyProductFeatures2 = childFeatures.Count > 1 ? childFeatures[1] : String.Empty,
                    KeyProductFeatures3 = childFeatures.Count > 2 ? childFeatures[2] : String.Empty,
                    KeyProductFeatures4 = childFeatures.Count > 3 ? childFeatures[3] : String.Empty,
                    KeyProductFeatures5 = childFeatures.Count > 4 ? childFeatures[4] : String.Empty,

                    SearchTerms1 = searchTerms,
                    //SearchTerms2 = searchTermList.Count > 1 ? searchTermList[1] : String.Empty,
                    //SearchTerms3 = searchTermList.Count > 2 ? searchTermList[2] : String.Empty,
                    //SearchTerms4 = searchTermList.Count > 3 ? searchTermList[3] : String.Empty,
                    //SearchTerms5 = searchTermList.Count > 4 ? searchTermList[4] : String.Empty,

                    MainImageURL   = parentImage,
                    Parentage      = "Parent",
                    VariationTheme = variationType,

                    MaterialComposition = materialComposition,
                    Department          = newDepartment,
                    Color = "",
                });

                foreach (var child in children)
                {
                    var styleImages = child.StyleId.HasValue ?
                                      db.StyleImages
                                      .GetAllAsDto()
                                      .Where(im => im.StyleId == child.StyleId.Value && im.IsDefault)
                                      .ToList()
                            : null;

                    IList <string> features = !String.IsNullOrEmpty(child.Features)
                        ? child.Features.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList()
                        : new List <string>();

                    var childImage = ItemExportHelper.ImageConverter(StringHelper.GetFirstNotEmpty(
                                                                         child.LargeImageUrl,
                                                                         child.ImageUrl));

                    if (useStyleImageMode == UseStyleImageModes.StyleImage)
                    {
                        if (styleImages != null && styleImages.Any())
                        {
                            childImage = styleImages.First().Image;
                        }
                    }

                    var itemPrice = child.SalePrice.HasValue && child.SaleStartDate < today
                        ? child.SalePrice.Value
                        : child.CurrentPrice;

                    models.Add(new ExcelProductUKViewModel
                    {
                        StyleId     = child.StyleId,
                        StyleItemId = child.StyleItemId,

                        SKU          = child.SKU,
                        Title        = StringHelper.Replaces(child.Name, replaces),
                        ASIN         = child.ASIN,
                        UPC          = child.Barcode,
                        ProductId    = "UPC",// "ASIN",
                        BrandName    = child.BrandName,
                        Description  = parent.Description,
                        ClothingType = clothingType,
                        Update       = "Update",

                        StandardPrice = CorrectUKPrice(PriceHelper.Convert(itemPrice, gbpExchangeRate, true)).ToString("G"),
                        //SuggestedPrice = child.ListPrice.HasValue ? PriceHelper.Convert(child.ListPrice.Value / 100, gbpExchangeRate, false).ToString("G") : "",
                        Currency = "GBP",
                        Quantity = child.RealQuantity.ToString("G"),// "1", // i.Quantity.ToString("G"),

                        KeyProductFeatures1 = features.Count > 0 ? features[0] : String.Empty,
                        KeyProductFeatures2 = features.Count > 1 ? features[1] : String.Empty,
                        KeyProductFeatures3 = features.Count > 2 ? features[2] : String.Empty,
                        KeyProductFeatures4 = features.Count > 3 ? features[3] : String.Empty,
                        KeyProductFeatures5 = features.Count > 4 ? features[4] : String.Empty,

                        SearchTerms1 = searchTerms,
                        //SearchTerms2 = searchTermList.Count > 1 ? searchTermList[1] : String.Empty,
                        //SearchTerms3 = searchTermList.Count > 2 ? searchTermList[2] : String.Empty,
                        //SearchTerms4 = searchTermList.Count > 3 ? searchTermList[3] : String.Empty,
                        //SearchTerms5 = searchTermList.Count > 4 ? searchTermList[4] : String.Empty,


                        RecommendedBrowseNodes1 = ExcelProductUKViewModel.GetRecommendedBrowseNodes1(newDepartment, childSize, newItemType),

                        MainImageURL     = childImage,
                        Parentage        = "Child",
                        ParentSKU        = parentSku,
                        RelationshipType = "Variation",
                        VariationTheme   = variationType,
                        Department       = newDepartment,
                        Color            = child.Color,

                        MaterialComposition = materialComposition,
                        Size = ItemExportHelper.PrepareSize(ExcelProductUKViewModel.SizeConverter(child.Size, material), gender),
                    });
                }

                if (children.Count > 0 &&
                    useStyleImageMode == UseStyleImageModes.StyleImage)
                {
                    models[0].MainImageURL = models[1].MainImageURL;
                }
            }

            filename = models[0].SKU + "_" + (subLicense != null ? subLicense.Value : "none") + "_UK.xls";

            return(models);
        }