Exemple #1
0
        public IHttpActionResult GetForSurvey(int surveyId)
        {
            try
            {
                var retList  = userSurveyService.GetForSurvey(surveyId).ToList();
                var users    = retList.Select(u => u.UserId).ToList();
                var profiles = userSurveyService.GetUsers(users).ToList();

                var survey = userSurveyService.GetSurvey(surveyId);
                var retVal = new UserSurveyViewModel()
                {
                    SurveyId   = survey.Id,
                    SurveyName = survey.Name,
                    Users      = new List <UserWithEncrptIdViewModel>()
                };

                profiles.ForEach(p =>
                {
                    if (!survey.Anonymous)
                    {
                        var objVM = new UserWithEncrptIdViewModel()
                        {
                            FirstName = p.FirstName,
                            LastName  = p.LastName,
                            EncrptId  = retList.FirstOrDefault(us => us.UserId == p.Id).EncrptUserId,
                            UserId    = p.Id
                        };
                        retVal.Users.Add(objVM);
                    }
                    else
                    {
                        var objVM = new UserWithEncrptIdViewModel()
                        {
                            FirstName = profiles.IndexOf(p).ToString(),
                            LastName  = "************",
                            EncrptId  = retList.FirstOrDefault(us => us.UserId == p.Id).EncrptUserId,
                            UserId    = 0
                        };
                        retVal.Users.Add(objVM);
                    }
                });

                return(Ok(retVal));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
        public IHttpActionResult GetQuestion(int id)
        {
            try
            {
                var identity = (ClaimsIdentity)User.Identity;
                var userId   = int.Parse(identity.Claims.Where(c => c.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value);
                var question = questionService.GetQuestion(id);

                if (question == null)
                {
                    return(BadRequest());
                }

                var retList          = questionService.GetForSurvey(question.SurveyId).ToList();
                var users            = retList.Select(u => u.UserId).ToList();
                var profiles         = questionService.GetUsers(users).ToList();
                var questionResultVM = new QuestionResultViewModel()
                {
                    Question = question,
                    Users    = new List <UserWithEncrptIdViewModel>()
                };

                if (question.Survey.UserId != userId)
                {
                    return(Unauthorized());
                }

                profiles.ForEach(p =>
                {
                    var answers = new Dictionary <int, bool>();
                    if (!question.Survey.Anonymous)
                    {
                        var objVM = new UserWithEncrptIdViewModel()
                        {
                            FirstName = p.FirstName,
                            LastName  = p.LastName,
                            EncrptId  = retList.FirstOrDefault(us => us.UserId == p.Id).EncrptUserId,
                            UserId    = p.Id
                        };
                        if (question.AnswerType != Model.Model.AnswerType.Text)
                        {
                            foreach (var questionAnswer in question.QuestionAnswers)
                            {
                                answers.Add(questionAnswer.Id, question.UserAnswers.Where(ua => ua.AnswerId == questionAnswer.Id).Select(ua => ua.UserId).Contains(p.Id));
                            }
                            objVM.Answers = answers;
                        }
                        else
                        {
                            var userAnswer = question.UserAnswers.Where(ua => ua.UserId == p.Id).FirstOrDefault();
                            if (userAnswer == null)
                            {
                                objVM.AnswerText = "Nije odgovorio";
                            }
                            else
                            {
                                objVM.AnswerText = userAnswer.Answer.AnswerText;
                            }
                        }
                        questionResultVM.Users.Add(objVM);
                    }
                    else
                    {
                        var objVM = new UserWithEncrptIdViewModel()
                        {
                            FirstName = profiles.IndexOf(p).ToString(),
                            LastName  = "************",
                            EncrptId  = retList.FirstOrDefault(us => us.UserId == p.Id).EncrptUserId,
                            UserId    = 0
                        };
                        if (question.AnswerType != Model.Model.AnswerType.Text)
                        {
                            foreach (var questionAnswer in question.QuestionAnswers)
                            {
                                answers.Add(questionAnswer.Id, question.UserAnswers.Where(ua => ua.AnswerId == questionAnswer.Id).Select(ua => ua.UserId).Contains(p.Id));
                            }
                            objVM.Answers = answers;
                        }
                        else
                        {
                            var userAnswer = question.UserAnswers.Where(ua => ua.UserId == p.Id).FirstOrDefault();
                            if (userAnswer == null)
                            {
                                objVM.AnswerText = "Nije odgovorio";
                            }
                            else
                            {
                                objVM.AnswerText = userAnswer.Answer.AnswerText;
                            }
                        }
                        questionResultVM.Users.Add(objVM);
                    }
                });

                return(Ok(questionResultVM));
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }