public async Task <CheckResultModel> Check(Guid testId, Guid questionId, ICollection <Guid> answersId) { var test = await _httpService.GetTestByIdAsync(testId); if (test.QuestionsIds.Contains(questionId) == false) { throw new ArgumentException(); } var question = await _httpService.GetQuestionByIdAsync(questionId); foreach (var id in question.AnswersIds) { if (question.AnswersIds.Contains(id) == false) { throw new ArgumentException(); } } var requestedAnswers = new List <Answer>(); foreach (var id in answersId) { requestedAnswers.Add(await _httpService.GetAnswerByIdAsync(id)); } bool result = requestedAnswers.Count == question.AnswersIds.Count; foreach (var b in requestedAnswers) { if (b.IsCorrect == false) { result = false; break; } } var answers = new List <Answer>(); foreach (var id in question.AnswersIds) { var res = await _httpService.GetAnswerByIdAsync((Guid)id); answers.Add(res); } return(new CheckResultModel { Correct = result, CorrectAnswers = answers .Where(x => x.IsCorrect) .ToList() }); }