public async Task <IActionResult> QuestionTranslation([FromRoute] int id, [FromBody] AnswerTranslationRequest answerTranslationRequest) { var loggedUser = User.GetUserIdFromToken(); await _answerService.ChangeAnswerTranslationAsync(loggedUser, answerTranslationRequest, id); return(Ok()); }
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(); }