Пример #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 ApplyAssinedToShippingAndOrderSubtotal(Order newOrder)
 {
     _discountDataService.Query
     .FilterByAvailibilty()
     .Where(x => (x.DiscountType == DiscountType.AssignedToOrderSubTotal ||
                  x.DiscountType == DiscountType.AssignedToShipping) && !x.RequiresCouponCode)
     .ToList().ForEach(x =>
     {
         if (_discountValidator.CanUseInCartBaseOnOrderTotal(x) &&
             _discountValidator.CanUseBaseOnLimitation(x, newOrder.CreatorId))
         {
             _discountApplierHelper.ApplyOnOrder(newOrder, x);
         }
         AddUsageHistory(newOrder, x);
         HandleDiscountReserve(x);
     });
 }
        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);
        }