Пример #1
0
        public async Task <IActionResult> QuestionTranslation([FromRoute] int id, [FromBody] AnswerTranslationRequest answerTranslationRequest)
        {
            var loggedUser = User.GetUserIdFromToken();
            await _answerService.ChangeAnswerTranslationAsync(loggedUser, answerTranslationRequest, id);

            return(Ok());
        }
Пример #2
0
        public async Task ChangeAnswerTranslationAsync(int loggedUser, AnswerTranslationRequest answerTranslationRequest, int id)
        {
            // validate admin user
            var user = await _uow.UserRepository.FindByAsync(u => u.Id == loggedUser && u.Role == RoleEnum.ADMIN);

            if (user.Count == 0)
            {
                throw new NotAllowedException(ExceptionConstants.NOT_ALLOWED);
            }
            var answer = await _uow.AnswerRepository.GetAll().Where(a => a.Id == id)
                         .Include(a => a.Question)
                         .ThenInclude(q => q.Poll)
                         .ThenInclude(p => p.Concept)
                         .FirstOrDefaultAsync();

            // health measures is a special case
            if (answer != null && answer.Question.Poll.Concept.Codename == CodeNamesConstants.HEALTH_MEASURES && answer.Question.Poll.Order == 1)
            {
                switch (answerTranslationRequest.Lang)
                {
                case "en":
                    answer.TitleEN = answerTranslationRequest.Title;
                    break;

                case "it":
                    answer.TitleIT = answerTranslationRequest.Title;
                    break;

                default:
                    answer.Title = answerTranslationRequest.Title;
                    break;
                }

                _uow.AnswerRepository.Update(answer);
            }
            else if (answer != null)
            {
                var poll = await _uow.PollRepository.GetAll().Where(p => p.Id == answer.Question.PollId)
                           .Include(p => p.Questions)
                           .ThenInclude(q => q.Answers)
                           .FirstOrDefaultAsync();

                if (poll != null)
                {
                    foreach (var item in poll.Questions)
                    {
                        var a = item.Answers.Where(a => a.Order == answer.Order).FirstOrDefault();
                        if (a != null)
                        {
                            switch (answerTranslationRequest.Lang)
                            {
                            case "en":
                                a.TitleEN = answerTranslationRequest.Title;
                                break;

                            case "it":
                                a.TitleIT = answerTranslationRequest.Title;
                                break;

                            default:
                                a.Title = answerTranslationRequest.Title;
                                break;
                            }

                            _uow.AnswerRepository.Update(a);
                        }
                    }
                }
            }
            await _uow.CommitAsync();
        }