public CheckCodeResult CheckCode(CartModel cart, string discountCode, bool fromUrl) { DateTime now = CurrentRequestData.Now; var code = discountCode.Trim(); var query = _session.QueryOver <Discount>().Where(x => (x.Code == code && x.RequiresCode) && (x.ValidFrom == null || x.ValidFrom <= now) && (x.ValidUntil == null || x.ValidUntil >= now)); if (fromUrl) { query = query.Where(x => x.CanBeAppliedFromUrl); } var discount = query.Cacheable().List().FirstOrDefault(); var defaultRedirectUrl = "/"; var checkCodeResult = new CheckCodeResult { RedirectUrl = discount != null ? string.IsNullOrEmpty(discount.RedirectUrl) ? defaultRedirectUrl : discount.RedirectUrl : defaultRedirectUrl, }; if (discount == null) { checkCodeResult.Message = _stringResourceProvider.GetValue("The code you entered is not valid."); return(checkCodeResult); } var discounts = Get(cart, cart.DiscountCodes); discounts.Add(discount); var checkLimitationsResult = _cartDiscountApplicationService.CheckLimitations(discount, cart, discounts); if (checkLimitationsResult.Status == CheckLimitationsResultStatus.NeverValid) { checkCodeResult.Message = checkLimitationsResult.FormattedMessage; return(checkCodeResult); } checkCodeResult.Status = checkLimitationsResult.Status == CheckLimitationsResultStatus.CurrentlyInvalid ? CheckLimitationsResultStatus.CurrentlyInvalid : CheckLimitationsResultStatus.Success; if (fromUrl && checkLimitationsResult.Status == CheckLimitationsResultStatus.CurrentlyInvalid) { checkCodeResult.Message = string.IsNullOrWhiteSpace(discount.AppliedNotYetValidMessage) ? checkLimitationsResult.FormattedMessage : discount.AppliedNotYetValidMessage; } else { checkCodeResult.Message = discount.SuccessMessage; } return(checkCodeResult); }
public CheckCodeResult AddDiscountCode(string code) { HashSet <string> codes = _cartDiscountCodeService.Get(); CheckCodeResult codeResult = _getValidDiscounts.CheckCode(_cart, code); if (codeResult.Success) { codes.Add(code); _cartDiscountCodeService.SaveDiscounts(codes); } return(codeResult); }
public CheckCodeResult AddDiscountCode(string code, bool fromUrl, Uri referrer = null) { HashSet <string> codes = _cartDiscountCodeService.Get(); CheckCodeResult codeResult = _getValidDiscounts.CheckCode(_cart, code, fromUrl); if (codeResult.Success) { codes.Add(code); _cartDiscountCodeService.SaveDiscounts(codes); } if (referrer != null && (!referrer.IsAbsoluteUri || referrer.Authority == _site.BaseUrl)) { codeResult.RedirectUrl = referrer.ToString(); } return(codeResult); }