Ejemplo n.º 1
0
        public async Task <HttpMessage <GoodsSearchResult> > PartNumber(PartNumberQuery pq)
        => await TryCatchResponseAsync(async() =>
        {
            return(await Task.Run(() =>
            {
                List <GoodsSearch> resultSearch = GetSearchGoods(pq.partNumber, pq.pageRows, pq.page);
                Principal principal = Core.Http.HttpContext.Current.User as Principal;
                int userId = principal == null || principal.User == null ? 0 : principal.User.Id;

                GoodsResult goodsResult = GetGoods(resultSearch, userId, pq, true);
                GoodsSearchResult result = new GoodsSearchResult()
                {
                    //Result = goodsResult.Result.Values.ToList(),
                    //ResultSub = goodsResult.ResultSubs.Values.ToList(),
                    Result = new List <GoodsSubTypeSearchResult>(),
                    Page = resultSearch.Count > 0 ? resultSearch[0].Page : 0,
                    MaxPage = resultSearch.Count > 0 ? resultSearch[0].MaxPage : 0
                };

                foreach (var sti in goodsResult.Result.Values)
                {
                    result.Result.Add(new GoodsSubTypeSearchResult()
                    {
                        Id = sti.Id, Descr = sti.Descr, Goods = sti.Goods.Values.ToList()
                    });
                }

                foreach (var sti in result.Result)
                {
                    foreach (var ritem in sti.Goods)
                    {
                        ritem.Deliveries.Sort((x, y) => x.DeliveryAmount.CompareTo(y.DeliveryAmount));
                        ritem.DefaultDelivery = ritem.Deliveries.Count > 0 ? ritem.Deliveries[0] : new DeliveryInfo();
                    }
                }

                //foreach (var ritem in result.ResultSub)
                //{
                //    ritem.Deliveries.Sort((x, y) => x.DeliveryAmount.CompareTo(y.DeliveryAmount));
                //    ritem.DefaultDelivery = ritem.Deliveries.Count > 0 ? ritem.Deliveries[0] : new DeliveryInfo();
                //}
                return CreateResponseOk(result);
            }));
        });
