public async Task <IActionResult> CompanyFinancialsRequest(Guid id, string exchangeId) { Authentication authentication = new Authentication(_ingestionContext, _logger); TokenEntity tokenEntity = await authentication.GetAccessTokenByClientConfigId(id); if (tokenEntity != null) { string endPoint = _configuration.GetValue <string>("MorningStar:EquityApi:CompanyFinancialAvailabilityList"); EquityApi.CompanyFinancials.Request request = EquityApi.CompanyFinancials.Request.Create(tokenEntity.Token, exchangeId, "exchangeId", exchangeId); string requestUrl = endPoint.SetQueryParams(request); IngestionTask ingestionTask = IngestionTask.Create(endPoint, JsonConvert.SerializeObject(request)); _ingestionContext.IngestionTasks.Add(ingestionTask); EquityApi.CompanyFinancials.Response response = await RestClient.GetDynamicResponseAsync <EquityApi.CompanyFinancials.Response>(requestUrl); PersistenceService persistence = new PersistenceService(_ingestionContext, _mapper, _logger); int result = await persistence.SaveAsync(ingestionTask.IngestionTaskId, response); if (result > 0) { List <ChangeTable> changes = _ingestionContext.ChangeTables.FromSqlRaw("EXECUTE MergeCompanyFinancials @TaskId={0}", ingestionTask.IngestionTaskId).ToList(); _logger.LogInformation("MergeCompanyFinancials: {0}", JsonConvert.SerializeObject(changes)); } return(Ok(result)); } return(NotFound(id)); }
public async Task <int> SaveAsync(Guid ingestionTaskId, EquityApi.CompanyFinancials.Response response) { List <CompanyFinancialAvailabilityEntity> entities = response.CompanyFinancialAvailabilityEntityList; if (ValidateEntities(entities) == 0) { return(0); } List <TCompanyFinancialAvailability> list = new List <TCompanyFinancialAvailability>(); foreach (var entity in entities) { TCompanyFinancialAvailability item = _mapper.Map <TCompanyFinancialAvailability>(entity); item.Id = Guid.NewGuid(); item.IngestionTaskId = ingestionTaskId; list.Add(item); } _ingestionContext.TCompanyFinancialAvailabilities.AddRange(list); return(await _ingestionContext.SaveChangesAsync()); }