Example #1
0
        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);
                }
            }
        }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #5
0
        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();
        }
Example #6
0
        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;
        }