public int Compare(Object obj, int[] qty, int[] discount) { int counter = 0; MarketingProduct otherProduct = (MarketingProduct)obj; foreach (int quantity in qty) { if (otherProduct.getQty() > quantity) { return(discount[counter]); } counter++; } return(0); }
// method matches marketing product type to the use helper method with respective quality type discount public static void determineQuality(Item item, int[] q1, int[] d1, int[] q2, int[] d2, int[] q3, int[] d3) { double volumeDiscount; double costAfterVolumeDiscount; int volumeDiscountRate; double cartDiscount; double costAfterCartDiscount; MarketingProduct product = (MarketingProduct)item; switch (product.getQuality()) { case "expensive": printMarketingDiscounts(q1, d1); volumeDiscountRate = getDiscountRate(q1, d1, product.getQty()); // straight cost WriteLine($"\nCost with no discount: {product.straightCost():C}"); // volume discount volumeDiscount = product.discountAmount(volumeDiscountRate); WriteLine($"Volume rate: {volumeDiscountRate:0.00} %, discount: {volumeDiscount:C}"); costAfterVolumeDiscount = product.straightCost() - volumeDiscount; WriteLine($"Cost after Volume discount {costAfterVolumeDiscount:C}"); // whole cart discount cartDiscount = wholeCartDiscount(product.straightCost()); WriteLine($"Whole cart discount: {cartDiscount:C}"); costAfterCartDiscount = product.straightCost() - cartDiscount; WriteLine($"Cost after cart discount {costAfterCartDiscount:C}"); // totals totalStraightCost += product.straightCost(); totalVolumeDiscount += costAfterVolumeDiscount; totalCartDiscount += costAfterCartDiscount; break; case "medium": printMarketingDiscounts(q2, d2); volumeDiscountRate = getDiscountRate(q2, d2, product.getQty()); // straight cost WriteLine($"\nCost with no discount: {product.straightCost():C}"); // volume discount volumeDiscount = product.discountAmount(volumeDiscountRate); WriteLine($"Volume rate: {volumeDiscountRate:0.00} %, discount: {volumeDiscount:C}"); costAfterVolumeDiscount = product.straightCost() - volumeDiscount; WriteLine($"Cost after Volume discount {costAfterVolumeDiscount:C}"); // whole cart discount cartDiscount = wholeCartDiscount(product.straightCost()); WriteLine($"Whole cart discount: {cartDiscount:C}"); costAfterCartDiscount = product.straightCost() - cartDiscount; WriteLine($"Cost after cart discount {costAfterCartDiscount:C}"); // totals totalStraightCost += product.straightCost(); totalVolumeDiscount += costAfterVolumeDiscount; totalCartDiscount += costAfterCartDiscount; break; case "cheap": printMarketingDiscounts(q3, d3); volumeDiscountRate = getDiscountRate(q3, d3, product.getQty()); // straight cost WriteLine($"\nCost with no discount: {product.straightCost():C}"); // volume discount volumeDiscount = product.discountAmount(volumeDiscountRate); WriteLine($"Volume rate: {volumeDiscountRate:0.00} %, discount: {volumeDiscount:C}"); costAfterVolumeDiscount = product.straightCost() - volumeDiscount; WriteLine($"Cost after Volume discount {costAfterVolumeDiscount:C}"); // whole cart discount cartDiscount = wholeCartDiscount(product.straightCost()); WriteLine($"Whole cart discount: {cartDiscount:C}"); costAfterCartDiscount = product.straightCost() - cartDiscount; WriteLine($"Cost after cart discount {costAfterCartDiscount:C}"); // totals totalStraightCost += product.straightCost(); totalVolumeDiscount += costAfterVolumeDiscount; totalCartDiscount += costAfterCartDiscount; break; default: WriteLine("Quality type doesn't match"); break; } }
static void Main(string[] args) { // hardcode marketing products Item[] items = new Item[4]; //items[0] = new MarketingProduct("P123", "coffee mug", 12.29, 100, "expensive"); //items[1] = new MarketingProduct("P987", "magnet, large", 3.29, 100, "expensive"); //items[2] = new MarketingProduct("P547", "stuffed bear", 11.99, 30, "medium"); //items[3] = new MarketingProduct("P879", "note cube", 2.50, 100, "cheap"); items[0] = new MarketingProduct("P123", "coffee mug", 12.29, 40, "expensive"); items[1] = new MarketingProduct("P987", "magnet, large", 3.29, 10, "expensive"); items[2] = new MarketingProduct("P547", "stuffed bear", 11.99, 8, "medium"); items[3] = new MarketingProduct("P879", "note cube", 2.50, 90, "cheap"); // MARKETING Product Bulk Pricing // Expensive items int[] expensiveQty = new int[3] { 50, 30, 15 }; int[] expensiveDiscount = new int[3] { 20, 10, 5 }; // Medium int[] medQty = new int[3] { 20, 10, 5 }; int[] medDiscount = new int[3] { 12, 8, 3 }; // Cheap items int[] cheapQty = new int[3] { 150, 100, 50 }; int[] cheapDiscount = new int[3] { 20, 10, 5 }; // SHIPPING zone shipping discount int[] distance = new int[3] { 1000, 500, 100 }; // miles int[] pricing = new int[3] { 50, 35, 20 }; // per box WriteLine("SDEV 2410 Final Project by Kristoffer Keene\n"); WriteLine("First Part: Purchasing Products"); foreach (Item item in items) { WriteLine(item); determineQuality(item, expensiveQty, expensiveDiscount, medQty, medDiscount, cheapQty, cheapDiscount); WriteLine(); } WriteLine("Summary:"); WriteLine($" Straight Cost: {totalStraightCost:C}"); WriteLine($"Volume Discounts: {totalVolumeDiscount:C}"); WriteLine($" Cart Discount: {totalCartDiscount:C}"); WriteLine("\nPart B: Shipping\n"); // hardcode shipping boxes Item[] boxes = new Item[4]; //boxes[0] = new ShippingBox("S678", "Miami FL", 10, 2000, 11.5, 8.5, 4, 5.2); //boxes[1] = new ShippingBox("S449", "Chicago IL", 25, 800, 5, 5, 5, 12.3); //boxes[2] = new ShippingBox("S721", "Denver CO", 30, 150, 6.5, 6.5, 3, 2.5); //boxes[3] = new ShippingBox("S678", "SLC UT", 50, 30, 14, 8, 1, 1.5); boxes[0] = new ShippingBox("S678", "Miami FL", 10, 9000, 11.5, 8.5, 4, 5.2); boxes[1] = new ShippingBox("S449", "Chicago IL", 25, 400, 5, 5, 5, 12.3); boxes[2] = new ShippingBox("S721", "Denver CO", 30, 150, 6.5, 6.5, 3, 2.5); boxes[3] = new ShippingBox("S678", "SLC UT", 50, 30, 14, 8, 1, 1.5); foreach (Item item in boxes) { WriteLine(item); printShippingDiscounts(distance, pricing); determineShipping(item, distance, pricing); WriteLine(); } WriteLine("Summary:"); WriteLine($"Zone shipping costs: {totalZoneShipping:C}"); WriteLine($" Flat rate cost: {totalFlatRate:C}"); //pause WriteLine("\nPress any key to continue"); ReadKey(); }