static async Task <VehicleIdList> getVehicleListIdsAsync() { VehicleIdList vehicleList = null; string path = "api/" + datasetId + "/vehicles"; HttpResponseMessage response = await client.GetAsync(path); if (response.IsSuccessStatusCode) { vehicleList = await response.Content.ReadAsAsync <VehicleIdList>(); } return(vehicleList); }
static async Task RunAsync() { client.BaseAddress = new Uri(uri); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); try { /* * 1) Step one get DataSetId * 2) Step two get a list an array of all vehicles * 3) get vehicle info 1 one 1 - you will get a dealer id along with it * 4) get dealer info and may be store in a hashtable or some kind of data structure * 5) reconstruct the answer - to post to the answer endpoint * */ //1) Get the dataset Id RootObject rootObject = null; rootObject = await getDatasetIdAsync(); datasetId = rootObject.datasetId; Console.WriteLine("Dataset ID : " + rootObject.datasetId); //2) Get Vehicle List Ids VehicleIdList vehicleIdList = null; vehicleIdList = await getVehicleListIdsAsync(); Console.WriteLine("Vehicle Ids List :" + string.Join(", ", vehicleIdList.vehicleIds.ToArray())); //3) Get Vehicle Info objects List <Vehicle> vehicles = new List <Vehicle>(); foreach (int vehicleId in vehicleIdList.vehicleIds) { Console.WriteLine("Processing " + vehicleId); Vehicle vehicle = await getVehicleDetailAsync(vehicleId); vehicles.Add(vehicle); Console.WriteLine("Dealer Id :" + vehicle.dealerId); } //4) get Dealer Details List <Dealer> dealers = new List <Dealer>(); for (int i = 0; i < vehicles.Count; i++) { Console.WriteLine("Processing Dealer" + vehicles[i].dealerId); Dealer dealer = await getDealerDetailAsync(vehicles[i].dealerId); dealers.Add(dealer); Console.WriteLine("Dealer Name :" + dealer.name); } //5) time to submit answer // i am using more linq library to get distinct dealers - https://morelinq.github.io/ // i am just trying to get a distinct list of all dealers - since list received got many repitive ones var uniqueDealers = dealers.DistinctBy(d => d.dealerId); //building the final answer object - to post to answer Answer answer = new Answer(); foreach (var item in uniqueDealers) { Console.WriteLine("Processing Dealer : " + item.dealerId); Dealer tempDealer = new Dealer(); tempDealer.dealerId = item.dealerId; tempDealer.name = item.name; //basically I am getting all vehicles associated by one dealer id tempDealer.vehicles = vehicles.Where(d => d.dealerId == item.dealerId).ToList(); //also here - i am setting dealerId = 0 for all vehicles - so it won't be included in my json Post tempDealer.vehicles.ToList().ForEach(x => { x.dealerId = 0; }); answer.dealers.Add(tempDealer); } //call to post to answer - and receive the response object Response r = await SubmitAnswerTaskAsync(answer); if (r != null) { Console.WriteLine("success : " + r.success); Console.WriteLine("message : " + r.message); Console.WriteLine("totalMilliseconds : " + r.totalMilliseconds); } Console.ReadLine(); } catch (Exception e) { Console.WriteLine(e.Message); } Console.ReadLine(); }