public string UpdateRespondentQS(string token, long respondentId, QuestionnaireChoices passedQuestionnaire)
        {
            if (!_userValidation.ValidateToken(token))
            {
                throw new AddressAccessDeniedException();
            }
            _log.Information($"{GetCurrentMethod()} called.");
            try
            {
                //lock (_locker)
                {
                    var scope = _questionnaireRepository.FindQuestionnaireById(passedQuestionnaire.ScopeId);
                    scope.Passed++;
                    _questionnaireRepository.Upsert(scope);

                    var res = _outcomeComputer.ComputeOutcomes(passedQuestionnaire, scope);

                    var permanent = new PermanentResults
                    {
                        OutcomeHeader = scope.OutcomeHeader,
                        ScopeId       = passedQuestionnaire.ScopeId,
                        Outcomes      = res.ToList()
                    };

                    var permatoken = _respondentsRepository.StorePermanentResults(permanent);

                    var target = _respondentsRepository.FindById(respondentId);
                    target.Activity.Add(new ActivityData {
                        Code = ActivityCode.PassedQuestionaire, RelatedScopeId = passedQuestionnaire.ScopeId
                    });

                    var extended = new ExtendedQuestionnaireChoices
                    {
                        AnswerIds   = passedQuestionnaire.AnswerIds,
                        ScopeId     = passedQuestionnaire.ScopeId,
                        PublicToken = permatoken
                    };

                    target.AttendedQuestionnairies.Add(extended);
                    _respondentsRepository.Save(target);
                    return(permatoken);
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex, ex.Message);
                return("");
            }
        }