/// <summary> /// check discount code /// </summary> /// <param name="code"></param> /// <param name="orderId"></param> /// <returns>Returns Discount</returns> public IActionResponse <Discount> Check(DiscountCheckModel model) { var item = _discount.FirstOrDefault(x => x.Code == model.Code); if (item == null) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.InvalidDiscountCode } } ; if (item.IsUsed) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.DiscountBeenUsed } } ; if (DateTime.Now < item.ValidFromDateMi) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.DiscountUseDateNotArrived } } ; if (DateTime.Now > item.ValidToDateMi) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.DiscountBeenExpired } } ; if (item.UseForOnce && _discountOrder.Any(x => x.DiscountId == item.DiscountId)) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.DiscountBeenUsed } } ; if (_discountOrder.Any(x => x.OrderId == model.OrderId)) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.OneDiscountCanBeUsedPerOrder } } ; if (item.ForFirstUser && _discountOrder.Any(x => x.DiscountId == item.DiscountId && x.Order.UserId != model.UserId)) { return new ActionResponse <Discount> { IsSuccessful = false, Message = BusinessMessage.DiscountBeenUsed } } ; if (item.DiscountType != DiscountType.Value) { var value = model.TotalPrice * item.Value / 100; if (item.DiscountType == DiscountType.PercentageWithCeiling) { item.Value = value > item.Ceiling ? item.Ceiling : value; } else { item.Value = value; } } if (item.Value > model.TotalPrice) { item.Value = model.TotalPrice; } return(new ActionResponse <Discount> { IsSuccessful = true, Result = item }); } } }
public virtual JsonResult Check(DiscountCheckModel model) { model.TotalPrice = _orderItemBusiness.Value.GetTotalPrice(model.OrderId, model.LangType, true); model.UserId = model.UserId; return(Json(_discountBusiness.Check(model))); }