コード例 #1
0
        public async Task <ResponseStructure> DecreaseProductCount(HttpRequest httpRequest, HttpResponse httpResponse)
        {
            try
            {
                if (!this.STOREISACTIVE)
                {
                    return(ResponseModel.Error("با عرض پوزش ، در حال حاضر امکان سفارش گیری وجود ندارد"));
                }

                StringValues data;

                if (!httpRequest.Headers.TryGetValue("AddToCart", out data))
                {
                    return(ResponseModel.Error("دسترسی غیر مجاز"));
                }

                var dec = Barayand.Common.Services.CryptoJsService.DecryptStringAES(data);

                FullPropertyBasketItem rm = JsonConvert.DeserializeObject <FullPropertyBasketItem>(dec);

                ProductCombineModel findProduct = new ProductCombineModel();

                FullPropertyBasketModel BasketModel = new FullPropertyBasketModel();
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        BasketModel = JsonConvert.DeserializeObject <FullPropertyBasketModel>(basketInfo);
                        if (BasketModel.CartItems.Count() > 0)
                        {
                            if (BasketModel.CartItems.Count(x => x.ProductCombineId == rm.ProductCombineId && x.ProductType == rm.ProductType) > 0)
                            {
                                var existsCombine = BasketModel.CartItems.FirstOrDefault(x => x.ProductCombineId == rm.ProductCombineId && x.ProductType == rm.ProductType);


                                existsCombine.Quantity = existsCombine.Quantity - rm.Quantity;
                                if (existsCombine.Quantity < 1)
                                {
                                    BasketModel.CartItems.Remove(existsCombine);
                                }
                            }
                        }
                    }
                }

                string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(BasketModel));
                httpResponse.Cookies.Delete("Cart");
                httpResponse.Cookies.Append("Cart", token);
                return(ResponseModel.Success("محصول مورد نظر با موفقیت به سبد خرید اضافه گردید"));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error in adding product to basket", ex);
                return(ResponseModel.ServerInternalError(data: ex));
            }
        }
コード例 #2
0
        public async Task <ResponseStructure> UseCoppon(HttpRequest httpRequest, HttpResponse httpResponse)
        {
            try
            {
                StringValues data;
                if (!httpRequest.Headers.TryGetValue("CouponInfo", out data))
                {
                    return(ResponseModel.Error("Invalid access detect."));
                }
                var dec = Barayand.Common.Services.CryptoJsService.DecryptStringAES(data);
                FullPropertyBasketItem rm = JsonConvert.DeserializeObject <FullPropertyBasketItem>(dec);
                var coppon = ((List <CopponModel>)(await _couponrepo.GetAll()).Data).FirstOrDefault(x => x.CP_Code == rm.CopponCode);
                if (coppon == null)
                {
                    return(ResponseModel.Error("کد تخفیف نامعتبر است."));
                }
                if (DateTime.Now >= coppon.CP_EndDate || DateTime.Now < coppon.CP_StartDate)
                {
                    return(ResponseModel.Error("کد تخفیف منقضی شده است."));
                }
                FullPropertyBasketModel basket = new FullPropertyBasketModel();
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        basket = JsonConvert.DeserializeObject <FullPropertyBasketModel>(basketInfo);
                        if (basket.Coppon.Count > 0)
                        {
                            return(ResponseModel.Error("بیشتر از یک کد تخفیف نمیتوانید استفاده نمایید"));
                        }
                        if (basket.Coppon.Count(x => x.CP_Code == coppon.CP_Code) > 0)
                        {
                            return(ResponseModel.Error("کد تخفیف قبلا اعمال شده است"));
                        }
                        basket.Coppon.Add(coppon);
                    }
                }

                string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(basket));
                httpResponse.Cookies.Delete("Cart");
                httpResponse.Cookies.Append("Cart", token);
                return(ResponseModel.Success("کد تخفیف با موفقیت اعمال گردید"));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error in adding coupon to customer basket", ex);
                return(ResponseModel.ServerInternalError(data: ex));
            }
        }
