public Result <object> Questions(RequestQuizModel model) { //kullanıcının cevap verdiği soru id'lerini bul long[] findQuestionIDS = this._context.UserAnswer .Where(c => c.UserID == model.UserID) .Select(c => c.QuestionID) .ToArray(); bool isFinish = false; int questionTotalCount = this._Count(c => !c.IsDeleted), questionTotalAnswer = 0; //kullanıcı kaç soruya cevap vermiş bul questionTotalAnswer = (from qa in this._context.QuestionAnswer where findQuestionIDS.Contains(qa.QuestionID) orderby qa.QuestionID select qa.QuestionID) .Distinct() .Count(); //toplam soru sayısı ve kullanıcının verdiği soru sayıları eşitse tümüne cevap verilmiş demektir if (questionTotalCount > 0) { isFinish = questionTotalAnswer == questionTotalCount; } var questions = new { List = this._context.Question .Where(c => !c.IsDeleted && !findQuestionIDS.Contains(c.ID) && (model.ID == null || c.ID > model.ID)) .Select(x => new { ID = x.ID, Question = x.Text, Answers = x.QuestionAnswers.Where(qa => !qa.Answer.IsDeleted).Select(qa => new { ID = qa.AnswerID, Text = qa.Answer.Text }).ToList(), }) .Take(1) .ToList(), QuestionTotalCount = questionTotalCount, QuestionTotalAnswered = findQuestionIDS.Length, IsFinish = isFinish }; return(new Result <object>(true, questions)); }
public ActionResult <Result <object> > Get([FromBody] RequestQuizModel model) { try { if (model == null) { model = new RequestQuizModel(); } model.UserID = Current.User.ID; return(this.quizService.Questions(model)); } catch (Exception ex) { throw ex; } }