static bool IsSpecialApplicable(WeightedSpecial special, ProductQuantity[] quantities) { foreach (var specialQuantity in special.Special.Quantities) { if (specialQuantity.Quantity > 0) { if (!quantities.Any(p => p.Name == specialQuantity.Name && p.Quantity >= specialQuantity.Quantity)) { return(false); } } } return(true); }
static ProductQuantity[] ApplySpecial(WeightedSpecial special, ProductQuantity[] quantities) { foreach (var specialQuantity in special.Special.Quantities) { if (specialQuantity.Quantity > 0) { var quantity = quantities.FirstOrDefault(p => p.Name == specialQuantity.Name); { quantity.Quantity -= specialQuantity.Quantity; } } } return(quantities); }