private Coupon CreateCouponRecord(CreateCouponViewModel createCouponVm, string loggedInUserId, CouponFeesDto couponFees, string couponType, string eventId, string couponStatus)
        {
            createCouponVm.CouponValidUntil = DateTime.Now.AddDays(7).ToString("dd/MM/yyyy");

            var coupon = new Coupon
            {
                CouponStatus = couponStatus,
                IssuedBy = ParseObject.CreateWithoutData<ParseUser>(loggedInUserId),
                IssuedFor = ParseObject.CreateWithoutData<ParseUser>(createCouponVm.CouponStudentDetails.StudentUserId),
                IssueDate = DateTime.Now,
                Clip = !string.IsNullOrEmpty(createCouponVm.ContentItemDetails.ClipId) ? ParseObject.CreateWithoutData<Clip>(createCouponVm.ContentItemDetails.ClipId) : null,
                Bundle = !string.IsNullOrEmpty(createCouponVm.ContentItemDetails.BundleId) ? ParseObject.CreateWithoutData<Bundle>(createCouponVm.ContentItemDetails.BundleId) : null,
                Currency = ParseObject.CreateWithoutData<Currency>(createCouponVm.ContentItemDetails.Currency.ObjectId),
                ClipArray = createCouponVm.ContentItemDetails.BundleClipIds,
                IncludingSupport = createCouponVm.IncludesSupport,
                OriginalPrice = couponFees.OriginalPrice,
                OriginalPriceNIS = couponFees.OriginalPriceNIS,
                SiteCouponFee = couponFees.SiteCouponFee,
                SiteCouponFeeNIS = couponFees.SiteCouponFeeNIS,
                TeacherCouponFee = couponFees.TeacherCouponFee,
                TeacherCouponFeeNIS = couponFees.TeacherCouponFeeNIS,
                CouponType = couponType,
                IssueEvent = eventId != null ? ParseObject.CreateWithoutData<Event>(eventId) : null
            };
            return coupon;
        }
        private async Task<Coupon> CreateCoupon(
            CreateCouponViewModel createCouponVm, 
            double studentPrice, 
            double teacherCommissionRate, 
            string couponType, 
            CouponDiscountType discountType,             
            string couponStatus, 
            string eventId = null)
        {
            try
            {
                
                var includesSupport = createCouponVm.IncludesSupport;
                var itemPrice = createCouponVm.ContentItemDetails.OriginalPrice;

                double teacherCouponFee = 0;
                double siteCouponFee = 0;

                if (discountType == CouponDiscountType.Admin)
                {
                    teacherCouponFee = studentPrice*teacherCommissionRate;
                    siteCouponFee = (1 - teacherCommissionRate)*studentPrice;
                }
                else if (discountType == CouponDiscountType.Regular)
                {
                    teacherCouponFee = itemPrice * teacherCommissionRate - (itemPrice - studentPrice);
                    siteCouponFee = itemPrice*(1 - teacherCommissionRate);
                }
                else if (discountType == CouponDiscountType.Special)
                {
                    teacherCouponFee = 0;
                    siteCouponFee = studentPrice;
                }
               
                var couponFees = new CouponFeesDto
                {
                    OriginalPrice = ConvertToContentItemCurrency(createCouponVm.ContentItemDetails.Currency, itemPrice),
                    OriginalPriceNIS = ConvertToNis(itemPrice),
                    SiteCouponFee = ConvertToContentItemCurrency(createCouponVm.ContentItemDetails.Currency,siteCouponFee),
                    SiteCouponFeeNIS = ConvertToNis(siteCouponFee),
                    TeacherCouponFee =  ConvertToContentItemCurrency(createCouponVm.ContentItemDetails.Currency,teacherCouponFee),
                    TeacherCouponFeeNIS = ConvertToNis(teacherCouponFee)
                };
               return CreateCouponRecord(createCouponVm, Session.GetLoggedInUser().ObjectId, couponFees, couponType, eventId, couponStatus);                
            }
            catch (Exception ex)
            {
                //SendErrorEmail(createCouponVm, "cannot create coupon, general error " + ex.Message);
                createCouponVm.CouponErrors.GeneralError = ex.Message;
                mLogger.Log(LogLevel.Error, ex);
            }
            return null;
        }