public string Verification(PromotionCouponCreateRequest request)
 {
     var promotionEntity = _promotionRepository.GetItem(request.PromotionId);
     string err = Verification(promotionEntity);
     if (!string.IsNullOrEmpty(err))
         return err;
     if (promotionEntity.IsLimitPerUser.HasValue &&
         promotionEntity.IsLimitPerUser.Value)
     {
         var existCoupon = _couponRepo.Get(c => c.FromPromotion == request.PromotionId && c.User_Id == request.AuthUser.Id && c.Status != (int)DataStatus.Deleted).FirstOrDefault();
         if (existCoupon != null)
             return "该优惠活动每人限领一次,您已经领过了。";
     }
     return null;
 }
        public RestfulResult Coupon(FormCollection formCollection, PromotionCouponCreateRequest request, int? authuid, UserModel authUser)
        {
            request.AuthUid = authuid.Value;
            request.AuthUser = authUser;
            if (System.String.Compare(request.Method, DefineRestfulMethod.Create, System.StringComparison.OrdinalIgnoreCase) == 0)
            {
                var result =
                this._promotionDataService.CreateCoupon(request);

                if (request.IsPass == 1 && result.Data != null && result.Data.CouponCodeResponse != null)
                {
                    var code = result.Data.CouponCodeResponse;
                    result.Data.CouponCodeResponse.Pass = _passHelper.GetPass(ControllerContext.HttpContext, code.Id,
                                                                              code.CouponId, code.User_Id);

                    //result.Data.CouponCodeResponse.Pass = PassController.GetPass(ControllerContext, result.Data.CouponCodeResponse.Id,
                    //                                                             result.Data.CouponCodeResponse.CouponId,
                    //                                                             result.Data.CouponCodeResponse
                    //                                                                   .ProductName,
                    //                                                             result.Data.CouponCodeResponse
                    //                                                                   .ProductDescription, null, result.Data.CouponCodeResponse.User_Id);

                }

                return new RestfulResult
                {
                    Data = result
                };
            }

            return new RestfulResult { Data = new ExecuteResult { StatusCode = StatusCode.ClientError, Message = "参数错误" } };
        }
        /// <summary>
        /// 创建优惠卷
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public ExecuteResult<PromotionInfoResponse> CreateCoupon(PromotionCouponCreateRequest request)
        {
            
            var str = _promotionService.Verification(request);
            if (!String.IsNullOrEmpty(str))
            {
                return new ExecuteResult<PromotionInfoResponse>(null) { StatusCode = StatusCode.ClientError, Message = str };
            }

            ExecuteResult<CouponCodeResponse> coupon = null;
            using (var ts = new TransactionScope())
            {
                coupon = _couponDataService.CreateCoupon(new CouponCouponRequest
                    {
                        AuthUid = request.AuthUid,
                        PromotionId = request.PromotionId,
                        ProductId = 0,
                        SourceType = (int)SourceType.Promotion,
                        Token = request.Token,
                        AuthUser = request.AuthUser,
                        Method = request.Method,
                        Client_Version = request.Client_Version
                    });

                if (!coupon.IsSuccess)
                {
                    return new ExecuteResult<PromotionInfoResponse>(null)
                        {
                            Message = coupon.Message,
                            StatusCode = coupon.StatusCode
                        };
                }

                var promotionEntity = _promotionRepository.GetItem(request.PromotionId);
                promotionEntity = _promotionRepository.SetCount(PromotionCountType.InvolvedCount, promotionEntity.Id, 1);

            
                var re = MappingManager.PromotionResponseMapping(promotionEntity);
                re.CouponCodeResponse = coupon.Data;

                re = IsR(re, request.AuthUser, request.AuthUser.Id);
                ts.Complete();
                return new ExecuteResult<PromotionInfoResponse> { Data = re };
            }
        }