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