コード例 #3
0
        public async Task <ResponseStructure> RemoveCartItem(HttpRequest httpRequest, HttpResponse httpResponse)
        {
            try
            {
                StringValues data;
                if (!httpRequest.Headers.TryGetValue("RemoveCartItem", out data))
                {
                    return(ResponseModel.Error("Invalid access detect."));
                }
                var dec = Barayand.Common.Services.CryptoJsService.DecryptStringAES(data);
                FullPropertyBasketItem rm = JsonConvert.DeserializeObject <FullPropertyBasketItem>(dec);

                FullPropertyBasketModel basket = new FullPropertyBasketModel();
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        basket = JsonConvert.DeserializeObject <FullPropertyBasketModel>(basketInfo);
                        var item = basket.CartItems.FirstOrDefault(x => x.ProductCombineId == rm.ProductCombineId && x.ProductType == rm.ProductType);
                        if (item != null)
                        {
                            basket.CartItems.Remove(item);
                        }
                    }
                }
                httpResponse.Cookies.Delete("Cart");

                if (basket.CartItems.Count > 0)
                {
                    string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(basket));

                    httpResponse.Cookies.Append("Cart", token);
                }
                return(ResponseModel.Success("Product removed."));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error in removing cart item", ex);
                return(ResponseModel.ServerInternalError(data: ex));
            }
        }
コード例 #4
0
        public async Task <ResponseStructure> AddToCart(HttpRequest httpRequest, HttpResponse httpResponse)
        {
            try
            {
                if (!this.STOREISACTIVE)
                {
                    return(ResponseModel.Error("با عرض پوزش ، در حال حاضر امکان سفارش گیری وجود ندارد"));
                }

                StringValues data;

                if (!httpRequest.Headers.TryGetValue("AddToCart", out data))
                {
                    return(ResponseModel.Error("دسترسی غیر مجاز"));
                }

                var dec = Barayand.Common.Services.CryptoJsService.DecryptStringAES(data);

                FullPropertyBasketItem rm = JsonConvert.DeserializeObject <FullPropertyBasketItem>(dec);

                ProductCombineModel findProduct = new ProductCombineModel();
                if (rm.ProductType == 1)
                {
                    findProduct = AllProducts.FirstOrDefault(x => x.X_Id == rm.ProductCombineId);
                    if (findProduct == null)
                    {
                        return(ResponseModel.Error("تنوع محصول مورد نظر یافت نشد"));
                    }

                    if (!findProduct.X_Status || findProduct.X_IsDeleted || findProduct.X_AvailableCount < 1)
                    {
                        return(ResponseModel.Error("متاسفانه محصول مورد نظر در انبار موجود نمیباشد"));
                    }

                    if (rm.ProductType == 1 && (rm.Quantity) > findProduct.X_AvailableCount)
                    {
                        return(ResponseModel.Error("محصول مورد نظر در تعداد درخواستی موجود نمیباشد"));
                    }
                }


                FullPropertyBasketModel BasketModel = new FullPropertyBasketModel();
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        BasketModel = JsonConvert.DeserializeObject <FullPropertyBasketModel>(basketInfo);
                        if (BasketModel.CartItems.Count() > 0)
                        {
                            if (BasketModel.CartItems.Count(x => x.ProductCombineId == rm.ProductCombineId && x.ProductType == rm.ProductType) > 0)
                            {
                                var existsCombine = BasketModel.CartItems.FirstOrDefault(x => x.ProductCombineId == rm.ProductCombineId && x.ProductType == rm.ProductType);

                                if ((existsCombine.Quantity + rm.Quantity) > findProduct.X_AvailableCount)
                                {
                                    return(ResponseModel.Error("محصول مورد نظر در تعداد درخواستی موجود نمیباشد"));
                                }

                                existsCombine.Quantity = existsCombine.Quantity + rm.Quantity;
                            }
                            else
                            {
                                BasketModel.CartItems.Add(rm);
                            }
                        }
                    }
                    else
                    {
                        BasketModel.CartItems.Add(rm);
                    }
                }
                else
                {
                    BasketModel.CartItems.Add(rm);
                    BasketModel.OrderDate = DateTime.Now;
                }
                string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(BasketModel));
                httpResponse.Cookies.Delete("Cart");
                httpResponse.Cookies.Append("Cart", token);
                return(ResponseModel.Success("محصول مورد نظر با موفقیت به سبد خرید اضافه گردید"));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error in adding product to basket", ex);
                return(ResponseModel.ServerInternalError(data: ex));
            }
        }
