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;
		}
Example #4
0
        //
        //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;
        }