Esempio n. 1
0
        public void AddNewCarMaxVehicle(int year, string make, string model, string trim, long carId, string url)
        {
            var newVehicle         = LoadDetailCar(year, make, model, trim, carId, url);
            var vinmarketSqlHelper = new VINMarketSqlHelper();

            try
            {
                var id = vinmarketSqlHelper.GetId(string.Format("SELECT VehicleId FROM CarMaxVehicle WHERE VehicleID = @carId"), new { carId });
                if (id == 0)
                {
                    var insert = CarMaxQuery.InsertQuery(newVehicle);
                    vinmarketSqlHelper.QueryText(insert);
                }
                else
                {
                    newVehicle.VehicleId = id;
                    var update = CarMaxQuery.UpdateQuery(newVehicle);
                    vinmarketSqlHelper.QueryText(update);
                }
                Console.WriteLine("{0} {1} - {2}", make, model, url);
            }
            catch (Exception ex)
            {
                _logging.Error("CARMAX - InsertVehicleToDatabase", ex);
                Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message);
            }
        }
Esempio n. 2
0
 public void MarkSoldCarMaxVehicles()
 {
     //_logging.Info(String.Format("START to mark sold Car Max Vehicles"));
     Console.WriteLine(String.Format("START to mark sold Car Max Vehicles"));
     //_commonManagementForm.MarkSoldCarMaxVehicles();
     (new VINMarketSqlHelper()).QueryText(CarMaxQuery.MarkSoldQuery());
     //_logging.Info(String.Format("END to mark sold Car Max Vehicles"));
     Console.WriteLine(String.Format("END to mark sold Car Max Vehicles"));
 }
