Exemple #1
0
        private void RefreshStockCompaniesOfOwner(IContainerOwner owner)
        {
            InformationContext.Current.Owner = owner;
            var inputCollection = InformationInputCollection.RetrieveFromOwnerContent(owner, "MasterCollection");

            if (inputCollection == null || inputCollection.CollectionContent == null)
            {
                return;
            }
            var coll = StockCompanyCollection.RetrieveFromOwnerContent(owner, "default");

            if (coll == null)
            {
                coll = new StockCompanyCollection();
                if (coll.CollectionContent == null)
                {
                    coll.CollectionContent = new List <StockCompany>();
                }
                coll.SetLocationAsOwnerContent(owner, "default");
                coll.StoreInformation();
            }
            if (coll.CollectionContent.Count < 10)
            {
                var input = inputCollection.CollectionContent.FirstOrDefault(x => x.LocationURL.Contains("Lookup"));
                if (input == null)
                {
                    return;
                }
                //Load the stock companies
                var letters = new[]
                {
                    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
                    'U', 'V', 'W', 'X', 'Y', 'Z'
                };
                foreach (var letter in letters)
                {
                    FetchInputInformation.Execute(new FetchInputInformationParameters
                    {
                        InformationInputID = input.ID,
                        Owner           = owner,
                        QueryParameters = "?input=" + letter
                    });
                    ProcessFetchedInputs.Execute(new ProcessFetchedInputsParameters
                    {
                        InformationInputID = input.ID,
                        Owner = owner,
                        ProcessingOperationName = "AddNewStockCompanies"
                    });
                }
            }
            else
            {
                var input = inputCollection.CollectionContent.FirstOrDefault(x => x.LocationURL.Contains("quotes.csv"));
                if (input == null)
                {
                    return;
                }
                foreach (var group in coll.CollectionContent.Select((x, i) => new { Index = i, Value = x })
                         .GroupBy(x => x.Index / 190))
                {
                    var parameters = new StringBuilder("?s=");
                    parameters = group.Aggregate(parameters,
                                                 (current, stockCompany) => current.Append(stockCompany.Value.Symbol + ","));
                    parameters = parameters.Remove(parameters.Length - 1, 1);
                    parameters.Append("&d=t&f=snl1ohgc1p2m5m6v");
                    FetchInputInformation.Execute(new FetchInputInformationParameters
                    {
                        InformationInputID = input.ID,
                        Owner           = owner,
                        QueryParameters = parameters.ToString()
                    });
                    ProcessFetchedInputs.Execute(new ProcessFetchedInputsParameters
                    {
                        InformationInputID = input.ID,
                        Owner = owner,
                        ProcessingOperationName = "UpdateStockCompanies"
                    });
                }
            }
        }
Exemple #2
0
        private void UpdateChartsOfOwner(IContainerOwner owner)
        {
            InformationContext.Current.Owner = owner;
            var inputCollection = InformationInputCollection.RetrieveFromOwnerContent(owner, "MasterCollection");

            if (inputCollection == null || inputCollection.CollectionContent == null)
            {
                return;
            }
            var input = inputCollection.CollectionContent.FirstOrDefault(x => x.LocationURL.Contains("table.csv"));

            if (input == null)
            {
                return;
            }
            var coll = StockCompanyCollection.RetrieveFromOwnerContent(InformationContext.Current.Owner, "default");

            foreach (var company in coll.CollectionContent)
            {
                try
                {
                    FetchInputInformation.Execute(new FetchInputInformationParameters
                    {
                        InformationInputID = input.ID,
                        Owner           = owner,
                        QueryParameters = GetChartInputParameters(company.Symbol, 'd', DateTime.Now.AddMonths(-1))
                    });
                    ProcessFetchedInputs.Execute(new ProcessFetchedInputsParameters
                    {
                        InformationInputID = input.ID,
                        Owner = owner,
                        ProcessingOperationName = "UpdateChart_Days;" + company.ID,
                    });
                    FetchInputInformation.Execute(new FetchInputInformationParameters
                    {
                        InformationInputID = input.ID,
                        Owner           = owner,
                        QueryParameters = GetChartInputParameters(company.Symbol, 'w', DateTime.Now.AddYears(-1))
                    });
                    ProcessFetchedInputs.Execute(new ProcessFetchedInputsParameters
                    {
                        InformationInputID = input.ID,
                        Owner = owner,
                        ProcessingOperationName = "UpdateChart_Months;" + company.ID,
                    });
                    FetchInputInformation.Execute(new FetchInputInformationParameters
                    {
                        InformationInputID = input.ID,
                        Owner           = owner,
                        QueryParameters = GetChartInputParameters(company.Symbol, 'm', DateTime.Now.AddYears(-5))
                    });
                    ProcessFetchedInputs.Execute(new ProcessFetchedInputsParameters
                    {
                        InformationInputID = input.ID,
                        Owner = owner,
                        ProcessingOperationName = "UpdateChart_Years;" + company.ID,
                    });
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("Updating charts for " + company.Symbol + " failed. " + ex.Message);
                }
            }
        }
