Exemple #1
0
        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));
        }
Exemple #2
0
        private void UpdateCoupon(string couponCode)
        {
            var counpon = _CouponRepository.Get(x => x.Code == couponCode);

            if (counpon != null)
            {
                counpon.Used++;
            }
            _CouponRepository.Update(counpon);
            _unitOfWork.Commit();
        }
Exemple #3
0
 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));
 }
Exemple #4
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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)
            });
        }
Exemple #8
0
        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));
        }