public async Task <JsonResult> GetCoupon(string qrcode) { var response = new ResponseGetQRCode(); var coupon = await _couponRespository.Get(qrcode); response.Coupon = coupon; if (coupon != null) { var user = await _userRepository.GetUser(coupon.User); response.User = user; var promo = await _promoRepository.Get(coupon.PromoId.ToString()); response.Promo = promo; } return(Json(response, JsonRequestBehavior.AllowGet)); }
private void UpdateCoupon(string couponCode) { var counpon = _CouponRepository.Get(x => x.Code == couponCode); if (counpon != null) { counpon.Used++; } _CouponRepository.Update(counpon); _unitOfWork.Commit(); }
public ActionResult Confirm(ConfirmOrder req) { if (ModelState.IsValid) { if (_orderRepository.CheckStatusOrder(req.OrderId) == 0) { if (_orderRepository.CheckCouponInOrder(req.UserId, req.CouponId)) { Order order = _orderRepository.ConfirmOrder(req.OrderId, req.UserId); if (order != null) { Coupon coupon = _couponRepository.Get(req.CouponId); if (coupon != null) { if (order.CouponId == null) { if (coupon.Status == 1) { if (coupon.ExpiryDate >= DateTime.Now) { if (order.TotalPrice >= coupon.Condition) { order.TotalPrice = req.TotalPrice; order.CouponId = req.CouponId; order.OrderTime = DateTime.Now; order.Status = 1; if (_orderRepository.SaveChanges() == 1) { return(Ok()); } return(BadRequest(JsonConvert.SerializeObject(new { message = "Server Error." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The user is not eligible to receive the coupon." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The coupon has expired." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The coupon is unavailable." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The order can not take 2 coupons. " }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The coupon not found." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The order is not match to user." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The coupon has been used." }))); } return(BadRequest(JsonConvert.SerializeObject(new { message = "The order has done." }))); } return(BadRequest(ModelState)); }
public async Task <ActionResult> Redeem(string couponId) { var coupon = await _couponRespository.Get(couponId); var promo = await _promoRepository.Get(coupon.PromoId.ToString()); var model = new CouponPromoList { Promo = promo, Coupon = coupon }; return(View(model)); }
public Cart ApplyCoupon(string id) { Cart cart = SessionHelper.GetObjectFromJson <Cart>(context.Session, "cart"); var coupon = _couponRepository.Get(id).Result; if (coupon != null) { if (cart.amount >= coupon.MinAmountForDiscount) { cart.amount = coupon.DiscountType == DiscountType.RATE ? cart.amount - (cart.amount * coupon.AmountOrRate) : cart.amount - coupon.AmountOrRate; } } SessionHelper.SetObjectAsJson(context.Session, "cart", cart); return(cart); }
public string Verification(PromotionCouponCreateRequest request) { var promotionEntity = _promotionRepository.GetItem(request.PromotionId); string err = Verification(promotionEntity); if (!string.IsNullOrEmpty(err)) { return(err); } if (promotionEntity.IsLimitPerUser.HasValue && promotionEntity.IsLimitPerUser.Value) { var existCoupon = _couponRepo.Get(c => c.FromPromotion == request.PromotionId && c.User_Id == request.AuthUser.Id && c.Status != (int)DataStatus.Deleted).FirstOrDefault(); if (existCoupon != null) { return("该优惠活动每人限领一次,您已经领过了。"); } } return(null); }
public ActionResult List(CouponInfoGetListRequest request, int?authuid, UserModel authUser) { request.AuthUid = authuid.Value; request.AuthUser = authUser; if (request == null) { return new RestfulResult { Data = new ExecuteResult <CouponInfoResponse>(null) } } ; var linq = _couponRepo.Get(c => c.User_Id == authUser.Id && c.Status != (int)CouponStatus.Deleted); if (request.Type.HasValue) { switch (request.Type.Value) { case CouponRequestType.Used: linq = linq.Where(c => c.Status == (int)CouponStatus.Used); break; case CouponRequestType.Expired: linq = linq.Where(c => c.Status != (int)CouponStatus.Used && c.ValidEndDate < DateTime.Now); break; case CouponRequestType.UnUsed: linq = linq.Where(c => c.Status != (int)CouponStatus.Used && c.ValidEndDate >= DateTime.Now); break; } } int totalCount = linq.Count(); int skipCount = request.Page > 0 ? (request.Page - 1) * request.Pagesize : 0; linq = linq.OrderByDescending(c => c.CreatedDate).Skip(skipCount).Take(request.Pagesize); var productLinq = _productRepo.GetAll().Join(_storeRepo.GetAll(), o => o.Store_Id, i => i.Id, (o, i) => new { Pd = o, S = i }); var promotionLinq = _promotionRepo.GetAll().Join(_storeRepo.GetAll(), o => o.Store_Id, i => i.Id, (o, i) => new { Pr = o, S = i }); var linq2 = linq.GroupJoin(productLinq, o => o.FromProduct, i => i.Pd.Id, (o, i) => new { C = o, Pd = i.FirstOrDefault() }) .GroupJoin(promotionLinq, o => o.C.FromPromotion, i => i.Pr.Id, (o, i) => new { C = o.C, Pd = o.Pd, Pr = i.FirstOrDefault() }); var responseData = from l in linq2.ToList() select new CouponInfoResponse().FromEntity <CouponInfoResponse>(l.C, c => { var prod = l.Pd; if (prod != null) { c.ProductInfoResponse = new ProductInfoResponse().FromEntity <ProductInfoResponse>(prod.Pd, p => { p.StoreInfoResponse = new StoreInfoResponse().FromEntity <StoreInfoResponse>(prod.S); }); c.ProductId = c.ProductInfoResponse.Id; c.ProductName = c.ProductInfoResponse.Name; c.ProductDescription = c.ProductInfoResponse.Description; c.ProductType = (int)SourceType.Product; } var pro = l.Pr; if (pro != null) { c.PromotionInfoResponse = new PromotionInfoResponse().FromEntity <PromotionInfoResponse>(pro.Pr, p => { p.StoreInfoResponse = new StoreInfoResponse().FromEntity <StoreInfoResponse>(pro.S); }); c.ProductId = c.PromotionInfoResponse.Id; c.ProductName = c.PromotionInfoResponse.Name; c.ProductDescription = c.PromotionInfoResponse.Description; c.ProductType = (int)SourceType.Promotion; } }); var response = new CouponInfoCollectionResponse(request.PagerRequest, totalCount) { CouponInfoResponses = responseData.ToList() }; return(new RestfulResult { Data = new ExecuteResult <CouponInfoCollectionResponse>(response) }); }
public ActionResult ApplyCouponToCart(int cartID, string couponCode) { string message = ""; Cart cart = cartRepository.GetById(cartID); Coupons coupon = couponRepository.Get(x => x.CouponCode.Equals(couponCode)); if (cart != null && coupon != null) { if (coupon.ExpiresAt < DateTime.Now) { message = $"Coupon already expired!"; return(Json(message, JsonRequestBehavior.AllowGet)); } if (coupon.CustomerID != null && Session["user"] != null) { User loggedInUser = (User)Session["user"]; if (coupon.CustomerID != loggedInUser.UserID) { message = "You are not authorized to use this coupon"; return(Json(message, JsonRequestBehavior.AllowGet)); } } if (coupon.Remaining < 1) { message = $"All the coupons defined to couponCode:{couponCode} have used!"; return(Json(message, JsonRequestBehavior.AllowGet)); } bool doesUserHaveItemInTheCartFromCouponsCategory = false; bool didCouponUsed = false; foreach (var cartDetail in cart.CartDetails) { if (coupon.CategoryID != null) { if (cartDetail.ProductDetail.Product.SubCategoryID == coupon.CategoryID) { cartDetail.UnitPrice *= ((100 - coupon.Discount) / 100); cartDetailRepository.Update(cartDetail); cartDetailRepository.Save(); didCouponUsed = true; doesUserHaveItemInTheCartFromCouponsCategory = true; } } else { cartDetail.UnitPrice *= ((100 - coupon.Discount) / 100); cartDetailRepository.Update(cartDetail); cartDetailRepository.Save(); didCouponUsed = true; } } if (coupon.CategoryID != null && doesUserHaveItemInTheCartFromCouponsCategory) { message = $"You can't use this coupon due you don't have item in your cart from coupons category!"; return(Json(message, JsonRequestBehavior.AllowGet)); } if (didCouponUsed) { message = "Coupon successfully applied to your cart"; if (coupon.Remaining != null) { coupon.Remaining--; couponRepository.Update(coupon); couponRepository.Save(); } return(Json(message, JsonRequestBehavior.AllowGet)); } } else { if (cart == null) { message = $"Cart with id of {cartID} did not found in the database!"; } if (coupon == null) { message = $"Coupon with couponCode of {couponCode} did not found in the database!"; } return(Json(message, JsonRequestBehavior.AllowGet)); } return(Json(false, JsonRequestBehavior.AllowGet)); }