private bool ApplyManufacturerDiscount(DiscountCoupon discountCoupon, Cart cart) { var manufacturerIds = discountCoupon.RestrictionIds(); var cartItemUpdated = false; foreach (var cartItem in cart.CartItems) { if (cartItem.Product.ManufacturerId.HasValue && manufacturerIds.Contains(cartItem.Product.ManufacturerId.Value)) { cartItem.Discount = discountCoupon.GetDiscountAmount(cartItem.Price, cartItem.Quantity); cartItemUpdated = true; } } if (cartItemUpdated && discountCoupon.MaximumDiscountAmount > 0 && cart.CartItems.Sum(x => x.Discount) > discountCoupon.MaximumDiscountAmount) { cart.Discount = discountCoupon.MaximumDiscountAmount; foreach (var cartItem in cart.CartItems) { cartItem.Discount = 0; } } return(cartItemUpdated); }
public ActionResult Index() { decimal GrandTotal = 0;; EducationShoppingCartTempViewModel educationshoppingModel = new EducationShoppingCartTempViewModel(); if (Session["Countdown"] != null) { _shoppingeducationService.ResetShippingOrderQuentityStock(HCRGUser.UID); Session["Countdown"] = null; Session["StartDate"] = null; } educationshoppingModel.EducationShoppingCartTempResults = Mapper.Map <IEnumerable <EducationShoppingCart> >(_shoppingeducationService.GetEducationShoppingCartByUserID(HCRGUser.UID)); List <DiscountCoupon> List_DiscountCoupon = new List <DiscountCoupon>(); foreach (EducationShoppingCart viewmodel in educationshoppingModel.EducationShoppingCartTempResults) { if (viewmodel.CoupanID != null) { DiscountCoupon discountCoupon = new DiscountCoupon(); discountCoupon = Mapper.Map <DiscountCoupon>(_discountCouponService.GetDiscountCouponByID(Convert.ToInt32(viewmodel.CoupanID))); List_DiscountCoupon.Add(discountCoupon); } GrandTotal += viewmodel.Amount; } educationshoppingModel.DiscountCouponResults = List_DiscountCoupon.AsEnumerable(); TempData["TotalAmount"] = GrandTotal; return(View(educationshoppingModel)); }
private bool ApplyRoleDiscount(DiscountCoupon discountCoupon, Cart cart) { var roleIds = discountCoupon.RestrictionIds(); var user = _userService.Get(cart.UserId); if (user.Roles.Any(x => roleIds.Contains(x.Id))) { foreach (var cartItem in cart.CartItems) { cartItem.Discount = discountCoupon.GetDiscountAmount(cartItem.Price, cartItem.Quantity); } if (discountCoupon.MaximumDiscountAmount > 0 && cart.CartItems.Sum(x => x.Discount) > discountCoupon.MaximumDiscountAmount) { cart.Discount = discountCoupon.MaximumDiscountAmount; foreach (var cartItem in cart.CartItems) { cartItem.Discount = 0; } } return(true); } return(false); }
private bool ApplyVendorDiscount(DiscountCoupon discountCoupon, Cart cart) { var vendorIds = discountCoupon.RestrictionIds().ToArray(); var vendorProductIds = _productService.GetProductIdsByVendorIds(vendorIds); var cartUpdated = false; foreach (var cartItem in cart.CartItems) { if (vendorProductIds.Contains(cartItem.ProductId)) { cartItem.Discount = discountCoupon.GetDiscountAmount(cartItem.Price, cartItem.Quantity); cartUpdated = true; } } if (cartUpdated && discountCoupon.MaximumDiscountAmount > 0 && cart.CartItems.Sum(x => x.Discount) > discountCoupon.MaximumDiscountAmount) { cart.Discount = discountCoupon.MaximumDiscountAmount; foreach (var cartItem in cart.CartItems) { cartItem.Discount = 0; } } return(cartUpdated); }
public JsonResult Add(IEnumerable <Education> myList, string CouponType, string CouponDiscount, string CouponExpiryDate, string noofcoupon, string couponFor) { List <DiscountCoupon> list_discountCoupon = new List <DiscountCoupon>(); DiscountCoupon discountCoupon = new DiscountCoupon(); foreach (var item in myList) { for (int i = 0; i < Convert.ToInt32(noofcoupon); i++) { discountCoupon = new DiscountCoupon(); discountCoupon.CouponDiscount = Convert.ToDecimal(CouponDiscount); discountCoupon.CouponExpiryDate = Convert.ToDateTime(CouponExpiryDate); //DateTime.ParseExact(CouponExpiryDate, format, en.DateTimeFormat); discountCoupon.CouponIssueDate = DateTime.Now; discountCoupon.CouponCode = MakeCoupon(10); discountCoupon.CoupanValid = true; discountCoupon.CouponType = CouponType; discountCoupon.ClientID = HCRGCLIENT.ClientID; if (couponFor == GlobalConst.CouponType.Course) { discountCoupon.CouponProduactID = 0; discountCoupon.CouponEducationID = item.EducationID; discountCoupon.CouponEducationName = item.CourseName; } else { discountCoupon.CouponProduactID = 1; discountCoupon.CouponEducationID = 0; discountCoupon.CouponEducationName = ""; } discountCoupon.CouponID = _DiscountCouponService.AddDiscountCoupon(Mapper.Map <HCRGUniversityMgtApp.NEPService.DiscountCouponService.DiscountCoupon>(discountCoupon)); list_discountCoupon.Add(discountCoupon); } } return(Json(list_discountCoupon, GlobalConst.Message.text_html)); }
private bool ApplyShippingDiscount(DiscountCoupon discountCoupon, Cart cart) { var discount = discountCoupon.GetDiscountAmount(cart.ShippingFee, 1); cart.Discount = discount; return(true); }
private bool ApplyOrderSubTotalDiscount(DiscountCoupon discountCoupon, Cart cart) { var subTotal = GetOrderSubTotal(cart); cart.Discount = discountCoupon.GetDiscountAmount(subTotal, 1); return(true); }
public ActionResult DeleteConfirmed(int id) { DiscountCoupon discountCoupon = db.DiscountCoupons.Find(id); db.DiscountCoupons.Remove(discountCoupon); db.SaveChanges(); return(RedirectToAction("Index")); }
public virtual async Task InsertCouponCode(string discountId, string couponCode) { var coupon = new DiscountCoupon { CouponCode = couponCode.ToUpper(), DiscountId = discountId }; await _discountService.InsertDiscountCoupon(coupon); }
protected void btnAdd_Click(object sender, EventArgs e) //add the new discount coupon { Admin a = (Admin)Session["admin"]; double disAMT; if (tbxAMT.Text == "") { disAMT = 0; } else { disAMT = Convert.ToDouble(tbxAMT.Text); } DiscountCoupon dc = new DiscountCoupon() { CouponCode = tbxCc.Text, Name = tbxName.Text, Description = tbxDesc.Text, Percentage = tbxPercentage.Text, Amount = disAMT, StartDate = Convert.ToDateTime(tbxSd.Text), EndDate = Convert.ToDateTime(tbxEd.Text), AdminID = a }; if (Convert.ToDateTime(tbxSd.Text) < DateTime.Now) //to check the start date must be future and cannot be past { lblOutput.Text = "Start date must be in the future"; } else { if (Convert.ToDateTime(tbxEd.Text) < Convert.ToDateTime(tbxSd.Text)) //to check end date cannot be before the start date { lblOutput.Text = "End date cannot be before the start date"; } else { try { int id = DiscountCouponDB.addDiscountCoupon(dc); //add row into the database lblOutput.Text = id + "Added Successfully!"; gvBind(); tbxAMT.Text = ""; tbxCc.Text = ""; tbxDesc.Text = ""; tbxEd.Text = ""; tbxName.Text = ""; tbxPercentage.Text = ""; tbxSd.Text = ""; } catch (Exception ex) { lblOutput.Text = "Cannot Add!" + ex.Message; //to show the error message cannot add the discount coupon } } } }
private bool ApplyShippingMethodDiscount(DiscountCoupon discountCoupon, Cart cart) { var shippingMethodNames = discountCoupon.RestrictionValues(); if (shippingMethodNames.Contains(cart.ShippingMethodName)) { return(ApplyShippingDiscount(discountCoupon, cart)); } return(false); }
private bool ChangeLockState(DiscountCoupon vDiscountCoupon, bool vState) { using (FRShoppingEntities frenty = new FRShoppingEntities()) { DiscountCoupon up = frenty.DiscountCoupons.FirstOrDefault(e => e.DiscountCouponId == vDiscountCoupon.DiscountCouponId); up.UpdatedDate = DateTime.Now; up.Active = vState; return(frenty.SaveChanges() > 0 ? true : false); } }
public ActionResult Edit([Bind(Include = "ID,Name,Description,Percent,CreatedDate,ExpirationDate,IsActive")] DiscountCoupon discountCoupon) { if (ModelState.IsValid) { db.Entry(discountCoupon).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(discountCoupon)); }
public ActionResult Create([Bind(Include = "ID,Name,Description,Percent,CreatedDate,ExpirationDate,IsActive")] DiscountCoupon discountCoupon) { if (ModelState.IsValid) { discountCoupon.CreatedDate = DateTime.Now; db.DiscountCoupons.Add(discountCoupon); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(discountCoupon)); }
public JsonResult ApplyCoupon(DiscountCoupon discountcoupon, string Couponcode) { discountcoupon = Mapper.Map <DiscountCoupon>(_discountCouponService.GetDiscountCouponByCouponCode(Couponcode)); if (discountcoupon.CoupanValid && discountcoupon.CouponExpiryDate >= DateTime.Now) { return(Json(discountcoupon)); } else { return(Json(GlobalConst.Message.CoupanNotValid)); } }
internal static void AddDiscountCoupon(string id, DiscountCoupon promotion) { promotion.CompanyId = id; new CompanyManager().GetCompanies().Find(c => c.Id.Equals(id)).DiscountCoupons.Add(promotion); foreach (var user in new UserManager().GetUsers()) { if (UserManager.IsUserSubscribed(user.Id, promotion.CompanyId)) { NotificationManager.CreateNotificationAsync(user.Id, promotion.CompanyId, promotion.Id, (int)Notification.AllowedNotificationTypes.CREATED); } } }
public bool CanApplyDiscount(DiscountCoupon discountCoupon, int userId, out DiscountApplicationStatus status) { if (discountCoupon == null || !discountCoupon.Enabled) { status = DiscountApplicationStatus.InvalidCode; return(false); } if (discountCoupon.Expired) { status = DiscountApplicationStatus.Expired; return(false); } //first the dates if (discountCoupon.StartDate > DateTime.UtcNow) { status = DiscountApplicationStatus.InvalidCode; return(false); } if (discountCoupon.EndDate.HasValue && discountCoupon.EndDate < DateTime.UtcNow) { status = DiscountApplicationStatus.Expired; return(false); } //number of usages if (discountCoupon.TotalNumberOfTimes > 0) { var orderCount = _orderService.Count(x => x.DiscountId == discountCoupon.Id && x.PaymentStatus == PaymentStatus.Complete); if (orderCount >= discountCoupon.TotalNumberOfTimes) { status = DiscountApplicationStatus.Exhausted; return(false); } } if (discountCoupon.NumberOfTimesPerUser > 0) { var orderCount = _orderService.Count(x => x.DiscountId == discountCoupon.Id && x.PaymentStatus == PaymentStatus.Complete && x.UserId == userId); if (orderCount >= discountCoupon.NumberOfTimesPerUser) { status = DiscountApplicationStatus.Exhausted; return(false); } } status = DiscountApplicationStatus.Success; return(true); }
public DiscountCoupon AddDiscountCoupon(DiscountCoupon vDiscountCoupon) { try { Shoppingctx.DiscountCoupons.Add(vDiscountCoupon); base.PurgeCacheItems(CacheKey); return(Shoppingctx.SaveChanges() > 0 ? vDiscountCoupon : null); } catch { return(null); } }
// GET: DiscountCoupons/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } DiscountCoupon discountCoupon = db.DiscountCoupons.Find(id); if (discountCoupon == null) { return(HttpNotFound()); } return(View(discountCoupon)); }
private void SetPromotionType(int value) { if (value == (int)AddPromotionPassThroughElement.IDENTIFIERS.EVENT) { Promotion = new Event(); } else if (value == (int)AddPromotionPassThroughElement.IDENTIFIERS.DISCOUNTCODE) { Promotion = new DiscountCoupon(); } else { Promotion = new Promotion(); } }
private bool ApplyCategoryDiscount(DiscountCoupon discountCoupon, Cart cart) { var categoryIds = discountCoupon.RestrictionIds().ToArray(); var categoryProductIds = _productService.GetProductIdsByCategoryIds(categoryIds); var cartUpdated = false; foreach (var cartItem in cart.CartItems) { if (categoryProductIds.Contains(cartItem.ProductId)) { cartItem.Discount = discountCoupon.GetDiscountAmount(cartItem.Price, cartItem.Quantity); cartUpdated = true; } } return(cartUpdated); }
/// <summary> /// To Apply Discount on Quantity /// </summary> /// <param name="BilledItems"></param> /// <param name="findCop"></param> /// <param name="findItem"></param> /// <param name="billedItem"></param> /// <param name="Qnum"></param> /// <remarks> This Methods First calculates total quantity by iterating through items if needed. Calculate Discount Quantity by adding Discount coupon details. /// Total Discount Quantity will be calculated by dividing total quantity and Discount Quantity. Total cost will be calculated after removing discount quantity /// </remarks> public static void ApplyDiscount(Dictionary <int, BilledItem> BilledItems, DiscountCoupon findCop, Item findItem, BilledItem billedItem, double Qnum) { BilledItems.TryGetValue(findItem.Id, out BilledItem DictValue); double totalQty = Qnum; if (DictValue != null) { totalQty = DictValue.ItmQuantity + Qnum; } int totalQtyWithDiscout = findCop.CDetails.CDiscountVal + findCop.CDetails.CMinVal; double totalDiscountQty = (int)totalQty / totalQtyWithDiscout; billedItem.DisCntDetails = "Buy " + findCop.CDetails.CMinVal.ToString() + " Get " + findCop.CDetails.CDiscountVal.ToString() + " Free"; billedItem.TotCost = (totalQty - totalDiscountQty) * findItem.Cost; billedItem.ItmQuantity = totalQty; }
//if user apply with the discount coupon protected void btnApply_Click(object sender, EventArgs e) { //retrieve the shopping cart session ShoppingCart sc = (ShoppingCart)Session["cart"]; //initialize the total amount with double double tAmt = Convert.ToDouble(sc.TotalPrice); //get discount coupon from database DiscountCoupon dc = DiscountCouponDB.getDiscountCouponByCode(tbxDC.Text); //check if discount coupon is not null if (dc != null) { if (dc.EndDate > DateTime.Now) //check the enddate from datetime.now functions { Session["DC"] = dc; //create a session for discount coupon if (dc.Percentage == null) // check if the percentage is null { double netAMT = sc.TotalPrice - dc.Amount; //total price will be minus from the amount sc.DiscountedAmt = dc.Amount; //show the amount price of discount coupon lblDiscountAmt.Text = "$" + dc.Amount; //show with the dollar sign sc.NetAMount = (tAmt - dc.Amount); lblNetAmount.Text = "$" + sc.NetAMount; lblTax.Text = sc.Tax.ToString("C"); lblAmtPayable.Text = sc.AmtPayable.ToString("C"); Session["AmtPayable"] = sc.AmtPayable; //create a session for amt payable } else { sc.DiscountedAmt = tAmt * Convert.ToDouble(dc.Percentage); //if the amount is null, then the price will be minus from the percentage sc.NetAMount = tAmt - (tAmt * Convert.ToDouble(dc.Percentage)); //netamount times with discount percentage lblDiscountAmt.Text = "$" + sc.DiscountedAmt; //show with the dollar sign lblNetAmount.Text = "$" + sc.NetAMount; lblTax.Text = sc.Tax.ToString("C"); lblAmtPayable.Text = sc.AmtPayable.ToString("C"); Session["AmtPayable"] = sc.AmtPayable; //create a session for amt payable } } else { lblError.Text = "Coupon has expired"; //if the coupon code has expired, show the error message } } else { lblError.Text = "Coupon Code is not valid"; //when the coupon code is not valid } }
private bool ApplyProductDiscount(DiscountCoupon discountCoupon, Cart cart) { var productIds = discountCoupon.RestrictionIds(); var cartItemUpdated = false; foreach (var cartItem in cart.CartItems) { if (!productIds.Contains(cartItem.ProductId)) { continue; } cartItem.Discount = discountCoupon.GetDiscountAmount(cartItem.Price, cartItem.Quantity); cartItem.FinalPrice = cartItem.Price - cartItem.Discount; cartItemUpdated = true; } return(cartItemUpdated); }
private bool ApplyPaymentMethodDiscount(DiscountCoupon discountCoupon, Cart cart) { var paymentMethodNames = discountCoupon.RestrictionValues(); if (paymentMethodNames.Contains(cart.PaymentMethodName)) { var paymentHandler = PluginHelper.GetPaymentHandler(cart.PaymentMethodName); var discount = discountCoupon.GetDiscountAmount(paymentHandler.GetPaymentHandlerFee(cart), 1); if (discountCoupon.HasCouponCode) { cart.Discount = discount; } cart.PaymentMethodFee = cart.PaymentMethodFee - discount; return(true); } return(false); }
protected virtual async Task InstallDiscounts() { var discounts = new List <Discount> { new Discount { Name = "Sample discount with coupon code", DiscountTypeId = DiscountType.AssignedToOrderTotal, DiscountLimitationId = DiscountLimitationType.Nolimits, UsePercentage = false, DiscountAmount = 10, RequiresCouponCode = true, IsEnabled = true, CurrencyCode = "USD" }, new Discount { Name = "'20% order total' discount", DiscountTypeId = DiscountType.AssignedToOrderTotal, DiscountLimitationId = DiscountLimitationType.Nolimits, UsePercentage = true, DiscountPercentage = 20, StartDateUtc = new DateTime(2010, 1, 1), EndDateUtc = new DateTime(2030, 1, 1), RequiresCouponCode = true, IsEnabled = true, CurrencyCode = "USD" }, }; await _discountRepository.InsertAsync(discounts); var coupon1 = new DiscountCoupon { CouponCode = "123", DiscountId = _discountRepository.Table.Where(x => x.Name == "Sample discount with coupon code").FirstOrDefault().Id }; await _discountCouponRepository.InsertAsync(coupon1); var coupon2 = new DiscountCoupon { CouponCode = "456", DiscountId = _discountRepository.Table.Where(x => x.Name == "'20% order total' discount").FirstOrDefault().Id }; await _discountCouponRepository.InsertAsync(coupon2); }
private bool ApplyOrderTotalDiscount(DiscountCoupon discountCoupon, Cart cart) { var orderTotalForDiscount = decimal.Zero; var otherOrderTotal = decimal.Zero; foreach (var cartItem in cart.CartItems) { if (discountCoupon.ExcludeAlreadyDiscountedProducts && cartItem.Discount > 0) { otherOrderTotal += cartItem.Tax + cartItem.Price * cartItem.Quantity; continue; } orderTotalForDiscount += cartItem.Tax + cartItem.Price * cartItem.Quantity; } cart.Discount = discountCoupon.GetDiscountAmount(orderTotalForDiscount, 1); return(true); }
public DiscountCoupon AddDiscountCoupon(int vDiscountCouponID, int vBizInfoID, string vTitle, string vDescription, int vDiscountPercentage, decimal vOrderMinimum, DateTime vStartDate, DateTime vExpirationDate, DateTime vAddedDate, string vAddedBy, DateTime vUpdatedDate, string vUpdatedBy, bool vActive) { DiscountCoupon lDiscountCoupon = new DiscountCoupon(); using (FRShoppingEntities frctx = new FRShoppingEntities()) { if (vDiscountCouponID > 0) { lDiscountCoupon = frctx.DiscountCoupons.FirstOrDefault(u => u.DiscountCouponId == vDiscountCouponID); lDiscountCoupon.Title = vTitle; lDiscountCoupon.Description = vDescription; lDiscountCoupon.DiscountPercentage = vDiscountPercentage; lDiscountCoupon.OrderMinimum = vOrderMinimum; lDiscountCoupon.StartDate = vStartDate; lDiscountCoupon.ExpirationDate = vExpirationDate; lDiscountCoupon.UpdatedDate = vUpdatedDate; lDiscountCoupon.UpdatedBy = vUpdatedBy; lDiscountCoupon.Active = vActive; return(frctx.SaveChanges() > 0 ? lDiscountCoupon : null); } else { lDiscountCoupon.Title = vTitle; lDiscountCoupon.Description = vDescription; lDiscountCoupon.DiscountPercentage = vDiscountPercentage; lDiscountCoupon.OrderMinimum = vOrderMinimum; lDiscountCoupon.StartDate = vStartDate; lDiscountCoupon.ExpirationDate = vExpirationDate; lDiscountCoupon.BizInfoId = vBizInfoID; lDiscountCoupon.AddedDate = vAddedDate; lDiscountCoupon.AddedBy = vAddedBy; lDiscountCoupon.UpdatedDate = vUpdatedDate; lDiscountCoupon.UpdatedBy = vUpdatedBy; lDiscountCoupon.Active = vActive; return(AddDiscountCoupon(lDiscountCoupon)); } } }
private decimal GetProductDiscountedPrice(DiscountCoupon discountCoupon, Product product, ProductVariant variant, User user, int quantity) { var price = variant?.Price ?? product.Price; switch (discountCoupon.RestrictionType) { case RestrictionType.Products: return(discountCoupon.RestrictionIds().Contains(product.Id) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); case RestrictionType.Categories: var categoryIds = discountCoupon.RestrictionIds().ToArray(); var categoryProductIds = _productService.GetProductIdsByCategoryIds(categoryIds); return(categoryProductIds.Contains(product.Id) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); case RestrictionType.Users: return(discountCoupon.RestrictionIds().Contains(user.Id) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); case RestrictionType.UserGroups: return(0); case RestrictionType.Roles: var roleIds = discountCoupon.RestrictionIds(); return(user.Roles.Any(x => roleIds.Contains(x.Id)) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); case RestrictionType.Vendors: var vendorIds = discountCoupon.RestrictionIds().ToArray(); var vendorProductIds = _productService.GetProductIdsByVendorIds(vendorIds); return(vendorProductIds.Contains(product.Id) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); case RestrictionType.Manufacturers: return(product.ManufacturerId.HasValue && discountCoupon.RestrictionIds().Contains(product.ManufacturerId.Value) ? discountCoupon.GetDiscountAmount(price, quantity) : 0); default: return(0); } }
public static decimal GetDiscountAmount(this DiscountCoupon discountCoupon, decimal amount, int times) { if (amount == 0) { return(0); } amount = times * amount; var maxAmount = discountCoupon.MaximumDiscountAmount; if (maxAmount == 0) { maxAmount = decimal.MaxValue; } var discountAmount = discountCoupon.CalculationType == CalculationType.FixedAmount ? discountCoupon.DiscountValue * times : (amount * discountCoupon.DiscountValue) / 100; if (discountAmount > maxAmount) { discountAmount = maxAmount; } return(discountAmount); }