public static Hashtable getListingType2DurationTable(String catid) { //listing types, recursively search ListingDurationReferenceTypeCollection listingTypes = getListingTypes(catid); if (listingTypes == null || listingTypes.Count == 0) //get site defaults { listingTypes = siteDefaults.ListingDuration; } //listing duration definitions ListingDurationDefinitionsType listingDurations = featureDefinition.ListingDurations; return(constructListingTypeDurationMapping(listingTypes, listingDurations)); }
/// <summary> /// construct a mapping between listing type and listing duration /// </summary> /// <param name="listingTypes"></param> /// <param name="listingDurations"></param> /// <returns>Hashtable</returns> private static Hashtable constructListingTypeDurationMapping(ListingDurationReferenceTypeCollection listingTypes, ListingDurationDefinitionsType listingDurations) { Hashtable listingTypeDurationMap = new Hashtable(); eBay.Service.Core.Soap.StringCollection listingDuration = null; foreach (ListingDurationReferenceType listingType in listingTypes) { string key = listingType.type.ToString(); //iterate listingDuration collection to find specific listingDuration whose durationSetID equals listingType id foreach (ListingDurationDefinitionType definition in listingDurations.ListingDuration) { if (definition.durationSetID.Equals(listingType.Value)) { listingDuration = definition.Duration; } } listingTypeDurationMap.Add(key, listingDuration); } return(listingTypeDurationMap); }
/// <summary> /// construct a mapping between listing type and listing duration /// </summary> /// <param name="listingTypes"></param> /// <param name="listingDurations"></param> /// <returns>Hashtable</returns> private static Hashtable constructListingTypeDurationMapping(ListingDurationReferenceTypeCollection listingTypes,ListingDurationDefinitionsType listingDurations) { Hashtable listingTypeDurationMap = new Hashtable(); eBay.Service.Core.Soap.StringCollection listingDuration = null; foreach (ListingDurationReferenceType listingType in listingTypes) { string key =listingType.type.ToString(); //iterate listingDuration collection to find specific listingDuration whose durationSetID equals listingType id foreach (ListingDurationDefinitionType definition in listingDurations.ListingDuration) { if(definition.durationSetID.Equals(listingType.Value)) { listingDuration=definition.Duration; } } listingTypeDurationMap.Add(key,listingDuration); } return listingTypeDurationMap; }
// //sync category features // private void SyncCategoryFeatures() { Hashtable catsTable = this.siteFacade.GetAllCategoriesTable(); Hashtable cfsTable = this.siteFacade.SiteCategoriesFeaturesTable[this.apiContext.Site] as Hashtable; SiteDefaultsType siteDefaults = this.siteFacade.SiteFeatureDefaultTable[this.apiContext.Site] as SiteDefaultsType; FeatureDefinitionsType featureDefinition = this.siteFacade.SiteFeatureDefinitionsTable[this.apiContext.Site] as FeatureDefinitionsType; CategoryFeatureType cf = cfsTable[this.CategoryID] as CategoryFeatureType; //get item SpecificsEnabled feature //workaround, if no CategoryFeature found, just use site defaults this.ItemSpecificEnabled = (cf == null) ? siteDefaults.ItemSpecificsEnabled : cf.ItemSpecificsEnabled; //get item ConditionEnabled feature //workaround, if Disabled, just check parent CategoryFeatureType conditionEnabledCategoryFeature = this.getConditionEnabledCategoryFeature(this.CategoryID, catsTable, cfsTable); if (conditionEnabledCategoryFeature != null) { this.conditionEnabled = conditionEnabledCategoryFeature.ConditionEnabled; this.conditionValues = conditionEnabledCategoryFeature.ConditionValues; } else { this.conditionEnabled = siteDefaults.ConditionEnabled; this.conditionValues = siteDefaults.ConditionValues; } if (cf != null && cf.ConditionValues != null) { this.conditionValues = cf.ConditionValues; } //this.conditionValues = (cf == null || cf.ConditionValues == null) ? siteDefaults.ConditionValues : cf.ConditionValues; //get returnPolicyEnabled feature //workaround, just use siteDefaults now //bool retPolicyEnabled = (cf == null)?siteDefaults.ReturnPolicyEnabled:cf.ReturnPolicyEnabled; this.ReturnPolicyEnabled = siteDefaults.ReturnPolicyEnabled; //listing types, recursively search ListingDurationReferenceTypeCollection listingTypes = getListingTypes(this.CategoryID, catsTable, cfsTable); if (listingTypes == null || listingTypes.Count == 0)//get site defaults { listingTypes = siteDefaults.ListingDuration; } //listing duration definitions ListingDurationDefinitionsType listingDurations = featureDefinition.ListingDurations; //get a mapping from listing type to duration this.ListingType2DurationMap = constructListingTypeDurationMapping(listingTypes, listingDurations); //payment methods BuyerPaymentMethodCodeTypeCollection paymentMethods = getPaymentMethods(this.CategoryID, catsTable, cfsTable); if (paymentMethods == null || paymentMethods.Count == 0)//get site defautls { paymentMethods = siteDefaults.PaymentMethod; } this.PaymentMethod = paymentMethods; }