Пример #1
0
        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);
        }
Пример #2
0
 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);
        }