예제 #1
0
        public async Task <IActionResult> AddIndicator([FromBody] AddIndicatorRequest request)
        {
            // Reponse
            var response = await _indicatorService.AddIndicator(request);

            // Return
            return(CreatedAtRoute("Indicators_GetIndicator", new { response.IndicatorId }, response));
        }
예제 #2
0
        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);
        }