예제 #1
0
        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());
        }