public async Task <IActionResult> AddIndicator([FromBody] AddIndicatorRequest request) { // Reponse var response = await _indicatorService.AddIndicator(request); // Return return(CreatedAtRoute("Indicators_GetIndicator", new { response.IndicatorId }, response)); }
public async Task <IndicatorResponse> AddIndicator(AddIndicatorRequest request) { // Get indicator var indicator = await _indicatorRepository.GetSingle(IndicatorExpression.Indicator(request.IndicatorId)); // Throw ConflictException if it exists if (indicator != null) { throw new ConflictException(IndicatorMessage.IndicatorWithSameIdAlreadyExists); } // Check uniqueness indicator = await _indicatorRepository.GetSingle(IndicatorExpression.IndicatorUnique(request.Name)); // Throw ConflictException if it exists if (indicator != null) { throw new ConflictException(IndicatorMessage.IndicatorWithSameNameAlreadyExists); } // Build dependencies var dependencies = await BuildDependencies(request.IndicatorId, request.Dependencies); // Create indicator = new Indicator( request.IndicatorId, request.IndicatorType, request.UserId, request.Name, request.Description, request.Formula, dependencies); // Add _indicatorRepository.Add(indicator); // Save await _mainDbContext.SaveChangesAsync(); // Log into Splunk _logger.LogSplunkRequest(request); // Response var response = _mapper.Map <IndicatorResponse>(indicator); // Return return(response); }