Ejemplo n.º 1
0
        public JsonResult _SaveDetail(OrderDetail model, ProductDetailRequest productRequest)
        {
            if (productRequest != null && productRequest.IsNewProduct && productRequest.ProductName != null)
            {
                var product = StockTakeApiService.CreateProductOnStockTake(productRequest);
                model.ProductId = product.Result.ProductId;
            }

            model = _commonDbServices.SetDetails(model, productRequest.AccountId, Request.UrlReferrer.AbsolutePath, productRequest.ProcessByType);

            if (Request.UrlReferrer.AbsolutePath.Contains("SalesOrder") && model.ProductId > 0 && model.OrderDetailID < 1)
            {
                var minPrice = _productPriceService.GetProductPriceThresholdByAccountId(model.ProductId, productRequest != null ? productRequest.AccountId : 0);
                if (model.Price < minPrice.MinimumThresholdPrice)
                {
                    minPrice.Success          = false;
                    model.OrderDetailStatusId = (int)OrderStatusEnum.AwaitingAuthorisation;
                    if (productRequest.ThresholdAcknowledged)
                    {
                        UpdatedOrderDetails(model, productRequest.CaseQuantity, productRequest.PageSessionToken);
                        return(Json(new { error = "" }, JsonRequestBehavior.AllowGet));
                    }
                    return(Json(new { error = minPrice.FailureMessage, Threshold = minPrice }, JsonRequestBehavior.AllowGet));
                }
            }

            UpdatedOrderDetails(model, productRequest.CaseQuantity, productRequest.PageSessionToken, productRequest.IsTransferAdd);
            return(Json(new { error = "" }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 2
0
        public IResponseBase Execute(IRequestParameter parameters)
        {
            var result = new Response <ProductDetailResponse>();

            try
            {
                _request = (ProductDetailRequest)parameters;
                var cacheKey = string.Format(Config.CacheKeys.ProductDetails, _request.Id, _request.Color);
                result = CacheMemory.Get <Response <ProductDetailResponse> >(cacheKey);
                if (result == null || string.IsNullOrWhiteSpace(result.resultset.Product.ProductId))
                {
                    var config = BuildAPIConfig(parameters);
                    result = GetResponse(config);
                    if (!result.errors.Any() && !string.IsNullOrEmpty(result.resultset.Product.ProductId))
                    {
                        CacheMemory.SetAndExpiresHoursAsync(cacheKey, result, 1);
                    }
                }
            }
            catch (Exception ex)
            {
                _errors.Add(ex.Handle("ProductDetail.Execute", ErrorSeverity.FollowUp, ErrorType.RequestError));
            }
            return(result);
        }
Ejemplo n.º 3
0
        public JsonResult CreateProduct(BSDto product)
        {
            if ((product.IsNewProduct == true) && (product.ProductName != null))
            {
                ProductDetailRequest productDetailRequest = new ProductDetailRequest();
                productDetailRequest.IsNewProduct        = product?.IsNewProduct ?? false;
                productDetailRequest.ProductName         = product?.ProductName;
                productDetailRequest.TenantId            = CurrentTenantId;
                productDetailRequest.TaxIds              = product?.TaxId ?? 3;
                productDetailRequest.ProductDesc         = product.ProductDesc;
                productDetailRequest.ProductDepartmentId = product.ProductDepartmentId;
                productDetailRequest.ProductGroupId      = product.ProductGroupId;

                var products = StockTakeApiService.CreateProductOnStockTake(productDetailRequest);
                if (!string.IsNullOrEmpty(products?.Result?.FailureMessage))
                {
                    return(Json(products.Result.FailureMessage));
                }
                product.ProductId    = products.Result.ProductId;
                product.ProductName  = product.ProductName;
                product.SKU          = products.Result.ProductCode;
                product.GroupProduct = products.Result.ProductGroup;
            }
            product.Quantity = product.Quantity ?? 1;
            product.Price    = product.Price ?? 0;
            var lst = Session["bsList"] as List <BSDto>;

            product.Id++;
            lst.Add(product);
            return(null);
        }
        /// <summary>
        /// Get Product Details
        /// </summary>
        /// <param name="code"></param>
        /// <param name="currencyCode"></param>
        /// <param name="excludeTourGradeAvailability"></param>
        /// <param name="showUnavailable"></param>
        /// <returns></returns>
        public async Task <ProductDetailResponse> GetProductDetailInfo(ProductDetailRequest productDetailModel, ViatorSetting setting = null)
        {
            var    uri      = $"service/product";
            string finalURL = $"{GenerateBaseURL(uri, setting)}&{GenerateQueryString(productDetailModel)}";
            var    response = await _httpClient.GetStringAsync(finalURL);

            var result = ProductDetailResponse.FromJson(response);

            return(result);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 获取图文描述
 /// </summary>
 /// <param name="request"></param>
 /// <returns></returns>
 public Task <List <string> > GetProductDescx(ProductDetailRequest request)
 {
     return(Task.Factory.StartNew(() =>
     {
         ProductDescxResponse response = new HttpUtils().DoGet <ProductDescxResponse>(ConstantsUtils.TAOBAO_API_PRODUCTDESCX,
                                                                                      new Dictionary <string, string>()
         {
             { "data", "{'item_num_id':" + request.ProductId + "}" },
             { "type", "json" },
             { "_", DateTime.Now.Ticks.ToString() }
         });
         if (null != response && response.Data != null && null != response.Data.Images)
         {
             return response.Data.Images.Select(item => ToolUtils.GetThumbnail(item, "")).ToList();
         }
         return new List <string>();
     }));
 }
Ejemplo n.º 6
0
        public async Task <ProductDetailResponse> ProductDetail(ProductDetailRequest request)
        {
            var detailTask = taobaoApiDataRepository.GetProductDetail(request);
            var imageTask  = taobaoApiDataRepository.GetProductDescx(request);

            return(await Task.WhenAll(detailTask, imageTask).ContinueWith(tasks =>
            {
                TbkDetailInfo apiDetail = detailTask.Result;
                if (null != detailTask && !string.IsNullOrWhiteSpace(apiDetail.NumIid))
                {
                    return new ProductDetailResponse()
                    {
                        Details = imageTask.Result,
                        SPLM = apiDetail.CategoryId,
                        SPMC = apiDetail.Title,
                        Images = apiDetail.Images,
                        Evaluates = apiDetail.Evaluates,
                        DPMC = apiDetail.ShopName,
                        DPZT = apiDetail.ShopIcon
                    };
                }
                else
                {
                    NTbkItem sdkDetail = taobaoSdkDataRepository.GetDetail(request.ProductId);
                    if (sdkDetail == null)
                    {
                        return new ProductDetailResponse();
                    }
                    sdkDetail.SmallImages.Insert(0, sdkDetail.PictUrl);
                    return new ProductDetailResponse()
                    {
                        SPMC = sdkDetail.Title,
                        Images = sdkDetail.SmallImages?.Select(item => ToolUtils.GetThumbnail(item, size: ""))?.ToList(),
                        Details = imageTask.Result
                    };
                }
            }));
        }
Ejemplo n.º 7
0
        public static dbentities.Product DtoToEntity(this ProductDetailRequest request)
        {
            dbentities.Product entity = null;

            if (request != null)
            {
                entity = new dbentities.Product
                {
                    ProductID          = request.ProductId,
                    ProductCode        = request.ProductCode,
                    IsActive           = request.IsActive,
                    CreatedBy          = request.CreatedBy,
                    CreatedTime        = request.CreatedTime,
                    ModifiedBy         = request.ModifiedBy,
                    ModifiedTime       = request.ModifiedTime,
                    ProductDescription = request.ProductDescription,
                    Quantity           = request.Quantity,
                    CategoryID         = request.CategoryId
                };
            }

            return(entity);
        }
        /// <summary>
        /// GetProductDetailByID
        /// </summary>
        /// <param name="request">ProductDetailRequest</param>
        /// <returns>GetProductDetailResponse</returns>
        public async Task <GetProductDetailResponse> GetProductDetailByID(ProductDetailRequest request)
        {
            var response = new GetProductDetailResponse();

            try
            {
                var param = new ProductDetailByIDParameter()
                {
                    ID = request.ID
                };

                var result = _dataAccess.GetProductDetailByID(param);
                if (result != null)
                {
                    response.ProductDetail = mapper.Map <GETPRODUCTDETAIL_BY_ID_Result, ProductDetailDto>(result);
                    response.Success       = true;
                }
            }
            catch (Exception ex)
            {
                response.Success = false;
            }
            return(await Task.FromResult(response));
        }
Ejemplo n.º 9
0
        public JsonResult UpdateProductDetails(ProductDetailRequest request)
        {
            bool   isSucess            = false;
            string messageAlert        = string.Empty;
            bool   productUpdateResult = false;

            var currentUserId       = Session[LookupKey.SessionVariables.UserId].IsNull() ? 0 : Convert.ToInt64(Session[LookupKey.SessionVariables.UserId]);
            var passedProductResult = _productServices.GetAll().Where(m => m.ProductId == request.ProductId).FirstOrDefault();

            request.CreatedTime  = passedProductResult.CreatedTime;
            request.ModifiedBy   = currentUserId;
            request.ModifiedTime = DateTime.Now;



            //if (ModelState.IsValid)
            //{
            var codeProductDetailResult = _productServices.GetAll().Where(p => p.ProductCode == request.ProductCode &&
                                                                          p.IsActive &&
                                                                          p.ProductId != request.ProductId).FirstOrDefault();

            #region Validate same product code
            if (!codeProductDetailResult.IsNull())
            {
                return(Json(new { isSucess = isSucess, messageAlert = Messages.ProductCodeValidation }, JsonRequestBehavior.AllowGet));
            }
            #endregion


            //Update Product Details
            productUpdateResult = _productServices.UpdateDetails(request);

            if (!productUpdateResult)
            {
                return(Json(new { isSucess = isSucess, messageAlert = Messages.ServerError }, JsonRequestBehavior.AllowGet));
            }

            #region Product Price
            for (int i = 1; i <= 3; i++)
            {
                var price = 0.0m;
                switch (i)
                {
                case 1:
                    price = request.BigBuyerPrice;
                    break;

                case 2:
                    price = request.ResellerPrice;
                    break;

                case 3:
                    price = request.RetailerPrice;
                    break;

                default:
                    price = 0;
                    break;
                }
                var productPricesResult = _productServices.GetAllProductPrices().Where(m => m.ProductId == request.ProductId && m.PriceTypeId == i).FirstOrDefault();
                if (!productPricesResult.IsNull())
                {
                    ProductPricesLogDetailRequest productPricesLogDetailRequest = new ProductPricesLogDetailRequest()
                    {
                        ProductId          = request.ProductId,
                        PriceTypeId        = i,
                        Price              = price,
                        ProductPriceLogsId = 0,
                        CreatedBy          = currentUserId,
                        CreatedTime        = DateTime.Now,
                    };
                    _productServices.SaveProductLogPrices(productPricesLogDetailRequest);
                }
                ProductPricesDetailRequest productPricesDetailRequest = new ProductPricesDetailRequest()
                {
                    ProductId   = request.ProductId,
                    PriceTypeId = i,
                    Price       = price
                };
                _productServices.UpdateProductPrice(productPricesDetailRequest);
            }
            #endregion

            var productLogDetailRequest = new ProductLogDetailRequest()
            {
                ProductLogsId      = 0,
                ProductId          = request.ProductId,
                ProductCode        = request.ProductCode,
                ProductDescription = request.ProductDescription,
                Quantity           = request.Quantity,
                //UnitPrice = request.UnitPrice,
                IsActive     = request.IsActive,
                CreatedBy    = request.ModifiedBy,
                CreatedTime  = DateTime.Now,
                ModifiedBy   = null,
                ModifiedTime = null,
                CategoryId   = request.CategoryId
            };
            var productLogResult = _productServices.SaveProductLogs(productLogDetailRequest);

            if (productLogResult <= 0)
            {
                return(Json(new { isSucess = isSucess, messageAlert = Messages.ServerError }, JsonRequestBehavior.AllowGet));
            }

            isSucess = true;
            var response = new
            {
                isSucess     = isSucess,
                messageAlert = messageAlert
            };
            return(Json(response, JsonRequestBehavior.AllowGet));
            //}
            //else
            //{

            //    var errors = ModelState.Values.SelectMany(v => v.Errors)
            //               .ToList();
            //    foreach (var err in errors)
            //    {
            //        Logging.Information("(Response-Model-Stocks) UpdateProductDetails : " + err.ErrorMessage);
            //    }

            //    return Json(new { isSucess = isSucess, messageAlert = Messages.ErrorOccuredDuringProcessing }, JsonRequestBehavior.AllowGet);
            //}
        }
        /// <summary>
        /// Takes a list of products (as a SkuPidCatalog array) and filters out products that don't exist.
        /// </summary>
        private SkuPidCatalog[] VerifyProductsExist(SkuPidCatalog[] skuPidCatalogs)
        {
            // Handle empty list efficiently
            if (skuPidCatalogs.Length == 0)
            {
                return(skuPidCatalogs);
            }

            Product[] products = null;

            // Load the products from CSI
            using (var catalogueService = _catalogueServiceFactory.Create())
            {
                var request = new ProductDetailRequest()
                {
                    GetRatingsData         = false,
                    GetExtendedInfo        = false,
                    GetExternalResources   = false,
                    GetCdTracks            = false,
                    GetStorePrices         = false,
                    UpdateProductWithSales = false,
                    GetReviews             = false,
                    GetProductAvailability = false,
                    SearchAllCatalogues    = true,
                    Language                    = Language.English,
                    GetEndecaData               = false,
                    OfferDetailLevel            = SpecialOfferDetailLevel.None,
                    PromotionsTestEffectiveDate = null,
                    IsPreview                   = false
                };

                var pidCatalogs = skuPidCatalogs
                                  .Select(spc => string.Format("{0}:{1}", spc.Pid, spc.Catalog))
                                  .ToArray();

                products = catalogueService.ServiceClient.GetProducts(pidCatalogs, request, Channel.Online);
            }

            // Create list of PIDs found
            string[] pidsFound = new string[0];
            if (products != null)
            {
                pidsFound = products
                            .Where(p => p != null && !string.IsNullOrWhiteSpace(p.PID) && !string.IsNullOrWhiteSpace(p.Title))
                            .Select(product => product.PID)
                            .ToArray();
            }

            // Collect results
            var verifiedSkuPidCatalogs = new List <SkuPidCatalog>();

            foreach (var skuPidCatalog in skuPidCatalogs)
            {
                if (pidsFound.Contains(skuPidCatalog.Pid))
                {
                    verifiedSkuPidCatalogs.Add(skuPidCatalog);
                }
            }

            // Log SKUs that were removed
            var removedSkuPidCatalogs = skuPidCatalogs.Except(verifiedSkuPidCatalogs);

            if (removedSkuPidCatalogs.Any())
            {
                Log.WarnFormat("The following SKUs were removed because the products don't exist: {0}", string.Join(", ", removedSkuPidCatalogs.Select(spc => spc.Sku)));
            }

            return(verifiedSkuPidCatalogs.ToArray());
        }
Ejemplo n.º 11
0
        public async Task <IHttpActionResult> CreateProductOnStockTake(ProductDetailRequest request)
        {
            var result = await StockTakeApiService.CreateProductOnStockTake(request);

            return(Ok(result));
        }
Ejemplo n.º 12
0
        public IHttpActionResult GetProductDetail(ProductDetailRequest RequestData)
        {
            var result = _businessLogic.GetProductDetailByID(RequestData);

            return(new ActionResult <GetProductDetailResponse>(result.Result, Request));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// 获取详情描述6.0
        /// </summary>
        public Task <TbkDetailInfo> GetProductDetail(ProductDetailRequest request)
        {
            return(Task.Factory.StartNew(() =>
            {
                return new TbkDetailInfo();

                string reqData = Uri.EscapeDataString(JsonConvert.SerializeObject(new TaobaoProductDetailRequest()
                {
                    ItemNumId = request.ProductId.ToString(),
                    DetailV = "3.0.7",
                    ExParams = JsonConvert.SerializeObject(new ProductDetailExParams()
                    {
                        CountryCode = "CN",
                        Id = request.ProductId.ToString(),
                        ItemId = request.ProductId.ToString(),
                        PhoneType = "iPhone7,1",
                        Time = ToolUtils.GetUnixTime()
                    })
                }));
                int random = ToolUtils.GetRandomNum() % 3;
                string url = "";
                if (random == 0)
                {
                    url = $"{ConstantsUtils.TAOBAO_API_PRODUCTDETAIL}?id={request.ProductId}";
                    TaobaoProductDetailV5Response responseV5 = new HttpUtils().DoGet <TaobaoProductDetailV5Response>(url, null);
                    if (null != responseV5 &&
                        responseV5.Data != null &&
                        responseV5.Data.ItemInfoModel != null &&
                        responseV5.Data.Seller != null)
                    {
                        var lstImage = responseV5.Data.ItemInfoModel.PicsPath?.Select(item => ToolUtils.GetThumbnail(item, "")).ToList();
                        return new TbkDetailInfo()
                        {
                            Title = responseV5.Data.ItemInfoModel.Title,
                            CategoryId = responseV5.Data.ItemInfoModel.CategoryId,
                            Evaluates = responseV5.Data.Seller.EvaluateInfo.Select(item => new Evaluate()
                            {
                                Title = item.Title,
                                Score = item.Score
                            }).ToList(),
                            ShopIcon = ToolUtils.GetThumbnail(responseV5.Data.Seller.PicUrl, ""),
                            NumIid = responseV5.Data.ItemInfoModel.ItemId,
                            ShopName = responseV5.Data.Seller.ShopTitle,
                            Images = lstImage ?? new List <string>()
                        };
                    }
                }
                else
                {
                    if (random == 1)
                    {
                        url = $"{ConstantsUtils.TAOBAO_API_PRODUCTDETAIL1}?data={reqData}";
                    }
                    else
                    {
                        url = $"{ConstantsUtils.TAOBAO_API_PRODUCTDETAIL2}?data={reqData}";
                    }
                    TaobaoProductDetailResponse responseV6 = new HttpUtils().DoGet <TaobaoProductDetailResponse>(url, null);
                    if (null != responseV6 &&
                        null != responseV6.Data &&
                        null != responseV6.Data.Item &&
                        null != responseV6.Data.Seller)
                    {
                        var lstImage = responseV6.Data.Item.Images?.Select(item => ToolUtils.GetThumbnail(item, "")).ToList();
                        return new TbkDetailInfo()
                        {
                            NumIid = responseV6.Data.Item.ItemId,
                            Title = responseV6.Data.Item.Title,
                            CategoryId = responseV6.Data.Item.CategoryId,
                            Images = lstImage ?? new List <string>(),
                            ShopIcon = ToolUtils.GetThumbnail(responseV6.Data.Seller.ShopIcon, ""),
                            ShopName = responseV6.Data.Seller.ShopName,
                            Evaluates = responseV6.Data.Seller.Evaluates.Select(item => new Evaluate
                            {
                                Score = item.Score,
                                Title = item.Title
                            }).ToList()
                        };
                    }
                }
                return new TbkDetailInfo();
            }));
        }
        public async Task <IHttpActionResult> VerifyProductInfoBySerial(ProductDetailRequest request)
        {
            var result = await _productService.GetProductInfoBySerial(request.SerialCode, request.TenantId);

            return(Ok(result));
        }
Ejemplo n.º 15
0
        public IActionResult UpdateProductDetails(ProductDetailRequest request)
        {
            bool   isSucess            = false;
            string messageAlert        = string.Empty;
            bool   productUpdateResult = false;

            var currentUserId       = HttpContext.Session.GetString(LookupKey.SessionVariables.UserId).IsNull() ? 0 : Convert.ToInt64(HttpContext.Session.GetString(LookupKey.SessionVariables.UserId));
            var passedProductResult = _productService.GetAllProductDetails().Where(m => m.ProductId == request.ProductId).FirstOrDefault();

            request.CreatedTime  = passedProductResult.CreatedTime;
            request.ModifiedBy   = currentUserId;
            request.ModifiedTime = DateTime.Now;

            var codeProductDetailResult = _productService.GetAllProductDetails().Where(p => p.ProductCode == request.ProductCode &&
                                                                                       p.IsActive &&
                                                                                       p.ProductId != request.ProductId).FirstOrDefault();

            #region Validate same product code
            if (!codeProductDetailResult.IsNull())
            {
                return(Ok(new { isSucess = isSucess, messageAlert = Messages.ProductCodeValidation }));
            }
            #endregion


            //Update Product Details
            productUpdateResult = _productService.UpdateDetails(request);

            if (!productUpdateResult)
            {
                return(Ok(new { isSucess = isSucess, messageAlert = Messages.ServerError }));
            }

            var productHistoryDetailRequest = new ProductHistoryDetailRequest()
            {
                ProductHistoryId       = 0,
                ProductId              = request.ProductId,
                QuantityAmmend         = 0,
                QuantityPrevious       = codeProductDetailResult.Quantity,
                QuantityCurrent        = codeProductDetailResult.Quantity,
                OrderTransactionTypeId = LookupKey.OrderTransactionType.UpdateProductDetailsId,
                OrderRemarks           = request.OrderRemarks,
                CreatedBy              = currentUserId,
                CreatedTime            = DateTime.Now,
                ModifiedBy             = null,
                ModifiedTime           = null
            };

            var productHistoryId = _productService.SaveProductHistory(productHistoryDetailRequest);

            if (productHistoryId <= 0)
            {
                return(Ok(new { isSucess = isSucess, messageAlert = Messages.ServerError }));
            }

            isSucess = true;
            var response = new
            {
                isSucess     = isSucess,
                messageAlert = messageAlert
            };
            return(Ok(response));
        }