本文整理汇总了C#中ShoppingCartType类的典型用法代码示例。如果您正苦于以下问题:C# ShoppingCartType类的具体用法?C# ShoppingCartType怎么用?C# ShoppingCartType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ShoppingCartType类属于命名空间,在下文中一共展示了ShoppingCartType类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CountProductsInCart
public static int CountProductsInCart(this Customer customer, ShoppingCartType cartType, int? storeId = null)
{
int count = customer.ShoppingCartItems
.Filter(cartType, storeId)
.Where(x => x.ParentItemId == null)
.Sum(x => x.Quantity);
return count;
}
示例2: Filter
public static IEnumerable<ShoppingCartItem> Filter(this IEnumerable<ShoppingCartItem> shoppingCart, ShoppingCartType type, int? storeId = null)
{
var enumerable = shoppingCart.Where(x => x.ShoppingCartType == type);
if (storeId.HasValue)
enumerable = enumerable.Where(x => x.StoreId == storeId.Value);
return enumerable;
}
示例3: AddToCart
public virtual void AddToCart(Customer customer, Product product, ShoppingCartType shoppingCartType, int quantity)
{
if (customer == null)
throw new ArgumentNullException("customer");
if (product == null)
throw new ArgumentNullException("product");
var cart = customer.ShoppingCartItems
.Where(sci => sci.ShoppingCartType == shoppingCartType)
.ToList();
var shoppingCartItem = FindShoppingCartItemInTheCart(cart, shoppingCartType, product);
if (shoppingCartItem != null)
{
//update existing shopping cart item
shoppingCartItem.Quantity = shoppingCartItem.Quantity + quantity;
shoppingCartItem.UpdatedOnUtc = DateTime.UtcNow;
_customerService.UpdateCustomer(customer);
}
else
{
//new shopping cart item
DateTime now = DateTime.UtcNow;
shoppingCartItem = new ShoppingCartItem()
{
ShoppingCartType = shoppingCartType,
Product = product,
ItemPrice = product.Price,
Quantity = quantity,
CreatedOnUtc = now,
UpdatedOnUtc = now
};
customer.ShoppingCartItems.Add(shoppingCartItem);
_customerService.UpdateCustomer(customer);
//updated "HasShoppingCartItems" property used for performance optimization
customer.HasShoppingCartItems = customer.ShoppingCartItems.Count > 0;
_customerService.UpdateCustomer(customer);
}
}
示例4: GetShoppingCartItemWarnings
/// <summary>
/// Validates shopping cart item
/// </summary>
/// <param name="customer">Customer</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="productVariant">Product variant</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <param name="customerEnteredPrice">Customer entered price</param>
/// <param name="quantity">Quantity</param>
/// <param name="automaticallyAddRequiredProductVariantsIfEnabled">Automatically add required product variants if enabled</param>
/// <param name="getStandardWarnings">A value indicating whether we should validate a product variant for standard properties</param>
/// <param name="getAttributesWarnings">A value indicating whether we should validate product attributes</param>
/// <param name="getGiftCardWarnings">A value indicating whether we should validate gift card properties</param>
/// <param name="getRequiredProductVariantWarnings">A value indicating whether we should validate required product variants (product variants which require other variant to be added to the cart)</param>
/// <returns>Warnings</returns>
public virtual IList<string> GetShoppingCartItemWarnings(Customer customer, ShoppingCartType shoppingCartType,
ProductVariant productVariant, string selectedAttributes, decimal customerEnteredPrice,
int quantity, bool automaticallyAddRequiredProductVariantsIfEnabled,
bool getStandardWarnings = true, bool getAttributesWarnings = true,
bool getGiftCardWarnings = true, bool getRequiredProductVariantWarnings = true)
{
if (productVariant == null)
throw new ArgumentNullException("productVariant");
var warnings = new List<string>();
//standard properties
if (getStandardWarnings)
warnings.AddRange(GetStandardWarnings(customer, shoppingCartType, productVariant, selectedAttributes, customerEnteredPrice, quantity));
//selected attributes
if (getAttributesWarnings)
warnings.AddRange(GetShoppingCartItemAttributeWarnings(shoppingCartType, productVariant, selectedAttributes));
//gift cards
if (getGiftCardWarnings)
warnings.AddRange(GetShoppingCartItemGiftCardWarnings(shoppingCartType, productVariant, selectedAttributes));
//required product variants
if (getRequiredProductVariantWarnings)
warnings.AddRange(GetRequiredProductVariantWarnings(customer, shoppingCartType, productVariant, automaticallyAddRequiredProductVariantsIfEnabled));
return warnings;
}
示例5: GetShoppingCartItemAttributeWarnings
/// <summary>
/// Validates shopping cart item attributes
/// </summary>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="productVariant">Product variant</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <returns>Warnings</returns>
public virtual IList<string> GetShoppingCartItemAttributeWarnings(ShoppingCartType shoppingCartType,
ProductVariant productVariant, string selectedAttributes)
{
if (productVariant == null)
throw new ArgumentNullException("productVariant");
var warnings = new List<string>();
//selected attributes
var pva1Collection = _productAttributeParser.ParseProductVariantAttributes(selectedAttributes);
foreach (var pva1 in pva1Collection)
{
var pv1 = pva1.ProductVariant;
if (pv1 != null)
{
if (pv1.Id != productVariant.Id)
{
warnings.Add("Attribute error");
}
}
else
{
warnings.Add("Attribute error");
return warnings;
}
}
//existing product attributes
var pva2Collection = productVariant.ProductVariantAttributes;
foreach (var pva2 in pva2Collection)
{
if (pva2.IsRequired)
{
bool found = false;
//selected product attributes
foreach (var pva1 in pva1Collection)
{
if (pva1.Id == pva2.Id)
{
var pvaValuesStr = _productAttributeParser.ParseValues(selectedAttributes, pva1.Id);
foreach (string str1 in pvaValuesStr)
{
if (!String.IsNullOrEmpty(str1.Trim()))
{
found = true;
break;
}
}
}
}
//if not found
if (!found)
{
if (!string.IsNullOrEmpty(pva2.TextPrompt))
{
warnings.Add(pva2.TextPrompt);
}
else
{
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.SelectAttribute"), pva2.ProductAttribute.GetLocalized(a => a.Name)));
}
}
}
}
return warnings;
}
示例6: FindShoppingCartItemInTheCart
/// <summary>
/// Finds a shopping cart item in the cart
/// </summary>
/// <param name="shoppingCart">Shopping cart</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="productVariant">Product variant</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <param name="customerEnteredPrice">Price entered by a customer</param>
/// <returns>Found shopping cart item</returns>
public virtual ShoppingCartItem FindShoppingCartItemInTheCart(IList<ShoppingCartItem> shoppingCart,
ShoppingCartType shoppingCartType,
ProductVariant productVariant,
string selectedAttributes = "",
decimal customerEnteredPrice = decimal.Zero)
{
if (shoppingCart == null)
throw new ArgumentNullException("shoppingCart");
if (productVariant == null)
throw new ArgumentNullException("productVariant");
foreach (var sci in shoppingCart.Where(a => a.ShoppingCartType == shoppingCartType))
{
if (sci.ProductVariantId == productVariant.Id)
{
//attributes
bool attributesEqual = _productAttributeParser.AreProductAttributesEqual(sci.AttributesXml, selectedAttributes);
//gift cards
bool giftCardInfoSame = true;
if (sci.ProductVariant.IsGiftCard)
{
string giftCardRecipientName1 = string.Empty;
string giftCardRecipientEmail1 = string.Empty;
string giftCardSenderName1 = string.Empty;
string giftCardSenderEmail1 = string.Empty;
string giftCardMessage1 = string.Empty;
_productAttributeParser.GetGiftCardAttribute(selectedAttributes,
out giftCardRecipientName1, out giftCardRecipientEmail1,
out giftCardSenderName1, out giftCardSenderEmail1, out giftCardMessage1);
string giftCardRecipientName2 = string.Empty;
string giftCardRecipientEmail2 = string.Empty;
string giftCardSenderName2 = string.Empty;
string giftCardSenderEmail2 = string.Empty;
string giftCardMessage2 = string.Empty;
_productAttributeParser.GetGiftCardAttribute(sci.AttributesXml,
out giftCardRecipientName2, out giftCardRecipientEmail2,
out giftCardSenderName2, out giftCardSenderEmail2, out giftCardMessage2);
if (giftCardRecipientName1.ToLowerInvariant() != giftCardRecipientName2.ToLowerInvariant() ||
giftCardSenderName1.ToLowerInvariant() != giftCardSenderName2.ToLowerInvariant())
giftCardInfoSame = false;
}
//price is the same (for products which require customers to enter a price)
bool customerEnteredPricesEqual = true;
if (sci.ProductVariant.CustomerEntersPrice)
customerEnteredPricesEqual = Math.Round(sci.CustomerEnteredPrice, 2) == Math.Round(customerEnteredPrice, 2);
//found?
if (attributesEqual && giftCardInfoSame && customerEnteredPricesEqual)
return sci;
}
}
return null;
}
示例7: ClearShoppingCart
public static void ClearShoppingCart(ShoppingCartType shoppingCartType, Guid customerId)
{
SQLDataAccess.ExecuteNonQuery
("DELETE FROM Catalog.ShoppingCart WHERE ShoppingCartType = @ShoppingCartType and CustomerId = @CustomerId",
CommandType.Text,
new SqlParameter { ParameterName = "@ShoppingCartType", Value = (int)shoppingCartType },
new SqlParameter { ParameterName = "@CustomerId", Value = customerId }
);
}
示例8: GetShoppingCart
public static ShoppingCart GetShoppingCart(ShoppingCartType shoppingCartType, Guid customerId)
{
var templist = SQLDataAccess.ExecuteReadList
("SELECT * FROM Catalog.ShoppingCart WHERE ShoppingCartType = @ShoppingCartType and CustomerId = @CustomerId",
CommandType.Text, GetFromReader,
new SqlParameter { ParameterName = "@ShoppingCartType", Value = (int)shoppingCartType },
new SqlParameter { ParameterName = "@CustomerId", Value = customerId }
);
var shoppingCart = new ShoppingCart();
shoppingCart.AddRange(templist);
return shoppingCart;
}
示例9: GetExistsShoppingCartItem
public static ShoppingCartItem GetExistsShoppingCartItem(Guid customerId, int offerId, string attributesXml, ShoppingCartType shoppingCartType)
{
return SQLDataAccess.ExecuteReadOne<ShoppingCartItem>(" SELECT * FROM [Catalog].[ShoppingCart] " +
" WHERE [CustomerId] = @CustomerId AND " +
" [OfferId] = @OfferId AND " +
" [ShoppingCartType] = @ShoppingCartType AND " +
" [AttributesXml] = @AttributesXml",
CommandType.Text,
(reader) => new ShoppingCartItem
{
ShoppingCartItemId = SQLDataHelper.GetInt(reader, "ShoppingCartItemId"),
ShoppingCartType = (ShoppingCartType)SQLDataHelper.GetInt(reader, "ShoppingCartType"),
OfferId = SQLDataHelper.GetInt(reader, "OfferID"),
CustomerId = SQLDataHelper.GetGuid(reader, "CustomerId"),
AttributesXml = SQLDataHelper.GetString(reader, "AttributesXml"),
Amount = SQLDataHelper.GetInt(reader, "Amount"),
CreatedOn = SQLDataHelper.GetDateTime(reader, "CreatedOn"),
UpdatedOn = SQLDataHelper.GetDateTime(reader, "UpdatedOn"),
DesirePrice = SQLDataHelper.GetNullableFloat(reader, "DesirePrice"),
},
new SqlParameter { ParameterName = "@CustomerId", Value = customerId },
new SqlParameter { ParameterName = "@OfferId", Value = offerId },
new SqlParameter { ParameterName = "@AttributesXml", Value = attributesXml ?? String.Empty },
new SqlParameter { ParameterName = "@ShoppingCartType", Value = (int)shoppingCartType }
);
}
示例10: GetAllCustomers
/// <summary>
/// Gets all customers
/// </summary>
/// <param name="createdFromUtc">Created date from (UTC); null to load all records</param>
/// <param name="createdToUtc">Created date to (UTC); null to load all records</param>
/// <param name="affiliateId">Affiliate identifier</param>
/// <param name="vendorId">Vendor identifier</param>
/// <param name="customerRoleIds">A list of customer role identifiers to filter by (at least one match); pass null or empty list in order to load all customers; </param>
/// <param name="email">Email; null to load all customers</param>
/// <param name="username">Username; null to load all customers</param>
/// <param name="firstName">First name; null to load all customers</param>
/// <param name="lastName">Last name; null to load all customers</param>
/// <param name="dayOfBirth">Day of birth; 0 to load all customers</param>
/// <param name="monthOfBirth">Month of birth; 0 to load all customers</param>
/// <param name="company">Company; null to load all customers</param>
/// <param name="phone">Phone; null to load all customers</param>
/// <param name="zipPostalCode">Phone; null to load all customers</param>
/// <param name="loadOnlyWithShoppingCart">Value indicating whether to load customers only with shopping cart</param>
/// <param name="sct">Value indicating what shopping cart type to filter; userd when 'loadOnlyWithShoppingCart' param is 'true'</param>
/// <param name="pageIndex">Page index</param>
/// <param name="pageSize">Page size</param>
/// <returns>Customers</returns>
public virtual IPagedList<Customer> GetAllCustomers(DateTime? createdFromUtc = null,
DateTime? createdToUtc = null, int affiliateId = 0, int vendorId = 0,
int[] customerRoleIds = null, string email = null, string username = null,
string firstName = null, string lastName = null,
int dayOfBirth = 0, int monthOfBirth = 0,
string company = null, string phone = null, string zipPostalCode = null,
bool loadOnlyWithShoppingCart = false, ShoppingCartType? sct = null,
int pageIndex = 0, int pageSize = 2147483647)
{
var query = _customerRepository.Table;
if (createdFromUtc.HasValue)
query = query.Where(c => createdFromUtc.Value <= c.CreatedOnUtc);
if (createdToUtc.HasValue)
query = query.Where(c => createdToUtc.Value >= c.CreatedOnUtc);
if (affiliateId > 0)
query = query.Where(c => affiliateId == c.AffiliateId);
if (vendorId > 0)
query = query.Where(c => vendorId == c.VendorId);
query = query.Where(c => !c.Deleted);
if (customerRoleIds != null && customerRoleIds.Length > 0)
query = query.Where(c => c.CustomerRoles.Any(x => customerRoleIds.Contains(x.Id)));
if (!String.IsNullOrWhiteSpace(email))
query = query.Where(c => c.Email!=null && c.Email.ToLower().Contains(email.ToLower()));
if (!String.IsNullOrWhiteSpace(username))
query = query.Where(c => c.Username!=null && c.Username.ToLower().Contains(username.ToLower()));
if (!String.IsNullOrWhiteSpace(firstName))
{
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.FirstName && y.Value!=null && y.Value.ToLower().Contains(firstName.ToLower())));
}
if (!String.IsNullOrWhiteSpace(lastName))
{
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.LastName && y.Value != null && y.Value.ToLower().Contains(lastName.ToLower())));
}
//date of birth is stored as a string into database.
//we also know that date of birth is stored in the following format YYYY-MM-DD (for example, 1983-02-18).
//so let's search it as a string
if (dayOfBirth > 0 && monthOfBirth > 0)
{
//both are specified
string dateOfBirthStr = monthOfBirth.ToString("00", CultureInfo.InvariantCulture) + "-" + dayOfBirth.ToString("00", CultureInfo.InvariantCulture);
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.DateOfBirth && y.Value != null && y.Value.ToLower().Contains(dateOfBirthStr.ToLower())));
}
else if (dayOfBirth > 0)
{
//only day is specified
string dateOfBirthStr = dayOfBirth.ToString("00", CultureInfo.InvariantCulture);
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.DateOfBirth && y.Value != null && y.Value.ToLower().Contains(dateOfBirthStr.ToLower())));
}
else if (monthOfBirth > 0)
{
//only month is specified
string dateOfBirthStr = "-" + monthOfBirth.ToString("00", CultureInfo.InvariantCulture) + "-";
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.DateOfBirth && y.Value != null && y.Value.ToLower().Contains(dateOfBirthStr.ToLower())));
}
//search by company
if (!String.IsNullOrWhiteSpace(company))
{
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.Company && y.Value != null && y.Value.ToLower().Contains(company.ToLower())));
}
//search by phone
if (!String.IsNullOrWhiteSpace(phone))
{
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.Phone && y.Value != null && y.Value.ToLower().Contains(phone.ToLower())));
}
//search by zip
if (!String.IsNullOrWhiteSpace(zipPostalCode))
{
query = query.Where(x => x.GenericAttributes.Any(y => y.Key == SystemCustomerAttributeNames.ZipPostalCode && y.Value != null && y.Value.ToLower().Contains(zipPostalCode.ToLower())));
}
if (loadOnlyWithShoppingCart)
{
//.........这里部分代码省略.........
示例11: AddToCart
/// <summary>
/// Add a product to shopping cart
/// </summary>
/// <param name="customer">Customer</param>
/// <param name="product">Product</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="storeId">Store identifier</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <param name="customerEnteredPrice">The price enter by a customer</param>
/// <param name="quantity">Quantity</param>
/// <param name="automaticallyAddRequiredProductsIfEnabled">Automatically add required products if enabled</param>
/// <param name="shoppingCartItemId">Identifier fo the new shopping cart item</param>
/// <param name="parentItemId">Identifier of the parent shopping cart item</param>
/// <param name="bundleItem">Product bundle item</param>
/// <returns>Warnings</returns>
public virtual IList<string> AddToCart(Customer customer, Product product,
ShoppingCartType shoppingCartType, int storeId, string selectedAttributes,
decimal customerEnteredPrice, int quantity, bool automaticallyAddRequiredProductsIfEnabled,
out int shoppingCartItemId, int? parentItemId = null, ProductBundleItem bundleItem = null)
{
shoppingCartItemId = 0;
if (customer == null)
throw new ArgumentNullException("customer");
if (product == null)
throw new ArgumentNullException("product");
var warnings = new List<string>();
if (shoppingCartType == ShoppingCartType.ShoppingCart && !_permissionService.Authorize(StandardPermissionProvider.EnableShoppingCart, customer))
{
warnings.Add("Shopping cart is disabled");
return warnings;
}
if (shoppingCartType == ShoppingCartType.Wishlist && !_permissionService.Authorize(StandardPermissionProvider.EnableWishlist, customer))
{
warnings.Add("Wishlist is disabled");
return warnings;
}
if (quantity <= 0)
{
warnings.Add(_localizationService.GetResource("ShoppingCart.QuantityShouldPositive"));
return warnings;
}
if (parentItemId.HasValue && (parentItemId.Value == 0 || bundleItem == null || bundleItem.Id == 0))
{
warnings.Add(_localizationService.GetResource("ShoppingCart.Bundle.BundleItemNotFound").FormatWith(bundleItem.GetLocalizedName()));
return warnings;
}
//reset checkout info
_customerService.ResetCheckoutData(customer, storeId);
var cart = customer.GetCartItems(shoppingCartType, storeId);
OrganizedShoppingCartItem shoppingCartItem = null;
if (bundleItem == null)
{
shoppingCartItem = FindShoppingCartItemInTheCart(cart, shoppingCartType, product, selectedAttributes, customerEnteredPrice);
}
if (shoppingCartItem != null)
{
//update existing shopping cart item
int newQuantity = shoppingCartItem.Item.Quantity + quantity;
warnings.AddRange(
GetShoppingCartItemWarnings(customer, shoppingCartType, product, storeId, selectedAttributes, customerEnteredPrice, newQuantity,
automaticallyAddRequiredProductsIfEnabled, bundleItem: bundleItem)
);
if (warnings.Count == 0)
{
shoppingCartItem.Item.AttributesXml = selectedAttributes;
shoppingCartItem.Item.Quantity = newQuantity;
shoppingCartItem.Item.UpdatedOnUtc = DateTime.UtcNow;
_customerService.UpdateCustomer(customer);
//event notification
_eventPublisher.EntityUpdated(shoppingCartItem.Item);
}
}
else
{
//new shopping cart item
warnings.AddRange(
GetShoppingCartItemWarnings(customer, shoppingCartType, product, storeId, selectedAttributes, customerEnteredPrice, quantity,
automaticallyAddRequiredProductsIfEnabled, bundleItem: bundleItem)
);
if (warnings.Count == 0)
{
//maximum items validation
switch (shoppingCartType)
{
case ShoppingCartType.ShoppingCart:
if (cart.Count >= _shoppingCartSettings.MaximumShoppingCartItems)
{
//.........这里部分代码省略.........
示例12: GetShoppingCartItemWarnings
/// <summary>
/// Validates shopping cart item
/// </summary>
/// <param name="customer">Customer</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="product">Product</param>
/// <param name="storeId">Store identifier</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <param name="customerEnteredPrice">Customer entered price</param>
/// <param name="quantity">Quantity</param>
/// <param name="automaticallyAddRequiredProductsIfEnabled">Automatically add required products if enabled</param>
/// <param name="getStandardWarnings">A value indicating whether we should validate a product for standard properties</param>
/// <param name="getAttributesWarnings">A value indicating whether we should validate product attributes</param>
/// <param name="getGiftCardWarnings">A value indicating whether we should validate gift card properties</param>
/// <param name="getRequiredProductWarnings">A value indicating whether we should validate required products (products which require other products to be added to the cart)</param>
/// <param name="getBundleWarnings">A value indicating whether we should validate bundle and bundle items</param>
/// <param name="bundleItem">Product bundle item if bundles should be validated</param>
/// <param name="childItems">Child cart items to validate bundle items</param>
/// <returns>Warnings</returns>
public virtual IList<string> GetShoppingCartItemWarnings(Customer customer, ShoppingCartType shoppingCartType,
Product product, int storeId,
string selectedAttributes, decimal customerEnteredPrice,
int quantity, bool automaticallyAddRequiredProductsIfEnabled,
bool getStandardWarnings = true, bool getAttributesWarnings = true,
bool getGiftCardWarnings = true, bool getRequiredProductWarnings = true,
bool getBundleWarnings = true, ProductBundleItem bundleItem = null, IList<OrganizedShoppingCartItem> childItems = null)
{
if (product == null)
throw new ArgumentNullException("product");
var warnings = new List<string>();
//standard properties
if (getStandardWarnings)
warnings.AddRange(GetStandardWarnings(customer, shoppingCartType, product, selectedAttributes, customerEnteredPrice, quantity));
//selected attributes
if (getAttributesWarnings)
warnings.AddRange(GetShoppingCartItemAttributeWarnings(customer, shoppingCartType, product, selectedAttributes, quantity, bundleItem));
//gift cards
if (getGiftCardWarnings)
warnings.AddRange(GetShoppingCartItemGiftCardWarnings(shoppingCartType, product, selectedAttributes));
//required products
if (getRequiredProductWarnings)
warnings.AddRange(GetRequiredProductWarnings(customer, shoppingCartType, product, storeId, automaticallyAddRequiredProductsIfEnabled));
// bundle and bundle item warnings
if (getBundleWarnings)
{
if (bundleItem != null)
warnings.AddRange(GetBundleItemWarnings(bundleItem));
if (childItems != null)
warnings.AddRange(GetBundleItemWarnings(childItems));
}
return warnings;
}
示例13: GetShoppingCartItemAttributeWarnings
/// <summary>
/// Validates shopping cart item attributes
/// </summary>
/// <param name="customer">The customer</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="product">Product</param>
/// <param name="selectedAttributes">Selected attributes</param>
/// <param name="quantity">Quantity</param>
/// <param name="bundleItem">Product bundle item</param>
/// <returns>Warnings</returns>
public virtual IList<string> GetShoppingCartItemAttributeWarnings(Customer customer, ShoppingCartType shoppingCartType,
Product product, string selectedAttributes, int quantity = 1, ProductBundleItem bundleItem = null)
{
if (product == null)
throw new ArgumentNullException("product");
var warnings = new List<string>();
if (bundleItem != null && !bundleItem.BundleProduct.BundlePerItemPricing)
return warnings; // customer cannot select anything... selectedAttribute is always empty
//selected attributes
var pva1Collection = _productAttributeParser.ParseProductVariantAttributes(selectedAttributes);
foreach (var pva1 in pva1Collection)
{
var pv1 = pva1.Product;
if (pv1 != null)
{
if (pv1.Id != product.Id)
{
warnings.Add("Attribute error");
}
}
else
{
warnings.Add("Attribute error");
return warnings;
}
}
//existing product attributes
var pva2Collection = product.ProductVariantAttributes;
foreach (var pva2 in pva2Collection)
{
if (pva2.IsRequired)
{
bool found = false;
//selected product attributes
foreach (var pva1 in pva1Collection)
{
if (pva1.Id == pva2.Id)
{
var pvaValuesStr = _productAttributeParser.ParseValues(selectedAttributes, pva1.Id);
foreach (string str1 in pvaValuesStr)
{
if (!String.IsNullOrEmpty(str1.Trim()))
{
found = true;
break;
}
}
}
}
if (!found && bundleItem != null && bundleItem.FilterAttributes && !bundleItem.AttributeFilters.Exists(x => x.AttributeId == pva2.ProductAttributeId))
{
found = true; // attribute is filtered out on bundle item level... it cannot be selected by customer
}
if (!found)
{
if (pva2.TextPrompt.HasValue())
warnings.Add(pva2.TextPrompt);
else
warnings.Add(string.Format(_localizationService.GetResource("ShoppingCart.SelectAttribute"), pva2.ProductAttribute.GetLocalized(a => a.Name)));
}
}
}
if (warnings.Count == 0)
{
var pvaValues = _productAttributeParser.ParseProductVariantAttributeValues(selectedAttributes);
foreach (var pvaValue in pvaValues)
{
if (pvaValue.ValueType == ProductVariantAttributeValueType.ProductLinkage)
{
var linkedProduct = _productService.GetProductById(pvaValue.LinkedProductId);
if (linkedProduct != null)
{
var linkageWarnings = GetShoppingCartItemWarnings(customer, shoppingCartType, linkedProduct, _storeContext.CurrentStore.Id,
"", decimal.Zero, quantity * pvaValue.Quantity, false, true, true, true, true);
foreach (var linkageWarning in linkageWarnings)
{
string msg = _localizationService.GetResource("ShoppingCart.ProductLinkageAttributeWarning").FormatWith(
pvaValue.ProductVariantAttribute.ProductAttribute.GetLocalized(a => a.Name),
pvaValue.GetLocalized(a => a.Name),
linkageWarning);
warnings.Add(msg);
//.........这里部分代码省略.........
示例14: Copy
public virtual IList<string> Copy(OrganizedShoppingCartItem sci, Customer customer, ShoppingCartType cartType, int storeId, bool addRequiredProductsIfEnabled)
{
if (customer == null)
throw new ArgumentNullException("customer");
if (sci == null)
throw new ArgumentNullException("item");
int parentItemId, childItemId;
var warnings = AddToCart(customer, sci.Item.Product, cartType, storeId, sci.Item.AttributesXml, sci.Item.CustomerEnteredPrice,
sci.Item.Quantity, addRequiredProductsIfEnabled, out parentItemId);
if (warnings.Count == 0 && parentItemId != 0 && sci.ChildItems != null)
{
foreach (var childItem in sci.ChildItems)
{
AddToCart(customer, childItem.Item.Product, cartType, storeId, childItem.Item.AttributesXml, childItem.Item.CustomerEnteredPrice,
childItem.Item.Quantity, false, out childItemId, parentItemId, childItem.Item.BundleItem);
}
}
return warnings;
}
示例15: GetShoppingCartItemWarnings
/// <summary>
/// Validates shopping cart item
/// </summary>
/// <param name="customer">Customer</param>
/// <param name="shoppingCartType">Shopping cart type</param>
/// <param name="product">Product</param>
/// <param name="storeId">Store identifier</param>
/// <param name="attributesXml">Attributes in XML format</param>
/// <param name="customerEnteredPrice">Customer entered price</param>
/// <param name="rentalStartDate">Rental start date</param>
/// <param name="rentalEndDate">Rental end date</param>
/// <param name="quantity">Quantity</param>
/// <param name="automaticallyAddRequiredProductsIfEnabled">Automatically add required products if enabled</param>
/// <param name="getStandardWarnings">A value indicating whether we should validate a product for standard properties</param>
/// <param name="getAttributesWarnings">A value indicating whether we should validate product attributes</param>
/// <param name="getGiftCardWarnings">A value indicating whether we should validate gift card properties</param>
/// <param name="getRequiredProductWarnings">A value indicating whether we should validate required products (products which require other products to be added to the cart)</param>
/// <param name="getRentalWarnings">A value indicating whether we should validate rental properties</param>
/// <returns>Warnings</returns>
public virtual IList<string> GetShoppingCartItemWarnings(Customer customer, ShoppingCartType shoppingCartType,
Product product, int storeId,
string attributesXml, decimal customerEnteredPrice,
DateTime? rentalStartDate = null, DateTime? rentalEndDate = null,
int quantity = 1, bool automaticallyAddRequiredProductsIfEnabled = true,
bool getStandardWarnings = true, bool getAttributesWarnings = true,
bool getGiftCardWarnings = true, bool getRequiredProductWarnings = true,
bool getRentalWarnings = true)
{
if (product == null)
throw new ArgumentNullException("product");
var warnings = new List<string>();
//standard properties
if (getStandardWarnings)
warnings.AddRange(GetStandardWarnings(customer, shoppingCartType, product, attributesXml, customerEnteredPrice, quantity));
//selected attributes
if (getAttributesWarnings)
warnings.AddRange(GetShoppingCartItemAttributeWarnings(customer, shoppingCartType, product, quantity, attributesXml));
//gift cards
if (getGiftCardWarnings)
warnings.AddRange(GetShoppingCartItemGiftCardWarnings(shoppingCartType, product, attributesXml));
//required products
if (getRequiredProductWarnings)
warnings.AddRange(GetRequiredProductWarnings(customer, shoppingCartType, product, storeId, automaticallyAddRequiredProductsIfEnabled));
//rental products
if (getRentalWarnings)
warnings.AddRange(GetRentalProductWarnings(product, rentalStartDate, rentalEndDate));
return warnings;
}