示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#6
0
        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.
            }
        }
示例#7
0
        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);
        }
示例#11
0
        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());
        }
示例#12
0
        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());
        }
示例#13
0
        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());
        }
示例#14
0
        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());
        }
示例#15
0
        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());
        }
示例#16
0
        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());
        }
示例#17
0
        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);
        }
示例#18
0
        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);
        }
示例#19
0
        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.
            }
        }
示例#20
0
        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
        }