/// <summary> /// Adds or updates <see cref="IProductVariantDetachedContent"/>. /// </summary> /// <param name="destination"> /// The destination. /// </param> /// <param name="display"> /// The display. /// </param> internal static void AddOrUpdateDetachedContent(this IProductBase destination, ProductDisplayBase display) { if (destination.DetachedContents.Any()) { // detached content var removedLanguages = destination.DetachedContents.Where( x => !display.DetachedContents.Select(y => y.CultureName).Contains(x.CultureName)); foreach (var lang in removedLanguages) { destination.DetachedContents.RemoveItem(lang.CultureName); } } foreach (var detachedContent in display.DetachedContents.ToArray()) { if (destination.DetachedContents.Contains(detachedContent.CultureName)) { var destContent = destination.DetachedContents[detachedContent.CultureName]; detachedContent.ToProductVariantDetachedContent(destContent); } else { var variant = display.GetType().IsAssignableFrom(typeof(ProductDisplay)) ? ((ProductDisplay)display).AsMasterVariantDisplay() : (ProductVariantDisplay)display; destination.DetachedContents.Add(detachedContent.ToProductVariantDetachedContent(variant.Key)); } } }
public void UserBuysProduct(string username, string productId) { IUser user = stregsystem.GetUserByUsername(username); IProductBase product = stregsystem.GetProductById(int.Parse(productId)); decimal cost = product.Price; ui.DisplayUserBuysProduct(user, product); stregsystem.BuyProduct(user, product, cost); }
public BuyTransaction BuyProduct(IUser user, IProductBase product, decimal amount) { BuyTransaction buyTransaction = new BuyTransaction(user, DateTime.Now, product); ExecuteTransaction(buyTransaction); return(buyTransaction); }
public void ChangeProductStatus(string[] args, bool status) { if (args[0] != null) { IProductBase product = stregsystem.GetProductById(int.Parse(args[1])); product.IsActive = status; } }
public void ChangeProductCreditStatus(string[] args, bool status) { if (args[0] != null) { IProductBase product = stregsystem.GetProductById(int.Parse(args[1])); product.CanBeBoughtOnCredit = status; Console.WriteLine($"{product.MyId} buy on credit status is now {status}"); } }
private void AssertDetachedContentValues(IProductBase original, IProductBase clone) { // product contents match foreach (var dc in original.DetachedContents.ToArray()) { // this also checks the culture var cloneDc = clone.DetachedContents.FirstOrDefault(x => x.CultureName == dc.CultureName); Assert.NotNull(cloneDc); foreach (var value in dc.DetachedDataValues) { var value1 = value; var cloneValue = cloneDc.DetachedDataValues.FirstOrDefault(x => x.Key == value1.Key); Assert.NotNull(cloneValue); Assert.AreEqual(value.Value, cloneValue.Value); } } }
private void AssertProductBaseData(IProductBase original, IProductBase clone) { Assert.AreEqual(original.Price, clone.Price); Assert.AreEqual(original.Barcode, clone.Barcode); Assert.AreEqual(original.Manufacturer, clone.Manufacturer); Assert.AreEqual(original.ManufacturerModelNumber, clone.ManufacturerModelNumber); Assert.AreEqual(original.CostOfGoods, clone.CostOfGoods); Assert.AreEqual(original.OnSale, clone.OnSale); Assert.AreEqual(original.Taxable, clone.Taxable); Assert.AreEqual(original.Shippable, clone.Shippable); Assert.AreEqual(original.Height, clone.Height); Assert.AreEqual(original.Weight, clone.Weight); Assert.AreEqual(original.Width, clone.Width); Assert.AreEqual(original.Length, clone.Length); Assert.AreEqual(original.CatalogInventories.Count(), clone.CatalogInventories.Count(), "Inventory counts do not match"); Assert.AreEqual(original.Download, clone.Download); Assert.AreEqual(original.OutOfStockPurchase, clone.OutOfStockPurchase); }
/// <summary> /// Adds product base values /// </summary> /// <param name="extendedData"> /// The extended data /// </param> /// <param name="productBase"> /// The base product /// </param> private static void AddBaseProductValues(ExtendedDataCollection extendedData, IProductBase productBase) { extendedData.SetValue(Constants.ExtendedDataKeys.CostOfGoods, productBase.CostOfGoods == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.CostOfGoods).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.Weight, productBase.Weight == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.Weight).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.Width, productBase.Width == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.Width).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.Height, productBase.Height == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.Height).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.Length, productBase.Length == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.Length).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.Barcode, productBase.Barcode); extendedData.SetValue(Constants.ExtendedDataKeys.Price, productBase.Price.ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.OnSale, productBase.OnSale.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.Manufacturer, productBase.Manufacturer); extendedData.SetValue(Constants.ExtendedDataKeys.ManufacturerModelNumber, productBase.ManufacturerModelNumber); extendedData.SetValue(Constants.ExtendedDataKeys.SalePrice, productBase.SalePrice == null ? 0.ToString(CultureInfo.InvariantCulture) : ((decimal)productBase.SalePrice).ToString(CultureInfo.InvariantCulture)); extendedData.SetValue(Constants.ExtendedDataKeys.TrackInventory, productBase.TrackInventory.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.OutOfStockPurchase, productBase.OutOfStockPurchase.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.Taxable, productBase.Taxable.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.Shippable, productBase.Shippable.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.Download, productBase.Download.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.DownloadMediaId, productBase.DownloadMediaId.ToString()); extendedData.SetValue(Constants.ExtendedDataKeys.VersionKey, productBase.VersionKey.ToString()); }
public IProductBase GetProductById(int id) { IProductBase product = Products.Find(x => x.MyId == id); return(product ?? throw new ProductDoesNotExistException("The product does not exist")); }
public BuyTransaction(IUser user, DateTime date, IProductBase product) : base(user, date, product.Price) { Product = product; }
public void DisplayInsufficientCash(IUser user, IProductBase product) { Console.WriteLine($"You've tried to purchase {product.Name}. You do not have the funds"); }
public void DisplayUserBuysProduct(IUser user, IProductBase product) { Console.WriteLine($"{user.UserName}: You have purchased {product.Name}"); }