Exemple #3
0
        public static ProcessFetchedInputs.ProcessInputFromStorageReturnValue ExecuteMethod_ProcessInputFromStorage(
            string processingOperationName, InformationInput informationInput, string inputFetchLocation)
        {
            var result     = new ProcessFetchedInputs.ProcessInputFromStorageReturnValue();
            var targetBlob = StorageSupport.CurrActiveContainer.GetBlob(inputFetchLocation + "/bulkdump.all",
                                                                        InformationContext.Current.Owner);
            var rawData = targetBlob.DownloadText();
            var parts   = processingOperationName.Split(';');

            processingOperationName = parts[0];
            var parameter = parts.Length > 1 ? parts[1] : string.Empty;

            using (var csv = new CsvReader(new StreamReader(GenerateStreamFromString(rawData)), false))
            {
                switch (processingOperationName)
                {
                case "AddNewStockCompanies":
                    var     collAdd  = StockCompanyCollection.RetrieveFromOwnerContent(InformationContext.Current.Owner, "default");
                    var     reader   = new JsonReader();
                    dynamic jsonData = reader.Read(rawData);
                    foreach (var jsonCompany in jsonData)
                    {
                        var jsonCompany1 = jsonCompany;
                        if (collAdd.CollectionContent.Count(x => x.Symbol == jsonCompany1.Symbol) == 0)
                        {
                            var stockCompany = new StockCompany
                            {
                                Symbol      = jsonCompany1.Symbol,
                                CompanyName = jsonCompany1.Name
                            };
                            stockCompany.SetLocationAsOwnerContent(InformationContext.Current.Owner, stockCompany.ID);
                            collAdd.CollectionContent.Add(stockCompany);
                            stockCompany.StoreInformation();
                        }
                    }
                    collAdd.StoreInformationMasterFirst(InformationContext.Current.Owner, true);
                    break;

                case "UpdateStockCompanies":
                    if (csv.FieldCount >= 11)
                    {
                        var coll = StockCompanyCollection.RetrieveFromOwnerContent(InformationContext.Current.Owner, "default");
                        while (csv.ReadNextRecord())
                        {
                            var collectionStockCompany = coll.CollectionContent.FirstOrDefault(x => x.Symbol == csv[0]);
                            if (collectionStockCompany != null)
                            {
                                var stockCompany = StockCompany.RetrieveFromOwnerContent(InformationContext.Current.Owner,
                                                                                         collectionStockCompany.ID);
                                if (stockCompany != null)
                                {
                                    stockCompany.CompanyName      = csv[1].Trim('"');
                                    stockCompany.PriceActual      = ConvertToDouble(csv[2]);
                                    stockCompany.PriceHigh        = ConvertToDouble(csv[4]);
                                    stockCompany.PriceLow         = ConvertToDouble(csv[5]);
                                    stockCompany.PriceOpen        = ConvertToDouble(csv[3]);
                                    stockCompany.Change           = ConvertToDouble(csv[6]);
                                    stockCompany.ChangePercent    = ConvertToDouble(csv[7]);
                                    stockCompany.ChangeYTD        = ConvertToDouble(csv[8]);
                                    stockCompany.ChangePercentYTD = ConvertToDouble(csv[9]);
                                    stockCompany.Volume           = ConvertToLong(csv[10]);
                                    stockCompany.StoreInformation();
                                }
                            }
                        }
                    }
                    break;

                case "UpdateChart_Days":
                {
                    var chartPointsDays = GetChartPointCollection(parameter, "days");
                    chartPointsDays.CollectionContent.Clear();
                    if (csv.FieldCount > 1)
                    {
                        csv.ReadNextRecord(); //ignore the header row
                        while (csv.ReadNextRecord())
                        {
                            chartPointsDays.CollectionContent.Insert(0, new ChartPoint
                                {
                                    Timestamp = csv[0],
                                    Value     = ConvertToDouble(csv[1])
                                });
                        }
                    }
                    chartPointsDays.StoreInformation();
                }
                break;

                case "UpdateChart_Months":
                    var chartPointsMonths = GetChartPointCollection(parameter, "months");
                    chartPointsMonths.CollectionContent.Clear();
                    if (csv.FieldCount > 1)
                    {
                        csv.ReadNextRecord(); //ignore the header row
                        while (csv.ReadNextRecord())
                        {
                            chartPointsMonths.CollectionContent.Insert(0, new ChartPoint
                            {
                                Timestamp = csv[0],
                                Value     = ConvertToDouble(csv[1])
                            });
                        }
                    }
                    chartPointsMonths.StoreInformation();
                    break;

                case "UpdateChart_Years":
                    var chartPointsYears = GetChartPointCollection(parameter, "years");
                    chartPointsYears.CollectionContent.Clear();
                    if (csv.FieldCount > 1)
                    {
                        csv.ReadNextRecord(); //ignore the header row
                        while (csv.ReadNextRecord())
                        {
                            var timestamp = csv[0];
                            if (timestamp.Length > 7)
                            {
                                timestamp = timestamp.Substring(0, 7);
                            }
                            chartPointsYears.CollectionContent.Insert(0, new ChartPoint
                            {
                                Timestamp = timestamp,
                                Value     = ConvertToDouble(csv[1])
                            });
                        }
                    }
                    chartPointsYears.StoreInformation();
                    break;

                default:
                    throw new NotImplementedException("The dynamic Operation Type is not yet implemented.");
                }
            }


            return(result);
        }