Ejemplo n.º 2
0
        private GoodsResult GetGoods(List <GoodsSearch> goods, int userId, PartNumberQuery pq, bool WithSubst)
        {
            string partsXML = BuildPartsXML(goods);

            int f_Id = -1, f_Articul = -1, f_PartNumber = -1, f_Name = -1, f_Price = -1, f_StockQty = -1, f_ShipInDays = -1;
            int f_BrandId = -1, f_BrandCode = -1;
            int f_CountryId = -1, f_CountryCode = -1, f_CountryName = -1;
            int f_CurrencyId = -1, f_CurrencyCode = -1, f_CurrencyName = -1, f_CurrencySymbol = -1, f_CurrencySymbolShowLeft = -1;
            int f_WeightPhysical = -1, f_WeightVolumetric = -1, f_LengthCm = -1, f_WidthCm = -1, f_HeightCm = -1;
            int f_SubsTypeID = -1;
            int f_DeliveryTariffID = -1, f_DeliveryTariffCode = -1, f_DeliveryTariffDescr = -1;
            int f_Amount = -1, f_DeliveryAmount = -1, f_VatAmount = -1, f_TotalAmount = -1;
            int f_DeliveryDaysMin = -1, f_DeliveryDaysMax = -1;
            int f_SubsTypeDescr = -1;

            GoodsResult result = new GoodsResult();

            ExecQuery((query) =>
            {
                query.Execute(@"Search\[GetPricesRetail]", new SqlParameter[]
                {
                    new SqlParameter()
                    {
                        ParameterName = "@SiteUserID", Value = userId
                    },
                    //new SqlParameter() { ParameterName = "@SiteUserUID", Value = pq.uid },
                    new SqlParameter()
                    {
                        ParameterName = "@LocaleLanguageID", Value = pq.languageId
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@CountryID", Value = pq.countryId
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@CurrencyID", Value = pq.currencyId
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@PartsXML", Value = partsXML
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@WithSubst", Value = WithSubst
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@WithTotal", Value = false
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@WithCompare", Value = false
                    },
                    new SqlParameter()
                    {
                        ParameterName = "@PromoCode", Value = string.Empty
                    }
                }
                              , onExecute: (reader) =>
                {
                    string fname;
                    for (int i = 0, icount = reader.FieldCount; i < icount; i++)
                    {
                        fname = reader.GetName(i);
                        if (fname == "GoodsID")
                        {
                            f_Id = i;
                        }
                        // else if (fname == "Articul") f_PartNumber = i; //RequestedPartNumber
                        else if (fname == "Articul")
                        {
                            f_Articul = i; f_PartNumber = i;
                        }
                        else if (fname == "Descr")
                        {
                            f_Name = i;
                        }
                        else if (fname == "Brand")
                        {
                            f_BrandCode = i;
                        }
                        else if (fname == "CartPrice")
                        {
                            f_Price = i;
                        }
                        else if (fname == "StockQty")
                        {
                            f_StockQty = i;
                        }
                        else if (fname == "ShipInDays")
                        {
                            f_ShipInDays = i;
                        }

                        else if (fname == "CountryID")
                        {
                            f_CountryId = i;
                        }
                        else if (fname == "CountryCode")
                        {
                            f_CountryCode = i;
                        }
                        else if (fname == "CountryDescr")
                        {
                            f_CountryName = i;
                        }

                        else if (fname == "CartCurrencyID")
                        {
                            f_CurrencyId = i;
                        }
                        else if (fname == "CartCurrencyCode")
                        {
                            f_CurrencyCode = i;
                        }
                        else if (fname == "CartCurrencyName")
                        {
                            f_CurrencyName = i;
                        }
                        else if (fname == "CartCurrencySymbol")
                        {
                            f_CurrencySymbol = i;
                        }
                        else if (fname == "CartCurrencySymbolShowLeft")
                        {
                            f_CurrencySymbolShowLeft = i;
                        }

                        else if (fname == "WeightPhysical")
                        {
                            f_WeightPhysical = i;
                        }
                        else if (fname == "WeightVolumetric")
                        {
                            f_WeightVolumetric = i;
                        }
                        else if (fname == "LengthCm")
                        {
                            f_LengthCm = i;
                        }
                        else if (fname == "WidthCm")
                        {
                            f_WidthCm = i;
                        }
                        else if (fname == "HeightCm")
                        {
                            f_HeightCm = i;
                        }

                        else if (fname == "SubsTypeID")
                        {
                            f_SubsTypeID = i;
                        }
                        else if (fname == "SubsTypeDescr")
                        {
                            f_SubsTypeDescr = i;
                        }

                        else if (fname == "DeliveryTariffID")
                        {
                            f_DeliveryTariffID = i;
                        }
                        else if (fname == "DeliveryTariffCode")
                        {
                            f_DeliveryTariffCode = i;
                        }
                        else if (fname == "DeliveryTariffDescr")
                        {
                            f_DeliveryTariffDescr = i;
                        }
                        else if (fname == "CartAmount")
                        {
                            f_Amount = i;
                        }
                        else if (fname == "CartDeliveryAmount")
                        {
                            f_DeliveryAmount = i;
                        }
                        else if (fname == "CartVatAmount")
                        {
                            f_VatAmount = i;
                        }
                        else if (fname == "CartTotalAmount")
                        {
                            f_TotalAmount = i;
                        }
                        else if (fname == "DeliveryDaysMin")
                        {
                            f_DeliveryDaysMin = i;
                        }
                        else if (fname == "DeliveryDaysMax")
                        {
                            f_DeliveryDaysMax = i;
                        }
                    }
                }
                              , (values) =>
                {
                    int id = 0, subTypeid = 1;
                    if (f_Id > -1)
                    {
                        id = values[f_Id].ToInt();
                    }
                    if (f_SubsTypeID > -1)
                    {
                        subTypeid = values[f_SubsTypeID].ToInt();
                    }
                    if (id > 0)
                    {
                        Goods item           = null;
                        GoodsSubType itemSub = null;

                        if (!result.Result.TryGetValue(subTypeid, out itemSub))
                        {
                            itemSub = new GoodsSubType()
                            {
                                Id = subTypeid
                            };
                            if (f_SubsTypeDescr > -1)
                            {
                                itemSub.Descr = values[f_SubsTypeDescr].ToStr();
                            }
                            result.Result.Add(subTypeid, itemSub);
                        }

                        if (!itemSub.Goods.TryGetValue(id, out item))
                        {
                            item = new Goods()
                            {
                                Id = id, Brand = new Brand(), Country = new Country(), Currency = new Currency(), Parameters = new GoodsParameters(), Deliveries = new List <DeliveryInfo>()
                            };
                            itemSub.Goods.Add(id, item);
                        }

                        if (f_PartNumber > -1)
                        {
                            item.PartNumber = values[f_PartNumber].ToStr();
                        }
                        if (f_Articul > -1)
                        {
                            item.Articul = values[f_Articul].ToStr();
                        }
                        if (f_Name > -1)
                        {
                            item.Name = values[f_Name].ToStr();
                        }
                        if (f_Price > -1)
                        {
                            item.Price = values[f_Price].ToDecimal();
                        }
                        if (f_StockQty > -1)
                        {
                            item.StockQty = values[f_StockQty].ToInt();
                        }
                        if (f_ShipInDays > -1)
                        {
                            item.ShipInDays = values[f_ShipInDays].ToInt();
                        }

                        if (f_BrandId > -1)
                        {
                            item.Brand.Id = values[f_BrandId].ToInt();
                        }
                        if (f_BrandCode > -1)
                        {
                            item.Brand.Code = values[f_BrandCode].ToStr();
                        }

                        if (f_CountryId > -1)
                        {
                            item.Country.Id = values[f_CountryId].ToInt();
                        }
                        if (f_CountryCode > -1)
                        {
                            item.Country.Code = values[f_CountryCode].ToStr();
                        }
                        if (f_CountryName > -1)
                        {
                            item.Country.Name = values[f_CountryName].ToStr();
                        }

                        if (f_CurrencyId > -1)
                        {
                            item.Currency.Id = values[f_CurrencyId].ToInt();
                        }
                        if (f_CurrencyCode > -1)
                        {
                            item.Currency.Code = values[f_CurrencyCode].ToStr();
                        }
                        if (f_CurrencyName > -1)
                        {
                            item.Currency.Name = values[f_CurrencyName].ToStr();
                        }
                        if (f_CurrencySymbol > -1)
                        {
                            item.Currency.Symbol = values[f_CurrencySymbol].ToStr();
                        }
                        if (f_CurrencySymbolShowLeft > -1)
                        {
                            item.Currency.ShowLeft = values[f_CurrencySymbolShowLeft].ToBool();
                        }

                        if (f_WeightPhysical > -1)
                        {
                            item.Parameters.WeightPhysical = values[f_WeightPhysical].ToDecimal();
                        }
                        if (f_WeightVolumetric > -1)
                        {
                            item.Parameters.WeightVolumetric = values[f_WeightVolumetric].ToDecimal();
                        }
                        if (f_LengthCm > -1)
                        {
                            item.Parameters.LengthCm = values[f_LengthCm].ToDecimal();
                        }
                        if (f_WidthCm > -1)
                        {
                            item.Parameters.WidthCm = values[f_WidthCm].ToDecimal();
                        }
                        if (f_HeightCm > -1)
                        {
                            item.Parameters.HeightCm = values[f_HeightCm].ToDecimal();
                        }

                        int deliveryTariffID = -1;
                        if (f_DeliveryTariffID > -1)
                        {
                            deliveryTariffID = values[f_DeliveryTariffID].ToInt();
                        }
                        if (deliveryTariffID > 0)
                        {
                            DeliveryInfo deliveryInfo;
                            deliveryInfo = new DeliveryInfo()
                            {
                                Id = deliveryTariffID, Currency = item.Currency
                            };
                            if (deliveryTariffID == 8)
                            {
                                deliveryInfo.Logo = "/img/deliverybrands/dhl.png";
                            }
                            else if (deliveryTariffID == 9)
                            {
                                deliveryInfo.Logo = "/img/deliverybrands/ups.png";
                            }

                            if (f_DeliveryTariffCode > -1)
                            {
                                deliveryInfo.Code = values[f_DeliveryTariffCode].ToStr();
                            }
                            if (f_DeliveryTariffDescr > -1)
                            {
                                deliveryInfo.Name = values[f_DeliveryTariffDescr].ToStr();
                            }
                            if (f_Amount > -1)
                            {
                                deliveryInfo.Amount = values[f_Amount].ToDecimal();
                            }
                            if (f_DeliveryAmount > -1)
                            {
                                deliveryInfo.DeliveryAmount = values[f_DeliveryAmount].ToDecimal();
                            }
                            if (f_VatAmount > -1)
                            {
                                deliveryInfo.VatAmount = values[f_VatAmount].ToDecimal();
                            }
                            if (f_TotalAmount > -1)
                            {
                                deliveryInfo.TotalAmount = values[f_TotalAmount].ToDecimal();
                            }
                            if (f_DeliveryDaysMin > -1)
                            {
                                deliveryInfo.DaysMin = values[f_DeliveryDaysMin].ToInt();
                            }
                            if (f_DeliveryDaysMax > -1)
                            {
                                deliveryInfo.DaysMax = values[f_DeliveryDaysMax].ToInt();
                            }
                            item.Deliveries.Add(deliveryInfo);
                        }
                    }
                });
            });
            return(result);
        }