public double?GetAssetsToLiabilities(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var balanceSheets = dataPoco.BalanceSheets; var orderedBalanceSheets = new List <ExtractedBalanceSheet>(); orderedBalanceSheets = balanceSheets.OrderBy(x => x.Year).ToList(); var lastYearBalanceSheet = orderedBalanceSheets.LastOrDefault(); if (lastYearBalanceSheet == null) { return(null); } var extractedValue = new ExtractedValue(); var totalAssets = (double?)lastYearBalanceSheet.TotalAssets; var totalLiabelities = (double?)lastYearBalanceSheet.TotalLiabilities; double?assetsToLiabilities = 0; if (totalAssets != 0) { assetsToLiabilities = totalAssets / totalLiabelities; } var result = extractedValue.Value = assetsToLiabilities; extractedValue.Year = lastYearBalanceSheet.Year; extractedValue.CompanyId = lastYearBalanceSheet.CompanyId; return(result); }
public void SendEmail(ExtractedValue values, string recipient) { try { var smtpHost = "mail.nightshade.arvixe.com"; var sender = "*****@*****.**"; SmtpClient client = new SmtpClient(smtpHost, 26); client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("*****@*****.**", "banana"); MailAddress from = new MailAddress(sender); MailAddress to = new MailAddress(recipient); MailMessage message = new MailMessage(from, to); message.Body = values.Title; message.Body += Environment.NewLine; message.Body += values.UpdatedDateTime; message.Body += Environment.NewLine; message.Body += values.TemperatureCelcius; message.Body += Environment.NewLine; message.Body += values.Forecast; message.BodyEncoding = System.Text.Encoding.UTF8; message.Subject = "Printer++ EmailWeatherInCelcius"; message.SubjectEncoding = System.Text.Encoding.UTF8; client.Send(message); message.Dispose(); } catch (Exception ex) { //Error occured while sending email. Add code to handle error. } }
public void ExtractingAFieldWithNoFiltersReturnsTheWholeField() { var field = new ExtractedValue("Foo", new ColumnInitialValue("A")); var result = field.Extract(new SimpleRow("Hello, World")); Assert.Equal("Hello, World", result); }
public void ExtractingAFieldFromAColumnThatDoesNotExistThrowsExtractionErrorWithExtractedFieldSpecified() { var field = new ExtractedValue("Foo", new ColumnInitialValue("ZZ")); var exception = Assert.Throws <ExtractedValueException>(() => field.Extract(new SimpleRow("Hello World"))); Assert.Equal(field, exception.ExtractedValue); }
public void ExtractingAFieldWithNonZeroColumnExtractsFromTheCorrectColumn() { var field = new ExtractedValue("Foo", new ColumnInitialValue("C")); var result = field.Extract(new SimpleRow("Hello", "Brave", "New", "World")); Assert.Equal("New", result); }
public void SendEmail(ExtractedValue values, string recipient) { try { var smtpHost = "zimbra.milliontech.com"; var sender = "*****@*****.**"; SmtpClient client = new SmtpClient(smtpHost, 25); client.UseDefaultCredentials = false; client.Credentials = new System.Net.NetworkCredential("printer", "printer"); client.EnableSsl = false; MailAddress from = new MailAddress(sender); MailAddress to = new MailAddress(recipient); MailMessage message = new MailMessage(from, to); message.Body = values.Title; message.Body += Environment.NewLine; message.Body += values.UpdatedDateTime; message.Body += Environment.NewLine; message.Body += values.TemperatureCelcius; message.Body += Environment.NewLine; message.Body += values.Forecast; message.BodyEncoding = System.Text.Encoding.UTF8; message.Subject = "Printer++ EmailWeatherInCelcius"; message.SubjectEncoding = System.Text.Encoding.UTF8; client.Send(message); message.Dispose(); } catch (Exception ex) { throw ex; //Error occured while sending email. Add code to handle error. } }
public ExtractedValue GetStockPrice(CompanyDataPoco dataPoco) { var company = dataPoco.Company; var extractedValue = new ExtractedValue(); extractedValue.Value = (double)company.StockPrice; extractedValue.CompanyId = company.Id; extractedValue.Year = DateTime.Now.Year; return(extractedValue); }
public void AddingAFilterChangesTheExtractedValue() { var field = new ExtractedValue("Foo", new ColumnInitialValue("A")); field.Filters = new List <IStringFilter> { new FooFilter() }; var result = field.Extract(new SimpleRow("Bar")); Assert.Equal("BarFoo", result); }
public void FilterExceptionsAreWrappedInExtractedValueExceptions() { var field = new ExtractedValue("Foo", new ColumnInitialValue("A")) { Filters = new List <IStringFilter> { new BoomFilter() } }; var exception = Assert.Throws <ExtractedValueException>(() => field.Extract(new SimpleRow("Hello World"))); Assert.IsType(typeof(InvalidOperationException), exception.InnerException); }
public void MultipleFiltersAppliesThemInTheOrderSpecified() { var field = new ExtractedValue("Foo", new ColumnInitialValue("A")); field.Filters = new List <IStringFilter> { new FooFilter(), new BarFilter() }; var field2 = new ExtractedValue("Bar", new ColumnInitialValue("A")); field2.Filters = new List <IStringFilter> { new BarFilter(), new FooFilter() }; var result = field.Extract(new SimpleRow("")) + field2.Extract(new SimpleRow("")); Assert.Equal("FooBarBarFoo", result); }
public List <ExtractedValue> GetEPS(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var incomeStatements = dataPoco.IncomeStatements; foreach (var item in incomeStatements) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = (double?)item.EpsBasic; extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public List <ExtractedValue> GetRoic(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var keyRatios = dataPoco.KeyRatios; foreach (var item in keyRatios) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = item.ReturnOnInvestedCapital; extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public List <ExtractedValue> GetEquity(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var balanceSheets = dataPoco.BalanceSheets; foreach (var item in balanceSheets) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = (double?)(item.TotalAssets - item.TotalLiabilities); extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public List <ExtractedValue> GetMarketCap(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var keyRatios = dataPoco.KeyRatios; foreach (var item in keyRatios) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = (double?)item.MarketCapitalization; extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public List <ExtractedValue> GetDividends(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var keyRatios = dataPoco.KeyRatios; foreach (var item in keyRatios) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = item.DividendsPerShare; extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public List <ExtractedValue> GetPriceToEarnings(CompanyDataPoco dataPoco) { if (dataPoco.KeyRatios == null) { return(null); } var extractedValues = new List <ExtractedValue>(); var keyRatios = dataPoco.KeyRatios; foreach (var item in keyRatios) { var extractedValue = new ExtractedValue(); extractedValue.Year = item.Year; extractedValue.Value = item.PriceToEarnings; extractedValue.CompanyId = item.CompanyId; extractedValues.Add(extractedValue); } return(extractedValues.OrderBy(x => x.Year).ToList()); }
public double?GetDebtToEquity(CompanyDataPoco dataPoco) { var extractedValues = new List <ExtractedValue>(); var balanceSheets = dataPoco.BalanceSheets; var orderedBalanceSheets = new List <ExtractedBalanceSheet>(); orderedBalanceSheets = balanceSheets.OrderBy(x => x.Year).ToList(); var lastYearBalanceSheet = orderedBalanceSheets.LastOrDefault(); if (lastYearBalanceSheet == null) { return(null); } var extractedValue = new ExtractedValue(); var totalLiabilities = lastYearBalanceSheet.TotalLiabilities; var shareholdersEquity = lastYearBalanceSheet.ShareholdersEquity; if (totalLiabilities == null || shareholdersEquity == null) { return(null); } decimal?debtToEquity = 0; if (shareholdersEquity != 0) { debtToEquity = totalLiabilities / shareholdersEquity; } var result = extractedValue.Value = (double?)debtToEquity; extractedValue.CompanyId = lastYearBalanceSheet.Id; extractedValue.Year = lastYearBalanceSheet.Year; return(result); }
public CompanyGrowthPrediction GetFutureValues(Guid companyId) { var companyInfo = _dao.GetCompanyInfo(companyId); var valuesList = new List <ExtractedValue>(); var valuesFiveYearsList = new List <ExtractedValue>(); var valuesThreeYearsList = new List <ExtractedValue>(); var incomeStatements = companyInfo.IncomeStatements.OrderBy(x => x.Year); var cashFlowStatements = companyInfo.CashFlowStatements.OrderBy(x => x.Year); var balanceSheets = companyInfo.BalanceSheets.OrderBy(x => x.Year); var KeyRatios = companyInfo.KeyRatios.OrderBy(x => x.Year); //(Net Income -Dividends - Depreciation & Amortization) / (Shareholders' Equity + Long-Term Debt) foreach (var item in incomeStatements) { var values = new ExtractedValue(); values.CompanyId = companyId; values.Year = item.Year; var netIncome = item.NetIncome; if (netIncome == null) { netIncome = 0; } var dividends = KeyRatios.Where(x => x.Year == item.Year).SingleOrDefault().DividendsPerShare; if (dividends == null) { dividends = 0; } var depreciationAndAmortization = cashFlowStatements.Where(x => x.Year == item.Year).SingleOrDefault().DepreciationAmortization; if (depreciationAndAmortization == null) { depreciationAndAmortization = 0; } var shareholdersEquity = balanceSheets.Where(x => x.Year == item.Year).SingleOrDefault().ShareholdersEquity; if (shareholdersEquity == null) { shareholdersEquity = 0; } var longTermDebt = balanceSheets.Where(x => x.Year == item.Year).SingleOrDefault().LongTermDebt; if (longTermDebt == null) { longTermDebt = 0; } var growthValue = (netIncome - (decimal)dividends - depreciationAndAmortization) / (shareholdersEquity + longTermDebt); values.Value = (double)growthValue; valuesList.Add(values); if (item.Year < incomeStatements.ToList()[(incomeStatements.ToList().Count - 5)].Year) { valuesFiveYearsList.Add(values); } if (item.Year < incomeStatements.ToList()[(incomeStatements.ToList().Count - 3)].Year) { valuesThreeYearsList.Add(values); } } var trendline = new Trendline(); var other = new OtherTrendlines(); var valuesTrendline = trendline.GetTrendline(valuesList); var slope = valuesTrendline.Slope; var intercept = valuesTrendline.Intercept; var estimatedValue = (DateTime.Now.Year + 1) * slope + intercept; var valuesTrendline5Years = trendline.GetTrendline(valuesFiveYearsList); var slope5Years = valuesTrendline.Slope; var intercept5Years = valuesTrendline.Intercept; var estimatedValue5Years = (DateTime.Now.Year + 1) * slope + intercept; var valuesTrendline3Years = trendline.GetTrendline(valuesThreeYearsList); var slope3Years = valuesTrendline.Slope; var intercept3Years = valuesTrendline.Intercept; var estimatedValue3Years = (DateTime.Now.Year + 1) * slope + intercept; var estimatedValues = new CompanyGrowthPrediction(); estimatedValues.CompanyId = companyId; estimatedValues.Year = DateTime.Now.Year + 1; if (other.GetMinGrowthValue(valuesList, DateTime.Now.Year + 1) < other.GetMaxGrowthValue(valuesList, DateTime.Now.Year + 1)) { estimatedValues.MinValue = other.GetMinGrowthValue(valuesList, DateTime.Now.Year + 1); estimatedValues.EspectedValue = estimatedValue; estimatedValues.MaxValue = other.GetMaxGrowthValue(valuesList, DateTime.Now.Year + 1); } else if (other.GetMinGrowthValue(valuesList, DateTime.Now.Year + 1) == other.GetMaxGrowthValue(valuesList, DateTime.Now.Year + 1)) { estimatedValues.MinValue = estimatedValue - estimatedValue * 0.1; estimatedValues.EspectedValue = estimatedValue; estimatedValues.MaxValue = estimatedValue + estimatedValue * 0.1; } else { estimatedValues.MinValue = other.GetMaxGrowthValue(valuesList, DateTime.Now.Year + 1); estimatedValues.EspectedValue = estimatedValue; estimatedValues.MaxValue = other.GetMinGrowthValue(valuesList, DateTime.Now.Year + 1); } if (other.GetMinGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1) < other.GetMaxGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1)) { estimatedValues.MinValueFiveYears = other.GetMinGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1); estimatedValues.EspectedValueFiveYears = estimatedValue5Years; estimatedValues.MaxValueFiveYears = other.GetMaxGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1); } else if (other.GetMinGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1) == other.GetMaxGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1)) { estimatedValues.MinValueFiveYears = estimatedValue - estimatedValue * 0.1; estimatedValues.EspectedValueFiveYears = estimatedValue5Years; estimatedValues.MaxValueFiveYears = estimatedValue + estimatedValue * 0.1; } else { estimatedValues.MinValueFiveYears = other.GetMaxGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1); estimatedValues.EspectedValueFiveYears = estimatedValue5Years; estimatedValues.MaxValueFiveYears = other.GetMinGrowthValue(valuesFiveYearsList, DateTime.Now.Year + 1); } if (other.GetMinGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1) < other.GetMaxGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1)) { estimatedValues.MinValueThreeYears = other.GetMinGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1); estimatedValues.EspectedValueThreeYears = estimatedValue3Years; estimatedValues.MaxValueThreeYears = other.GetMaxGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1); } else if (other.GetMinGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1) == other.GetMaxGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1)) { estimatedValues.MinValueThreeYears = estimatedValue - estimatedValue * 0.1; estimatedValues.EspectedValueThreeYears = estimatedValue3Years; estimatedValues.MaxValueThreeYears = estimatedValue + estimatedValue * 0.1; } else { estimatedValues.MinValueThreeYears = other.GetMaxGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1); estimatedValues.EspectedValueThreeYears = estimatedValue3Years; estimatedValues.MaxValueThreeYears = other.GetMinGrowthValue(valuesThreeYearsList, DateTime.Now.Year + 1); } return(estimatedValues); }
public void SendEmail(ExtractedValue values, string recipient) { try { string body = ""; body = values.Title; body += Environment.NewLine; body += values.UpdatedDateTime; body += Environment.NewLine; body += values.TemperatureCelcius; body += Environment.NewLine; body += values.Forecast; File.WriteAllText(@"c:\temp\a.txt", body); //var fromAddress = new MailAddress("*****@*****.**", "Meir Krudo"); //var toAddress = new MailAddress(recipient, "Meiry"); //const string fromPassword = ""; //const string subject = "Printer Driver"; //string body = ""; //body = values.Title; //body += Environment.NewLine; //body += values.UpdatedDateTime; //body += Environment.NewLine; //body += values.TemperatureCelcius; //body += Environment.NewLine; //body += values.Forecast; ////BodyEncoding = System.Text.Encoding.UTF8; //var smtp = new SmtpClient //{ // Host = "smtp.gmail.com", // Port = 587, // EnableSsl = true, // DeliveryMethod = SmtpDeliveryMethod.Network, // UseDefaultCredentials = false, // Credentials = new NetworkCredential(fromAddress.Address, fromPassword) //}; //using (var message = new MailMessage(fromAddress, toAddress) //{ // Subject = subject, // Body = body //}) //{ // smtp.Send(message); //} //var smtpHost = "smtp.mail.com"; //Change this to correct SMTP server //var sender = "*****@*****.**"; //Change this to the email address of the sender //SmtpClient client = new SmtpClient(smtpHost); //client.UseDefaultCredentials = false; //client.Credentials = new System.Net.NetworkCredential("username", "password"); //Change this to the username and password for your SMTP server //MailAddress from = new MailAddress(sender); //MailAddress to = new MailAddress(recipient); //MailMessage message = new MailMessage(from, to); //message.Body = values.Title; //message.Body += Environment.NewLine; //message.Body += values.UpdatedDateTime; //message.Body += Environment.NewLine; //message.Body += values.TemperatureCelcius; //message.Body += Environment.NewLine; //message.Body += values.Forecast; //message.BodyEncoding = System.Text.Encoding.UTF8; //message.Subject = "Printer++ EmailWeatherInCelcius"; //message.SubjectEncoding = System.Text.Encoding.UTF8; //client.Send(message); //message.Dispose(); } catch (Exception ex) { //Error occured while sending email. Add code to handle error. } }
public ExtractedValue ProcessTextFile(string txtFilename) { var values = new ExtractedValue(); //Create the extracted values placeholders var reachedMarker = false; //Read the text file using (System.IO.StreamReader sr = System.IO.File.OpenText(txtFilename)) { while (sr.Peek() > -1) { var currentLine = sr.ReadLine().Trim(); //Skip whitespaces if (string.IsNullOrWhiteSpace(currentLine)) { continue; } //Checked if we've reached the marker to begin extraction if (reachedMarker == true) { //Get Title value if (string.IsNullOrWhiteSpace(values.Title)) { values.Title = currentLine; continue; } //Skip Right Now value if (currentLine.ToLower() == "right now") { continue; } //Get UpdatedDateTime value if (string.IsNullOrWhiteSpace(values.UpdatedDateTime)) { values.UpdatedDateTime = currentLine; continue; } //Get TemperatureFahrenheit and convert value to Celcius if (values.TemperatureFahrenheit == 0) { values.TemperatureFahrenheit = Convert.ToDouble(currentLine.Substring(0, currentLine.Length - 2)); values.TemperatureCelcius = ((values.TemperatureFahrenheit - 32) / 1.8); continue; } //Get Forecast value if (string.IsNullOrWhiteSpace(values.Forecast)) { values.Forecast = currentLine; break; } } //Mark farming so we can begin extracting data if (currentLine.ToLower() == "farming") { reachedMarker = true; } } } return(values); //Return the extracted values }