public static PriceEstimation EstimateHousePrice(BovetaSearch search, double minConfScore, string connectionString = "") { AnalysisResults analysisResults = new AnalysisResults(); var houses = DatabaseConnector.GetSurroundingHouses(search, 20000, connectionString); var results = AnalyticsEngine.AnalyzeSurroundingHouses(houses, search); if (results.ConfidenceScore > minConfScore) { analysisResults = results; } var priceEstimate = new PriceEstimation() { searchRadius = analysisResults.SearchRadius, estimatedValue = (int)((analysisResults.EstimatedValue + 500) / 1000) * 1000, estimatorVersion = versionString, datapointsUsed = analysisResults.NumDatapointsUsed }; // TODO: Add log entry here return(priceEstimate); }
public static void AddPriceEstimateToLog(PriceEstimation priceEstimation, BovetaSearch search) { MySqlConnection conn; System.Configuration.Configuration rootWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/"); var myConnectionString = rootWebConfig.ConnectionStrings.ConnectionStrings[GetConnectionString(search.Country)]; try { conn = new MySqlConnection(); conn.ConnectionString = myConnectionString.ConnectionString; conn.Open(); // Prepare statement. Make rough sort on geographical region to speed things up string stm = "INSERT INTO search_logs (SearchTime, SearchRadius, PriceEstimatorVersion, Address, City, ObjectType, SizeSQM, EstimateValue)"; stm += " VALUES ('" + DateTime.Now + "', "; stm += priceEstimation.searchRadius + ", "; stm += "'" + priceEstimation.estimatorVersion + "', "; stm += "'" + search.Address + "', "; stm += "'" + search.City + "', "; stm += "'" + search.ObjectType + "', "; stm += search.Size.ToString().Replace(",", ".") + ", "; stm += priceEstimation.estimatedValue + ")"; MySqlCommand cmd = new MySqlCommand(stm, conn); cmd.ExecuteNonQuery(); } catch (MySqlException ex) { } catch (Exception ex) { } }