public async Task <string> GetCheckCouponName(GetVipCouponInput input)
        {
            var vipCoupon = _couponRepository.FirstOrDefault(u => u.CouponCode == input.CouponCode);

            if (vipCoupon != null)
            {
                if (vipCoupon.IsUse)
                {
                    throw new UserFriendlyException("优惠券已核销");
                }
                else
                {
                    if (vipCoupon.EndTime <= DateTime.Now)
                    {
                        throw new UserFriendlyException("优惠券已过期");
                    }
                    else
                    {
                        return(_couponConfigRepository.FirstOrDefault(u => u.Id == vipCoupon.CouponConfigId).CouponName);
                    }
                }
            }
            else
            {
                throw new UserFriendlyException("优惠券不存在");
            }
        }
        public async Task CheckCoupon(GetVipCouponInput input)
        {
            //Editing an existing coupon
            var vipCoupon = _couponRepository.FirstOrDefault(u => u.CouponCode == input.CouponCode);

            vipCoupon.IsUse      = true;
            vipCoupon.ModifyMan  = AsyncHelper.RunSync(() => UserManager.GetUserByIdAsync((long)AbpSession.UserId)).Name;
            vipCoupon.ModifyTime = DateTime.Now;
            await _couponRepository.UpdateAsync(vipCoupon);
        }
        public async Task <PagedResultDto <VipCouponListDto> > GetVipCouponList(GetVipCouponInput input)
        {
            var vipCoupon = _couponRepository.GetAll()
                            .Where(u => u.VipId == input.VipId);

            var query = from v in vipCoupon
                        join c in _couponConfigRepository.GetAll() on v.CouponConfigId equals c.Id
                        select new
            {
                v,
                c = c == null ? null : new { c.Id, c.CouponName }
            };

            var vipCouponCount = await query.CountAsync();

            var vipCouponList = await query
                                .OrderBy(input.Sorting)
                                .PageBy(input)
                                .ToListAsync();

            var vipCouponListDto = vipCouponList.Select(s => s.v).MapTo <List <VipCouponListDto> >();

            vipCouponListDto = vipCouponListDto.Select(v =>
            {
                var dto        = v;
                dto.CouponName =
                    vipCouponList.Select(s => s.c)
                    .Where(w => w.Id == v.CouponConfigId)
                    .Select(si => si.CouponName)
                    .FirstOrDefault();
                return(dto);
            }).ToList();

            foreach (var item in vipCouponListDto)
            {
                if (item.EndTime >= DateTime.Now)
                {
                    item.IsValidity = true;
                }
                else
                {
                    item.IsValidity = false;
                }
            }

            return(new PagedResultDto <VipCouponListDto>(
                       vipCouponCount,
                       vipCouponListDto
                       ));
        }
        public async Task <PagedResultDto <VipCouponListDto> > GetCheckCouponList(GetVipCouponInput input)
        {
            var modifyMan = AsyncHelper.RunSync(() => UserManager.GetUserByIdAsync((long)AbpSession.UserId)).Name;
            var vipCoupon = _couponRepository.GetAll()
                            .Where(u => u.IsUse && u.ModifyMan == modifyMan && u.ModifyTime >= DbFunctions.TruncateTime(DateTime.Now));

            var query = from v in vipCoupon
                        join c in _couponConfigRepository.GetAll() on v.CouponConfigId equals c.Id
                        select new
            {
                v,
                c = c == null ? null : new { c.Id, c.CouponName }
            };

            var vipCouponCount = await query.CountAsync();

            var vipCouponList = await query
                                .OrderBy(input.Sorting)
                                .PageBy(input)
                                .ToListAsync();

            var vipCouponListDto = vipCouponList.Select(s => s.v).MapTo <List <VipCouponListDto> >();

            vipCouponListDto = vipCouponListDto.Select(v =>
            {
                var dto        = v;
                dto.CouponName =
                    vipCouponList.Select(s => s.c)
                    .Where(w => w.Id == v.CouponConfigId)
                    .Select(si => si.CouponName)
                    .FirstOrDefault();
                return(dto);
            }).ToList();

            return(new PagedResultDto <VipCouponListDto>(
                       vipCouponCount,
                       vipCouponListDto
                       ));
        }