public async Task <CouponUsageResponse> AddCouponCodeUsage(string coupon) { var res = new CouponUsageResponse { Succeed = false, Message = "کد تخفیف وارد شده معتبر نمی باشد." }; var currUserId = _identityManager.GetCurrentIdentity().GetUserId().ToGuid(); var discount = await _discountDataService.Query.FirstOrDefaultAsync(x => x.CouponCode == coupon || x.CouponCodes.Any(cc => cc.Code == coupon)); if (discount == null) { return(res); } if (_couponCodeDataService.Query.Any(x => x.Code == coupon && (x.Reserved || x.UsedById.HasValue))) { res.Message = "این کد تخفیف منقضی شده"; } if (discount.CouponCodeType == CouponCodeType.Single && !_discountValidator.CanUseBaseOnLimitation(discount, currUserId, res)) { return(res); } if (!_discountValidator.CanUseInCartBaseOnProductCategoryAndSku(discount, res)) { return(res); } if (!_discountValidator.CanUseInCartBaseOnOrderTotal(discount, res)) { return(res); } var exiting = GetCustomAttribute(UserAttributes.CouponCodeUsage + coupon); if (exiting == null) { await SaveCustomAttributeAsync(UserAttributes.CouponCodeUsage + coupon, coupon); } res.Succeed = true; res.Message = "کپن تخفیف اعمال شد"; _cachedCouponCodeUsages?.Add(new CouponCodeUsage() { Code = coupon, DisocuntId = discount.Id, DiscountName = discount.Name }); return(res); }
private void ApplyGlobalProductDiscounts(Order newOrder) { foreach (var item in newOrder.OrderItems) { var productDiscounts = GetProductAvilableDiscounts(item.Product); foreach (var discount in productDiscounts) { if (_discountValidator.CanUseInCartBaseOnProductCategoryAndSku(discount) && _discountValidator.CanUseBaseOnLimitation(discount, newOrder.CreatorId)) { _discountApplierHelper.ApplyOnOrderItem(item, discount); AddUsageHistory(newOrder, discount); HandleDiscountReserve(discount); } } } }
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); }