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; }