public Inventory() { InventoryList = new List <InventoryModel>(); var product = new InventoryModel { ProductName = "Aged Brie", SellIn = 1, QualityRating = 1, Type = ProductType.Aged }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Christmas Crackers", SellIn = -1, QualityRating = 2, Type = ProductType.Seasonal }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Christmas Crackers", SellIn = 9, QualityRating = 2, Type = ProductType.Seasonal }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Soap", SellIn = 2, QualityRating = 2, Type = ProductType.NonAging }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Frozen Item", SellIn = -1, QualityRating = 55, Type = ProductType.Frozen }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Frozen Item", SellIn = 2, QualityRating = 2, Type = ProductType.Frozen }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Invalid Item", SellIn = 2, QualityRating = 2, Type = ProductType.Invalid, InValid = true }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Fresh Item", SellIn = 2, QualityRating = 2, Type = ProductType.Fresh }; InventoryList.Add(product); product = new InventoryModel { ProductName = "Fresh Item", SellIn = -1, QualityRating = 5, Type = ProductType.Fresh }; InventoryList.Add(product); }
public List <InventoryModel> UpdateInventory() { var updatedList = new List <InventoryModel>(); foreach (var product in InventoryList) { var newProduct = new InventoryModel(); newProduct.ProductName = product.ProductName; newProduct.SellIn = product.SellIn - 1; switch (product.Type) { case ProductType.Fresh: if (newProduct.SellIn < 0) { newProduct.QualityRating = product.QualityRating > 4 ? product.QualityRating - 4 : 0; } else { newProduct.QualityRating = product.QualityRating > 2 ? product.QualityRating - 2 : 0; } break; case ProductType.Frozen: if (newProduct.SellIn < 0) { newProduct.QualityRating = product.QualityRating > 2 ? product.QualityRating - 2 : 0; } else { newProduct.QualityRating = product.QualityRating > 0 ? product.QualityRating - 1 : 0; } break; case ProductType.Aged: newProduct.QualityRating = product.QualityRating < 50 ? product.QualityRating + 1 : product.QualityRating; break; case ProductType.NonAging: newProduct = product; break; case ProductType.Seasonal: if (newProduct.SellIn > 10) { newProduct.QualityRating = product.QualityRating > 0 ? product.QualityRating - 1 : 0; } else { if (newProduct.SellIn > 3) { newProduct.QualityRating = product.QualityRating < 49 ? product.QualityRating + 2 : product.QualityRating; } else { if (newProduct.SellIn > 0) { newProduct.QualityRating = product.QualityRating < 48 ? product.QualityRating + 3 : product.QualityRating; } else { newProduct.QualityRating = 0; } } } break; default: newProduct.ProductName = "NO SUCH ITEM"; newProduct.SellIn = 0; newProduct.QualityRating = 0; newProduct.InValid = true; break; } updatedList.Add(newProduct); } return(updatedList); }