public async Task CreateOrUpdateCoupon(GetCouponConfigForEditInput input)
 {
     if (string.IsNullOrEmpty(input.CouponConfig.Id))
     {
         await CreateCouponAsync(input);
     }
     else
     {
         await UpdateCouponAsync(input);
     }
 }
        protected virtual async Task UpdateCouponAsync(GetCouponConfigForEditInput input)
        {
            var couponConfig = await _couponConfigRepository.FirstOrDefaultAsync(u => u.Id == input.CouponConfig.Id);

            //Update user properties
            input.CouponConfig.MapTo(couponConfig); //Passwords is not mapped (see mapping configuration)
            couponConfig.ModifyMan  = AsyncHelper.RunSync(() => UserManager.GetUserByIdAsync((long)AbpSession.UserId)).Name;
            couponConfig.ModifyTime = DateTime.Now;

            await _couponConfigRepository.UpdateAsync(couponConfig);

            await CurrentUnitOfWork.SaveChangesAsync();
        }
        protected virtual async Task CreateCouponAsync(GetCouponConfigForEditInput input)
        {
            var couponConfig = input.CouponConfig.MapTo <CouponConfig>();

            couponConfig.Id         = Guid.NewGuid().ToString().ToUpper();
            couponConfig.IsDelete   = false;
            couponConfig.AddMan     = AsyncHelper.RunSync(() => UserManager.GetUserByIdAsync((long)AbpSession.UserId)).Name;
            couponConfig.AddTime    = DateTime.Now;
            couponConfig.ModifyMan  = AsyncHelper.RunSync(() => UserManager.GetUserByIdAsync((long)AbpSession.UserId)).Name;
            couponConfig.ModifyTime = DateTime.Now;

            await _couponConfigRepository.InsertAsync(couponConfig);

            await CurrentUnitOfWork.SaveChangesAsync();
        }