public static void DisplayData() { // show data Console.WriteLine("\n\nEnd of processing. datasetId: {0}", UserID); foreach (KeyValuePair <string, DealerAnswer> pair in dealerDetailDic) { string key = pair.Key; DealerAnswer del = pair.Value; Console.WriteLine("Dealer: {0} {1}", del.dealerId, del.name); foreach (VehicleAnswer va in del.vehicles) { Console.WriteLine("\tVehicle: {0} {1} {2} {3}", va.make, va.vehicleId, va.model, va.year); } } }
private static DealerAnswer GetDealerAnswerFromJsonStr(string dealerStr, IEnumerable <MyVehicleResponse> vehicles) { JObject resultsTmp = JObject.Parse(dealerStr); DealerAnswer result = new DealerAnswer(); result.DealerId = Convert.ToInt32(resultsTmp["dealerId"]); result.Name = Convert.ToString(resultsTmp["name"]); var query = vehicles .Where(r => r.DealerId == result.DealerId) .Select(r => r) .ToList(); result.Vehicles = new List <VehicleAnswer>(); result.Vehicles.AddRange(query); return(result); }
/// <summary> /// Get Dealer /// </summary> /// <param name="Uri"></param> /// <returns></returns> static public int GetDealer(string Uri) { //Console.WriteLine("Start GetDealer: " + Uri); string data = HttpUtils.GetData(Uri); DealerInfo DealerInfoObj = JsonConvert.DeserializeObject <DealerInfo>(data); DealerAnswer DealerAnswerObj = new DealerAnswer(); DealerAnswerObj.name = DealerInfoObj.name; DealerAnswerObj.dealerId = DealerInfoObj.dealerId; DealerAnswerObj.vehicles = new List <VehicleAnswer>(); dealerDetailDic.Add(DealerInfoObj.dealerId, DealerAnswerObj); //Console.WriteLine("End of GetDealer {0} \n\n{1}", Uri, data); return(1); }
public static Answer BuildAnswer(List <Task <DealersResponse> > dealerDataTasks, List <Task <VehicleResponse> > vehicleDataTasks) { Answer answer = new Answer() { dealers = new DealerAnswer[dealerDataTasks.Count] }; for (int i = 0; i < dealerDataTasks.Count; ++i) { var result = dealerDataTasks[i].Result; answer.dealers[i] = new DealerAnswer() { dealerId = result.dealerId, name = result.name, vehicles = new List <VehicleAnswer>() }; } for (int i = 0; i < vehicleDataTasks.Count; ++i) { var vehicleResult = vehicleDataTasks[i].Result; DealerAnswer dealerResult = null; for (int j = 0; j < answer.dealers.Length; ++j) { dealerResult = answer.dealers[j]; if (dealerResult.dealerId == vehicleResult.dealerId) { break; } } dealerResult.vehicles.Add(new VehicleAnswer() { vehicleId = vehicleResult.vehicleId, year = vehicleResult.year, make = vehicleResult.make, model = vehicleResult.model }); } return(answer); }
static void Main(string[] args) { Stopwatch sw = new Stopwatch(); sw.Start(); Answer answer = new Answer(); ConcurrentBag <DealerAnswer> dealersAnswer = new ConcurrentBag <DealerAnswer>(); ConcurrentBag <string> dealerIDs = new ConcurrentBag <string>(); ConcurrentBag <VehicleAnswer> vehiclesAnswer = new ConcurrentBag <VehicleAnswer>(); ConcurrentBag <MyVehicleResponse> vehiclesResponse = new ConcurrentBag <MyVehicleResponse>(); //1 dataSetIdString string dataSetIdJsonStr = Global.Get("/api/datasetId"); JObject results = JObject.Parse(dataSetIdJsonStr); JToken dataSetIdStr = results["datasetId"]; string dataSetIdString = dataSetIdStr.ToString(); Console.WriteLine("dataSetIdStr:" + dataSetIdStr.ToString()); //2 vehiclesAnswer string vehiclesJsonStr = Global.Get("/api/" + dataSetIdStr.ToString() + "/vehicles"); results = JObject.Parse(vehiclesJsonStr); JToken vehicles = results["vehicleIds"]; Parallel.For(0, vehicles.Count(), i => { string vehicleId = vehicles.ToList()[i].ToString(); string tmpVehicleJsonStr = GetVehicle(dataSetIdString, vehicleId); JObject resultsTmp = JObject.Parse(tmpVehicleJsonStr); string dealerID = resultsTmp["dealerId"].ToString(); dealerIDs.Add(dealerID); VehicleAnswer tmpVehicle = GetVehicleAnswerFromJsonStr(tmpVehicleJsonStr); vehiclesAnswer.Add(tmpVehicle); MyVehicleResponse tmpVehicleResponse = GetVehicleResponseFromJsonStr(tmpVehicleJsonStr); vehiclesResponse.Add(tmpVehicleResponse); }); //3 dealersAnswer and dealersAnswerJson var dealerIds = dealerIDs.Distinct().ToList(); Parallel.For(0, dealerIds.Count(), i => { string tmpDealerJsonStr = GetDealer(dataSetIdString, dealerIds[i]); JObject resultsTmp = JObject.Parse(tmpDealerJsonStr); DealerAnswer dealerAnswer = GetDealerAnswerFromJsonStr(tmpDealerJsonStr, vehiclesResponse); dealersAnswer.Add(dealerAnswer); }); answer.Dealers = new List <DealerAnswer>(); answer.Dealers.AddRange(dealersAnswer); string answerJsonStr = JsonConvert.SerializeObject(answer); Console.WriteLine(answerJsonStr); //4 Post dealersAnswerJson string url = "/api/" + dataSetIdString + "/answer"; string jsonContent = answerJsonStr; string postResultStr = Global.Post(url, jsonContent); Console.WriteLine("Post result:" + postResultStr); sw.Stop(); Console.WriteLine("Time Eclipsed:" + Math.Round(sw.Elapsed.TotalSeconds, 2) + " Seconds"); Console.ReadKey(); }
private async void startButton_Click(object sender, RoutedEventArgs e) { resultsTextBox.Clear(); vehicleList.Clear(); dealerList.Clear(); dsInstance = new DataSetApi(); vehicleInstance = new VehiclesApi(); dealerInstance = new DealersApi(); Answer answer = new Answer(); // Get DataSet ID string datasetId = ""; DatasetIdResponse responseDataSetId = dsInstance.DataSetGetDataSetId(); datasetId = responseDataSetId.DatasetId; // Get the Dealers and Vehicles for the given DataSetID // Get VehicleIds VehicleIdsResponse responseVehicleIds = new VehicleIdsResponse(); responseVehicleIds = vehicleInstance.VehiclesGetIds(datasetId); //Get Vechicle details for each VehicleId VehicleResponse responseVehicle = new VehicleResponse(); await CreateVehicleTasksAsync(datasetId, responseVehicleIds); // For the vehicles, get the dealers var Ids = vehicleList.Select(v => (int)v.DealerId).ToList().Distinct(); List <int> dealerIds = Ids.ToList(); await CreateDealerTasksAsync(datasetId, dealerIds); // Once Vehicle list and Dealer list are done, build the answer List <DealerAnswer> dealerAnswers = new List <DealerAnswer>(); foreach (DealersResponse dealer in dealerList) { DealerAnswer dealerAnswer = new DealerAnswer(); dealerAnswer.DealerId = dealer.DealerId; dealerAnswer.Name = dealer.Name; List <VehicleAnswer> dealerVehicles = new List <VehicleAnswer>(); List <VehicleResponse> vehicles = vehicleList.Where(v => v.DealerId == dealer.DealerId).ToList(); foreach (VehicleResponse res in vehicles) { VehicleAnswer vehicle = new VehicleAnswer(); vehicle.VehicleId = res.VehicleId; vehicle.Make = res.Make; vehicle.Model = res.Model; vehicle.Year = res.Year; dealerVehicles.Add(vehicle); } dealerAnswer.Vehicles = dealerVehicles; dealerAnswers.Add(dealerAnswer); } answer.Dealers = dealerAnswers; // Post the response answer AnswerResponse ansResponse = dsInstance.DataSetPostAnswer(datasetId, answer); string results = ansResponse.Message + "\r\n\r\n" + ansResponse.Success + "\r\n\r\nTime(seconds): " + ansResponse.TotalMilliseconds / 1000.00; foreach (DealerAnswer d in answer.Dealers) { results += "\r\n\r\n----------------------------------------------------------------\r\n\r\n" + d.Name; results += "\r\n\r\n-------------------------"; foreach (VehicleAnswer v in d.Vehicles) { //results += "\r\n\r\n"; results += "\r\n\r\n" + v.Make + " " + v.Model + " " + v.Year; } } resultsTextBox.Text = results; }