Esempio n. 3
0
        private void LoadCars(long makeId, string make, long modelId, string model, int distance, int zipcode)
        {
            var vinmarketSqlHelper = new VINMarketSqlHelper();
            var originalUrl        = string.Format("http://www.carmax.com/search?ANa={0}&D={1}&zip={2}&N={3}&Ep=search:results:results%20page", modelId, distance, zipcode, makeId);
            var searchUrl          = originalUrl;

            while (!String.IsNullOrEmpty(searchUrl))
            {
                var content     = WebHandler.DownloadContent(searchUrl);
                var xmlDocument = WebHandler.DownloadDocument(content);
                var aNodes      = xmlDocument.SelectNodes("//div[@id='resultsList']/div[@class='car']");
                if (aNodes != null && aNodes.Count > 0)
                {
                    var insertQueries = new List <string>();
                    var updateQueries = new List <string>();

                    try
                    {
                        foreach (XmlNode node in aNodes)
                        {
                            var carUrl          = "http://www.carmax.com" + node.Attributes["data-details-url"].Value;
                            var carId           = Convert.ToInt64(node.Attributes["sn"].Value);
                            var vehicleNameNode = node.SelectSingleNode(".//a[@class='vehicleName']//h3");
                            var year            = Convert.ToInt32(vehicleNameNode.InnerText.Substring(0, 4));
                            var trim            = vehicleNameNode.InnerText.Replace(year.ToString(), "").Replace(make, "").Replace(model, "").Trim();
                            var newVehicle      = LoadDetailCar(year, make, model, trim, carId, carUrl);
                            if (newVehicle == null)
                            {
                                continue;
                            }

                            var imgNode = node.SelectSingleNode(".//div[@class='photo']//img");
                            newVehicle.FullPhotos      = imgNode != null ? imgNode.Attributes["src"].Value : string.Empty;
                            newVehicle.ThumbnailPhotos = newVehicle.FullPhotos;

                            try
                            {
                                var id = vinmarketSqlHelper.GetId(string.Format("SELECT VehicleId FROM CarMaxVehicle WHERE VehicleID = @carId"), new { carId });
                                if (id == 0)
                                {
                                    var insert = CarMaxQuery.InsertQuery(newVehicle);
                                    insertQueries.Add(insert);
                                }
                                else
                                {
                                    newVehicle.VehicleId = id;
                                    var update = CarMaxQuery.UpdateQuery(newVehicle);
                                    updateQueries.Add(update);
                                }
                                //_commonManagementForm.AddNewCarMaxVehicle(newVehicle);
                                Console.WriteLine("{0} {1} - {2}", make, model, carUrl);
                            }
                            catch (Exception ex)
                            {
                                _logging.Error("CARMAX - InsertVehicleToDatabase", ex);
                                Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }


                    if (insertQueries.Any())
                    {
                        vinmarketSqlHelper.QueryText(string.Join(" ", insertQueries));
                    }
                    if (updateQueries.Any())
                    {
                        vinmarketSqlHelper.QueryText(string.Join(" ", updateQueries));
                    }
                }

                var nextNode = xmlDocument.SelectSingleNode("//li[@id='next']");
                searchUrl = nextNode != null && nextNode.Attributes["data-url"] != null ? originalUrl + "&" + nextNode.Attributes["data-url"].Value : string.Empty;
            }
        }
Esempio n. 4
0
        private void LoadCars(string apiKey)
        {
            var page        = 1;
            var url         = string.Format("https://api.carmax.com/v1/api/vehicles/?SortKey=0&Distance=all&PerPage=50&Zip=92627&Page={1}&platform=carmax.com&apikey={0}", apiKey, page);
            var content     = WebHandler.DownloadContent(url);
            var xmlDocument = WebHandler.DownloadDocument(content);
            var totalNode   = xmlDocument.SelectSingleNode("//*[local-name()='resultcount']");

            if (totalNode == null)
            {
                return;
            }
            var totalOfRecords = Convert.ToInt32(totalNode.InnerText);
            var numberOfPages  = totalOfRecords % 50 == 0 ? totalOfRecords / 50 : (totalOfRecords / 50) + 1;

            do
            {
                if (page > 1)
                {
                    //url = string.Format("https://api.carmax.com/v1/api/vehicles/?SortKey=0&Distance=all&PerPage=50&Zip=92627&Page={1}&platform=carmax.com&apikey={0}", apiKey, page);
                    xmlDocument = WebHandler.DownloadDocument(WebHandler.DownloadContent(url));
                }

                var resultNodes = xmlDocument.SelectNodes("//*[local-name()='results']/*[local-name()='resultsrecordmodel']");
                if (resultNodes != null)
                {
                    var vinmarketSqlHelper = new VINMarketSqlHelper();
                    var insertQueries      = new List <string>();
                    var updateQueries      = new List <string>();

                    foreach (XmlNode item in resultNodes)
                    {
                        try
                        {
                            var newVehicle = LoadDetailCar(item);

                            var id = vinmarketSqlHelper.GetId(string.Format("SELECT CarMaxVehicleId FROM CarMaxVehicle WHERE CarMaxVehicleId = @carId"), new { carId = newVehicle.CarMaxVehicleId });
                            if (id == 0)
                            {
                                var insert = CarMaxQuery.InsertQuery(newVehicle);
                                insertQueries.Add(insert);
                            }
                            else
                            {
                                var update = CarMaxQuery.UpdateQuery(newVehicle);
                                updateQueries.Add(update);
                            }
                            Console.WriteLine("{0} {1} - {2}", newVehicle.Make, newVehicle.Model, newVehicle.Url);
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine("CARMAX - InsertVehicleToDatabase {0}", ex.Message);
                        }
                    }

                    if (insertQueries.Any())
                    {
                        vinmarketSqlHelper.QueryText(string.Join(" ", insertQueries));
                    }
                    if (updateQueries.Any())
                    {
                        vinmarketSqlHelper.QueryText(string.Join(" ", updateQueries));
                    }
                }

                var urlNode = xmlDocument.SelectSingleNode("//*[local-name()='links']/*[local-name()='resourcelink']/*[local-name()='href']");
                if (urlNode != null)
                {
                    url = urlNode.InnerText;
                }
                else
                {
                    url = null;
                }

                page++;
                Console.WriteLine("Processing next page {0}", page);
            } while (page <= numberOfPages && url != null);
        }