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)); } }
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)); } }
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)); } }
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)); } }
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)); } }