Beispiel #1
0
        string IUserAnswerService.UpdateAnswers(List <UserAnswer> userAnswers, int surveyId)
        {
            var questions = userAnswers.Select(q => q.QuestionId).Distinct();

            var userId = userAnswers.Select(ua => ua.UserId).FirstOrDefault();

            var s = surveyRepository.GetByIdAsNoTracking(surveyId);

            var user = userRepository.GetById(userId);



            var validation = this.Validation(s.Questions.Where(q => questions.Contains(q.Id)).ToList(), userAnswers, s, false);

            if (validation != null)
            {
                return(validation);
            }

            foreach (var question in questions)
            {
                var oldAnswers = repository.GetMany(ua => ua.QuestionId == question && ua.UserId == userId);

                //IF OLD ANSWER ISN'T IN NEW LIST OF ANSWERS REMOVE OLD ANSWER
                foreach (var oldAnswer in oldAnswers)
                {
                    if (!userAnswers.Contains(oldAnswer))
                    {
                        repository.Delete(oldAnswer);
                    }
                }
                // ADDING NEW ANSWERS
                foreach (var answer in userAnswers.Where(a => a.QuestionId == question))
                {
                    if (!oldAnswers.Contains(answer))
                    {
                        repository.Add(answer);
                    }
                }
            }

            var userNameAndLastName = "Korisnik ";

            if (!s.Anonymous)
            {
                userNameAndLastName += user.FirstName + " " + user.LastName;
            }
            Notification notification = new Notification(userNameAndLastName + " je ponovo popunio/la anketu", DateTime.Now, Operation.FILLED, NotificationType.PERSONAL);

            notification.SurveyId = surveyId;
            notification.UserId   = userId;
            UserNotification un = new UserNotification(surveyRepository.GetByIdAsNoTracking(surveyId).UserId, notification, false);

            userNotificationRepository.Add(un);
            return(null);
        }
Beispiel #2
0
 int ISurveyService.NumbOfUsers(int questionId)
 {
     return(userAnswerRepository
            .GetMany(ua => ua.QuestionId == questionId).Select(ua => ua.UserId).Distinct().Count());
 }