/// <summary>
        /// Upserts the single category.
        /// </summary>
        /// <param name="category">The category.</param>
        /// <param name="categoryToId">The category to identifier.</param>
        /// <returns>upserted category's id</returns>
        private int UpsertSingleCategory(AmazonProductCategory category, IDictionary <AmazonProductCategory, int> categoryToId)
        {
            using (var connection = GetOpenedSqlConnection2()) {
                int parentId = -1;
                if (category.Parent != null)
                {
                    parentId = UpsertSingleCategory(category.Parent, categoryToId);
                }

                AmazonCategory cat = new AmazonCategory {
                    MarketplaceTypeId = AmazonMarketplaceTypeId,
                    ServiceCategoryId = category.CategoryId,
                    Name     = category.CategoryName,
                    ParentId = parentId > 0 ? parentId : (int?)null
                };

                var upsertCommand = GetUpsertGenerator(cat)
                                    .WithConnection(connection.SqlConnection())
                                    .WithSkipColumns(o => o.Id)
                                    .WithOutputColumns(o => o.Id)
                                    .WithTableName("MP_EbayAmazonCategory")
                                    .WithMatchColumns(o => o.Name)
                                    .Verify()
                                    .GenerateCommand();

                using (var sqlCommand = upsertCommand) {
                    int id = (int)ExecuteScalarAndLog <int>(sqlCommand);
                    categoryToId.Add(category, id);
                    return(id);
                }
            }
        }
示例#2
0
        private MP_EbayAmazonCategory AddAmazonCategory(IMarketplaceType marketplace, AmazonProductCategory amazonProductCategory, ElapsedTimeInfo elapsedTimeInfo, int mpId)
        {
            var cat = new MP_EbayAmazonCategory {
                CategoryId  = amazonProductCategory.CategoryId,
                Name        = amazonProductCategory.CategoryName,
                Marketplace = _MarketPlaceRepository.Get(marketplace.InternalId),
                Parent      = amazonProductCategory.Parent == null ? null : FindEBayAmazonCategory(marketplace, amazonProductCategory.Parent.CategoryId, elapsedTimeInfo, mpId) ?? AddAmazonCategory(marketplace, amazonProductCategory.Parent, elapsedTimeInfo, mpId)
            };

            AddCategoryToCache(marketplace, cat);

            ElapsedTimeHelper.CalculateAndStoreElapsedTimeForCallInSeconds(elapsedTimeInfo,
                                                                           mpId,
                                                                           ElapsedDataMemberType.StoreDataToDatabase,
                                                                           () => _EbayAmazonCategoryRepository.Save(cat));

            return(cat);
        }