public List <CouponCodeUsage> GetUsedCouponCodeUsages() { if (_cachedCouponCodeUsages != null) { return(_cachedCouponCodeUsages); } var usedCouponCodes = GetUserCopuponUsagesFromAttributes(); var couponCodeUsages = new List <CouponCodeUsage>(); GetUsedCouponCodeDiscounts().Include(x => x.CouponCodes).ToList().ForEach(x => { if (x.CouponCodeType == CouponCodeType.Multi) { var couponCode = x.CouponCodes.First(c => usedCouponCodes.Contains(x.CouponCode)); var couponUsageResponse = new CouponUsageResponse(); couponCodeUsages.Add(new CouponCodeUsage { Code = couponCode.Code, DisocuntId = x.Id, DiscountName = x.Name, Expired = couponCode.UsedById.HasValue || !_discountValidator.CanUseBaseOnStartAndEndDate(x) || !_discountValidator.CanUseInCartBaseOnOrderTotal(x, couponUsageResponse) || !_discountValidator.CanUseInCartBaseOnProductCategoryAndSku(x, couponUsageResponse), }); } else { var couponUsageResponse = new CouponUsageResponse(); couponCodeUsages.Add(new CouponCodeUsage { Code = x.CouponCode, DisocuntId = x.Id, DiscountName = x.Name, Expired = !_discountValidator.CanUseBaseOnLimitation(x, _currUserId.Value, couponUsageResponse) || !_discountValidator.CanUseBaseOnStartAndEndDate(x) || !_discountValidator.CanUseInCartBaseOnOrderTotal(x, couponUsageResponse) || !_discountValidator.CanUseInCartBaseOnProductCategoryAndSku(x, couponUsageResponse), Message = couponUsageResponse.Message }); } }); _cachedCouponCodeUsages = couponCodeUsages; return(couponCodeUsages); }
public async Task <CouponUsageResponse> AddCouponCodeUsage(string coupon) { var res = new CouponUsageResponse { Succeed = false, Message = "کد تخفیف وارد شده معتبر نمی باشد." }; var currUserId = _identityManager.GetCurrentIdentity().GetUserId().ToGuid(); var discount = _discountDataService.Query.FirstOrDefault(x => x.CouponCode == coupon || x.CouponCodes.Any(cc => cc.Code == coupon)); if (discount == null) { return(res); } if (!_discountValidator.CanUseBaseOnStartAndEndDate(discount)) { return(res); } if (!_discountValidator.CanUseBaseOnLimitation(discount, currUserId, res)) { return(res); } if (!_discountValidator.CanUseInCartBaseOnProductCategoryAndSku(discount, res)) { return(res); } if (!_discountValidator.CanUseInCartBaseOnOrderTotal(discount, res)) { return(res); } _discounts.Add(discount); res.Succeed = true; res.Message = "کپن تخفیف اعمال شد"; return(res); }