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); }
int ISurveyService.NumbOfUsers(int questionId) { return(userAnswerRepository .GetMany(ua => ua.QuestionId == questionId).Select(ua => ua.UserId).Distinct().Count()); }