/// <summary> /// Post Answer /// </summary> public static void PostAnswer() { foreach (string vehicle in vehicleDetailList) { VehicleInfo vehicleInfo = JsonConvert.DeserializeObject <VehicleInfo>(vehicle); string del = vehicleInfo.dealerId; if (dealerDetailDic.ContainsKey(del)) { DealerAnswer da; if (dealerDetailDic.TryGetValue(del, out da)) { VehicleAnswer vehicleAnswer = new VehicleAnswer(vehicleInfo.vehicleId, vehicleInfo.year, vehicleInfo.make, vehicleInfo.model); da.vehicles.Add(vehicleAnswer); } } else { Console.WriteLine("datasetId: {0} not found ", vehicleInfo.dealerId); } } //Console.WriteLine("datasetId: {0}", del.vehicleIds); DealerAnswerReturn dealerAnswer = new DealerAnswerReturn(); dealerAnswer.dealers = dealerDetailDic.Values.ToList <DealerAnswer>(); // dic.Keys() ; string ret = PostAnswer(JsonConvert.SerializeObject(dealerAnswer), UserID); Console.WriteLine("\n\nPost request:\n" + JsonConvert.SerializeObject(dealerAnswer)); Console.WriteLine("\n\nPost response:\n" + ret); }
private static VehicleAnswer GetVehicleAnswerFromJsonStr(string jsonStr) { JObject resultsTmp = JObject.Parse(jsonStr); VehicleAnswer result = new VehicleAnswer(); result.VehicleId = Convert.ToInt32(resultsTmp["vehicleId"]); result.Year = Convert.ToInt32(resultsTmp["year"]); result.Make = Convert.ToString(resultsTmp["make"]); result.Model = Convert.ToString(resultsTmp["model"]); return(result); }
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; }