示例#1
0
        public async Task <List <QuestionnaireTemplate> > GetQuestionnaireTemplates_ActiveByTypeAndGender(QuestionnaireTemplate.QuestionnaireType questionnaireType, QuestionnaireTemplate.GenderType genderType)
        {
            try
            {
                var query = client.CreateDocumentQuery <QuestionnaireTemplate>(UriFactory.CreateDocumentCollectionUri(_settings.DatabaseId, _settings.DefaultCollectionId),
                                                                               new FeedOptions {
                    MaxItemCount = 2
                })
                            .Where(e =>
                                   e.IsActive &&
                                   e.TypeOfQuestionnaire == questionnaireType &&
                                   (e.TypeOfGender == QuestionnaireTemplate.GenderType.Any || e.TypeOfGender == genderType || genderType == QuestionnaireTemplate.GenderType.Any) &&
                                   e.Type == "QuestionnaireTemplate"
                                   )
                            .AsDocumentQuery();

                var qTemplates = await query.ExecuteNextAsync <QuestionnaireTemplate>();

                return(qTemplates.ToList());
            }
            catch (DocumentClientException e)
            {
                if (e.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }
        }
示例#2
0
        public async Task <UserQuestionnaire> GetUserQuestionnaire_ByUserIdAsync(string userId, QuestionnaireTemplate.QuestionnaireType questionnaireType, string questionnaireTemplateId = null)
        {
            try
            {
                var query = client.CreateDocumentQuery <UserQuestionnaire>(UriFactory.CreateDocumentCollectionUri(_settings.DatabaseId, _settings.DefaultCollectionId),
                                                                           new FeedOptions {
                    MaxItemCount = 2
                })
                            .Where(e => e.Type == "UserQuestionnaire" &&
                                   e.UserprofileId == userId &&
                                   e.QuestionnaireTemplateType == questionnaireType &&
                                   (string.IsNullOrWhiteSpace(questionnaireTemplateId) || e.QuestionnaireTemplateId == questionnaireTemplateId)
                                   ).AsDocumentQuery();

                var qTemplates = await query.ExecuteNextAsync <UserQuestionnaire>();

                var results = qTemplates.ToList();
                if (results.Count > 1)
                {
                    throw new ApplicationException("found more than 1 item");
                }
                return(qTemplates.ToList().FirstOrDefault());
            }
            catch (DocumentClientException e)
            {
                if (e.StatusCode == System.Net.HttpStatusCode.NotFound)
                {
                    return(null);
                }
                else
                {
                    throw;
                }
            }
        }
示例#3
0
 public Task <UserQuestionnaire> GetUserQuestionnaire_ByUserIdAsync(string userId, QuestionnaireTemplate.QuestionnaireType questionnaireType, string questionnaireTemplateId = null)
 {
     throw new NotImplementedException();
 }
示例#4
0
 public Task <List <QuestionnaireTemplate> > GetQuestionnaireTemplates_ActiveByTypeAndGender(QuestionnaireTemplate.QuestionnaireType questionnaireType, QuestionnaireTemplate.GenderType genderType)
 {
     throw new NotImplementedException();
 }
示例#5
0
        public async Task <QuestionnaireTemplate> GetQuestionnaireTemplate_ActiveByTypeAndGender(QuestionnaireTemplate.QuestionnaireType questionnaireType, string gender)
        {
            var genderType = QuestionnaireTemplate.GenderType.Any;

            switch (gender)
            {
            case "m":
                genderType = QuestionnaireTemplate.GenderType.Male;
                break;

            case "f":
                genderType = QuestionnaireTemplate.GenderType.Female;
                break;

            case null:
                genderType = QuestionnaireTemplate.GenderType.Any;
                break;

            default:
                throw new ArgumentOutOfRangeException($"gender '${gender}' is not a valid value");
            }

            var questionnaireTemplates = await _repo.GetQuestionnaireTemplates_ActiveByTypeAndGender(questionnaireType, genderType);

            if (questionnaireTemplates.Count > 1)
            {
                throw new BusinessLogicException("Found more than 1 QuestionnaireTemplate meeting the criteria");
            }
            return(questionnaireTemplates.FirstOrDefault());
        }
示例#6
0
        public async Task <UserQuestionnaire> GetUserQuestionnaire_ByUserIdAsync(string userId, QuestionnaireTemplate.QuestionnaireType questionnaireType, string questionnaireTemplateId = null)
        {
            var userQuestionnaire = await _repo.GetUserQuestionnaire_ByUserIdAsync(userId, questionnaireType, questionnaireTemplateId);

            return(userQuestionnaire);
        }
示例#7
0
        public async Task <QuestionnaireTemplate> GetQuestionnaireTemplate_ByUserQuestionnaire(UserQuestionnaire uq, QuestionnaireTemplate.QuestionnaireType questionnaireType, string gender)
        {
            QuestionnaireTemplate r;

            if (uq == null)
            {
                r = await GetQuestionnaireTemplate_ActiveByTypeAndGender(questionnaireType, gender);
            }
            else
            {
                if (string.IsNullOrEmpty(uq.QuestionnaireTemplateId))
                {
                    throw new BusinessLogicException(ValidationErrorCode.IdIsNull_QuestionnaireTemplateId, uq.Id, $"QuestionnaireTemplate Id in UserQuestionnaire with Id '{uq.Id}' is null");
                }
                else
                {
                    r = await _repo.GetQuestionnaireTemplate_ByIdAsync(uq.QuestionnaireTemplateId);

                    if (r == null)
                    {
                        throw new BusinessLogicException(ValidationErrorCode.EntityIsNull, uq.Id, $"QuestionnaireTemplate Id '{uq.QuestionnaireTemplateId}' in UserQuestionnaire with Id '{uq.Id}' can not be found in repo.");
                    }
                }
            }
            return(r);
        }