Esempio n. 1
0
        public void ApplyVoucher(Voucher voucher)
        {
            if (_appliedVouchers.Any(v => v.Id == voucher.Id))
            {
                return;
            }

            if (_appliedVouchers.Any(v => v is OfferVoucher))
            {
                return;
            }

            var result = voucher.ApplyTo(this);

            _appliedVouchers.Add(voucher);
            _voucherResults.Add(result);
            if (!(result is VoucherIsValidResult validDiscount))
            {
                return;
            }

            DiscountedTotal -= validDiscount.ApplicableDiscount;
            if (DiscountedTotal < 0)
            {
                DiscountedTotal = 0;
            }
        }