Exemplo n.º 1
0
        public ActionResult MarketSearch(ProjectInfoRequest request)
        {
            AddSearchViewData();
            List <string> Month = new List <string>();

            for (int i = 1; i <= 12; i++)
            {
                Month.Add(i.ToString());
            }
            ViewData.Add("BeginMonth", new SelectList(Month));
            ViewData.Add("EndMonth", new SelectList(Month));
            Market = new MarketSearch();
            return(View());
        }
Exemplo n.º 2
0
        public async Task <List <MarketSearch> > SearchFarmersMarkets()
        {
            var aspUserId = User.Identity.GetUserId();
            var customer  = context.Customer.Where(c => c.AspUserId == aspUserId).SingleOrDefault();

            List <MarketSearch> marketResult = new List <MarketSearch>();

            using (var client = new HttpClient())
            {
                var url = @"http://search.ams.usda.gov/farmersmarkets/v1/data.svc/zipSearch?zip=";
                url = url + customer.Zip;
                var response = await client.GetAsync(url);


                if (response.IsSuccessStatusCode)
                {
                    var markets = await response.Content.ReadAsStringAsync();

                    var json         = JObject.Parse(markets);
                    var j_marketId   = json["results"][0]["id"].ToObject <string>();
                    var j_marketName = json["results"][0]["marketname"].ToObject <string>();

                    for (int i = 0; i < json["results"].Count(); i++)
                    {
                        MarketSearch marketlist = new MarketSearch();

                        marketlist.SearchId = json["results"][i]["id"].ToObject <string>();
                        //take string from json and remove distance and leave marketname
                        var splitMarketname = json["results"][i]["marketname"].ToObject <string>();
                        var subMarketName   = splitMarketname.Substring(splitMarketname.IndexOf(' ') + 1);

                        marketlist.Marketname = subMarketName;
                        marketResult.Add(marketlist);
                        context.MarketSearch.Add(marketlist);
                        context.SaveChanges();
                    }
                }
                return(marketResult);
            }
        }
Exemplo n.º 3
0
        public ActionResult SearchByMarket(FormCollection collection)
        {
            AddSearchViewData();
            List <string> Month = new List <string>();

            for (int i = 1; i <= 12; i++)
            {
                Month.Add(i.ToString());
            }
            ViewData.Add("BeginMonth", new SelectList(Month));
            ViewData.Add("EndMonth", new SelectList(Month));
            MarketSearch search1 = new MarketSearch();

            search1.People     = collection["MarketPerson"];
            search1.Year       = collection["Year"];
            search1.BeginMonth = collection["BeginMonth"];
            search1.EndMonth   = collection["EndMonth"];
            var model1 = this.IDKLManagerService.GetMoneySearch(search1.People, search1.Year, search1.BeginMonth, search1.EndMonth);

            search1.MarketList = model1;
            Market.MarketList  = search1.MarketList;
            Market.People      = search1.People;
            return(View("MarketSearch", search1));
        }
Exemplo n.º 4
0
        public MarketSearch Search(
            string query = "",
            int start    = 0,
            int count    = 10,
            bool searchInDescriptions = false,
            int appId = 0,
            EMarketSearchSortColumns sortColumn = EMarketSearchSortColumns.Name,
            ESort sort = ESort.Desc,
            IDictionary <string, string> custom = null)
        {
            var urlQuery = new Dictionary <string, string>
            {
                { "query", query },
                { "start", start.ToString() },
                { "count", count.ToString() },
                { "search_descriptions", (searchInDescriptions ? 1 : 0).ToString() },
                { "appid", appId.ToString() },
                { "sort_column", MarketUtils.FirstCharacterToLower(sortColumn.ToString()) },
                { "sort_dir", MarketUtils.FirstCharacterToLower(sort.ToString()) }
            };

            if (custom != null && custom.Count > 0)
            {
                urlQuery = urlQuery.Concat(custom).ToDictionary(x => x.Key, x => x.Value);
            }

            var resp = this.steam.Request(
                Urls.Market + "/search/render/",
                Method.GET,
                Urls.Market,
                urlQuery,
                true,
                proxy: this.Proxy);
            var respDes = JsonConvert.DeserializeObject <JMarketSearch>(resp.Data.Content);

            if (!respDes.Success)
            {
                throw new SteamException("Failed Search");
            }

            var marketSearch = new MarketSearch();

            if (respDes.TotalCount <= 0)
            {
                return(marketSearch);
            }

            marketSearch.TotalCount = respDes.TotalCount;

            var html = respDes.ResultsHtml;
            var doc  = new HtmlDocument();

            doc.LoadHtml(html);

            var itemNodes = doc.DocumentNode.SelectNodes("//a[@class='market_listing_row_link']");

            if (itemNodes == null || itemNodes.Count <= 0)
            {
                return(marketSearch);
            }

            var tempIndex = 0;

            foreach (var item in itemNodes)
            {
                tempIndex++;

                var nameNode = item.SelectSingleNode(".//span[@class='market_listing_item_name']");
                if (nameNode == null)
                {
                    throw new SteamException($"Cannot parse item name. Index [{tempIndex}]");
                }

                var name = nameNode.InnerText;

                var gameNode = item.SelectSingleNode(".//span[@class='market_listing_game_name']");
                if (gameNode == null)
                {
                    throw new SteamException($"Cannot parse game name. Index [{tempIndex}]");
                }

                var game = gameNode.InnerText;

                var imageUrlNode = item.SelectSingleNode(".//img[@class='market_listing_item_img']");

                var imageUrl = imageUrlNode?.Attributes["srcset"]?.Value;

                var urlAttr = item.Attributes["href"];
                if (urlAttr == null)
                {
                    throw new SteamException($"Cannot find item url. Item [{name}], Index [{tempIndex}]");
                }

                var url = urlAttr.Value;

                var quantityNode = item.SelectSingleNode(".//span[@class='market_listing_num_listings_qty']");
                if (quantityNode == null)
                {
                    throw new SteamException($"Cannot find quantity. Item [{name}], Index [{tempIndex}]");
                }

                var quantityParse = int.TryParse(
                    quantityNode.InnerText,
                    NumberStyles.AllowThousands,
                    CultureInfo.InvariantCulture,
                    out var quantity);

                if (!quantityParse)
                {
                    throw new SteamException($"Cannot parse quantity. Item [{name}], Index [{tempIndex}]");
                }

                var minPriceNode = item.SelectSingleNode(".//span[@class='normal_price']");
                if (minPriceNode == null)
                {
                    throw new SteamException($"Cannot find item price. Item [{name}], Index [{tempIndex}]");
                }

                var minPriceClean = minPriceNode.InnerText.Split(' ')[0];

                var minPriceParse = double.TryParse(
                    minPriceClean,
                    NumberStyles.Currency,
                    CultureInfo.GetCultureInfo("en-US"),
                    out var minPrice);
                if (!minPriceParse)
                {
                    throw new SteamException($"Cannot parse min. price. Item [{name}], Index [{tempIndex}]");
                }

                marketSearch.Items.Add(
                    new MarketSearchItem
                {
                    ImageUrl = imageUrl,
                    Name     = name,
                    Quantity = quantity,
                    Game     = game,
                    Url      = url,
                    MinPrice = minPrice,
                    HashName = MarketUtils.HashNameFromUrl(url),
                    AppId    = MarketUtils.AppIdFromUrl(url)
                });
            }

            return(marketSearch);
        }