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" }); } } }
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); } } }
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); }