コード例 #5
0
        public async Task <ResponseStructure> UseCoppon(HttpRequest httpRequest, HttpResponse httpResponse)
        {
            try
            {
                StringValues data;
                if (!httpRequest.Headers.TryGetValue("CouponInfo", out data))
                {
                    return(ResponseModel.Error("Invalid access detect."));
                }
                var dec = Barayand.Common.Services.CryptoJsService.DecryptStringAES(data);
                FullPropertyBasketItem rm = JsonConvert.DeserializeObject <FullPropertyBasketItem>(dec);
                var coppon = ((List <CopponModel>)(await _couponrepo.GetAll()).Data).FirstOrDefault(x => x.CP_Code == rm.CopponCode);
                if (coppon == null)
                {
                    return(ResponseModel.Error("کد تخفیف نامعتبر است."));
                }
                if (DateTime.Now >= coppon.CP_EndDate || DateTime.Now < coppon.CP_StartDate)
                {
                    return(ResponseModel.Error("کد تخفیف منقضی شده است."));
                }
                FullPropertyBasketModel basket = new FullPropertyBasketModel();
                string cookie;
                if (httpRequest.Cookies.TryGetValue("Cart", out cookie))
                {
                    if (cookie != null)
                    {
                        var basketInfo = Barayand.Common.Services.CryptoJsService.DecryptStringAES(cookie);
                        basket = JsonConvert.DeserializeObject <FullPropertyBasketModel>(basketInfo);
                        if (basket.Coppon.Count > 0)
                        {
                            return(ResponseModel.Error("بیشتر از یک کد تخفیف نمیتوانید استفاده نمایید"));
                        }
                        if (basket.Coppon.Count(x => x.CP_Code == coppon.CP_Code) > 0)
                        {
                            return(ResponseModel.Error("کد تخفیف قبلا اعمال شده است"));
                        }
                        int DiscountAbleProductCount = 0;
                        foreach (var item in basket.CartItems)
                        {
                            if (item.ProductType == 1)
                            {
                                var productcomine = await _productcombinerepo.GetById(item.ProductCombineId);

                                var product = await _productrepo.GetById(productcomine.X_ProductId);

                                var priceModel = await _priceCalculator.CalculateProductCombinePrice(productcomine.X_Id, product.P_EndLevelCatId);

                                if (!priceModel.HasDiscount)
                                {
                                    if (!await _priceCalculator.checkProductCombineExistsDiscount(item.ProductCombineId, product.P_EndLevelCatId))
                                    {
                                        DiscountAbleProductCount++;
                                    }
                                }
                            }
                            else
                            {
                                DiscountAbleProductCount++;
                            }
                        }
                        if (DiscountAbleProductCount > 0)
                        {
                            basket.Coppon.Add(coppon);
                        }
                        else
                        {
                            return(ResponseModel.Error("کد تخفیف مورد نظر مختص به محصولات بدون تخفیف میباشد."));
                        }
                    }
                }

                string token = Barayand.Common.Services.CryptoJsService.EncryptStringToAES(JsonConvert.SerializeObject(basket));
                httpResponse.Cookies.Delete("Cart");
                httpResponse.Cookies.Append("Cart", token);
                return(ResponseModel.Success("کد تخفیف با موفقیت اعمال گردید"));
            }
            catch (Exception ex)
            {
                _logger.LogError("Error in adding coupon to customer basket", ex);
                return(ResponseModel.ServerInternalError(data: ex));
            }
        }