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; } }