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()); }
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); }
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) }); }
public async Task <IActionResult> GetResponse(FeedbackQuestionCodeEnum feedbackQuestionCode, Guid?loadId) { return(Success(await _feedbackService.GetResponseAsync(feedbackQuestionCode, loadId))); }
public async Task <IActionResult> Get(FeedbackQuestionCodeEnum feedbackQuestionCode) { return(Success(await _feedbackService.GetQuestionAsync(feedbackQuestionCode))); }