예제 #1
0
        private async Task <(int, Response)> GetLatestResponseAsync(FeedbackQuestionCodeEnum feedbackQuestionCode, Guid?loadId)
        {
            var questionId = _config.GetValue <int>(feedbackQuestionCode.ToString());

            if (questionId <= 0)
            {
                throw new ValidationException("Invalid question id");
            }

            if (loadId == null)
            {
                throw new ValidationException("Load Id is required");
            }

            //verify the user has access to this load
            var load = await GetLoad(loadId.Value);

            var responses = await _client.SearchResponsesAsync(new ResponseSearchCriteria
            {
                QuestionId = questionId,
                Attributes = new Dictionary <string, string>
                {
                    { "LoadshopLoadId", loadId.ToString() }
                }
            });

            return(questionId, responses?.OrderByDescending(_ => _.ResponseDateUtc).FirstOrDefault());
        }
예제 #2
0
        public async Task <QuestionData> GetQuestionAsync(FeedbackQuestionCodeEnum feedbackQuestionCode)
        {
            var questionId = _config.GetValue <int>(feedbackQuestionCode.ToString());

            if (questionId > 0)
            {
                var question = await _client.GetQuestionAsync(questionId);

                var data = _mapper.Map <QuestionData>(question);
                if (data != null)
                {
                    data.FeedbackQuestionCode = feedbackQuestionCode;
                }
                return(data);
            }
            return(null);
        }
예제 #3
0
        public async Task <QuestionResponseData> GetResponseAsync(FeedbackQuestionCodeEnum feedbackQuestionCode, Guid?loadId)
        {
            var(questionId, response) = await GetLatestResponseAsync(feedbackQuestionCode, loadId);

            if (response == null)
            {
                return(null);
            }

            string loadshopLoadId = null;

            if (response.Attributes?.TryGetValue(LOADSHOP_LOAD_ID, out loadshopLoadId) != true)
            {
                throw new Exception($"Feedback response did not return the {LOADSHOP_LOAD_ID}");
            }

            return(new QuestionResponseData
            {
                FeedbackQuestionCode = feedbackQuestionCode,
                Answer = response.Answer,
                LoadId = new Guid(loadshopLoadId)
            });
        }
예제 #4
0
 public async Task <IActionResult> GetResponse(FeedbackQuestionCodeEnum feedbackQuestionCode, Guid?loadId)
 {
     return(Success(await _feedbackService.GetResponseAsync(feedbackQuestionCode, loadId)));
 }
예제 #5
0
 public async Task <IActionResult> Get(FeedbackQuestionCodeEnum feedbackQuestionCode)
 {
     return(Success(await _feedbackService.GetQuestionAsync(feedbackQuestionCode)));
 }