예제 #1
0
        private async Task <IActionResult> ProcessRequestAsync <T>(T requestDto) where T : AbstractRequestDto
        {
            IActionResult result;

            string typeForLogs = typeof(T).Name;

            if (requestDto == null)
            {
                _logger.LogError("{0} Null input for '{1}'", LogDescription(), typeForLogs);
                result = BadRequest(new ResultDto {
                    Message = "Null input."
                });
            }
            else
            {
                // validating input
                MessageListResult validationResult = requestDto.Validate();

                if (!validationResult.IsOk)
                {
                    _logger.LogError("{0} ValidErr for '{1}': {2}",
                                     LogDescription(), typeForLogs, validationResult.Message);
                    ResultDto badValidationResult = _mapper.Map <ResultDto>(validationResult);
                    result = BadRequest(badValidationResult);
                }
                else
                {
                    // getting wsClient
                    WsClient wsClient = await GetWsClient();

                    // adding request to queue
                    IdResultDto <long> addResult = await _requestService.AddRequestAsync(requestDto, wsClient);

                    if (addResult.IsOk)
                    {
                        _logger.LogDebug("{0} Ok for: '{1}' -> Id: '{2}'",
                                         LogDescription(), typeForLogs, addResult.Id);
                        result = Ok(addResult);
                    }
                    else
                    {
                        // when ID from DB <= 0
                        _logger.LogError("{0} Error for: '{1}' -> Message: '{2}'",
                                         LogDescription(), typeForLogs, addResult.Message);
                        result = InternalServerError(addResult);
                    }
                }
            }

            return(result);
        }
예제 #2
0
        //POST methods
        public async Task <bool> AddRequestAsync(RequestViewModel model)
        {
            var reqDto = mapper.Map <RequestDto>(model);

            return(await requestService.AddRequestAsync(reqDto));
        }