/// <summary> /// Gets the name of the selected option choice /// </summary> /// <param name="choices">Collection of option choices</param> /// <returns>The name of the selected option choice</returns> public string GetSelectedOptionChoiceName(OptionChoiceCollection choices) { int index = choices.IndexOf(this.Option1); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option2); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option3); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option4); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option5); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option6); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option7); if (index > -1) { return(choices[index].Name); } index = choices.IndexOf(this.Option8); if (index > -1) { return(choices[index].Name); } return(""); }
/// <summary> /// Calculates variant /// </summary> /// <returns><b>true</b> if calculation successful, <b>false</b> otherwise</returns> public bool CalculateVariant() { _Calculated = false; int[] choiceIds = this.GetOptionChoices(OptionCountBehavior.ActualCount); if (choiceIds != null && choiceIds.Length > 0) { //INITIALIZE THE CALCULATED VALUES _CalculatedPrice = 0; _CalculatedWeight = 0; //BUILD CRITERIA TO LOAD CORRECT OPTIONS string criteria; if (choiceIds.Length == 1) { criteria = "OptionChoiceId = " + choiceIds[0].ToString(); } else { string idList = AlwaysConvert.ToList(",", choiceIds); criteria = "OptionChoiceId IN (" + idList + ")"; } //RECALCULATE ALL ITEMS OptionChoiceCollection choices = OptionChoiceDataSource.LoadForCriteria(criteria); OptionChoice choice; List <string> names = new List <string>(); StringBuilder sku = new StringBuilder(); sku.Append(this.Product.Sku); //LOOP ALL CHOICES INDICATED FOR THIS VARIANT AND CALCULATE THE MODIFIERS foreach (int optionChoiceId in choiceIds) { int index = choices.IndexOf(optionChoiceId); if (index > -1) { choice = choices[index]; names.Add(choice.Name); _CalculatedPrice += choice.PriceModifier; _CalculatedWeight += choice.WeightModifier; sku.Append(choice.SkuModifier); } } //SET THE CALCULATED VALUES _CalculatedName = String.Join(", ", names.ToArray()); _CalculatedSku = sku.ToString(); if (this.VariantName == string.Empty) { this.VariantName = _CalculatedName; } if (this.Price == 0) { this.Price = _CalculatedPrice; } if (this.Weight == 0) { this.Weight = _CalculatedWeight; } if (this.Sku == string.Empty) { this.Sku = _CalculatedSku; } _Calculated = true; } return(_Calculated); }