private RespondentsQuery CreateRespondentsQuery(RespondentsFilter filter) { return(new RespondentsQuery { Professional = filter.Professional, Country = filter.Country, DeveloperType = filter.DeveloperType, Gender = filter.Gender, Language = filter.Language, VersionControl = filter.VersionControl }); }
public IEnumerable <Respondent> GetRespondents(RespondentsFilter filter) { IQueryable <RespondentInfo> respInfo = this.respondentRepository.GetFiltered(this.CreateRespondentsQuery(filter)); if (!string.IsNullOrEmpty(filter.CompanySize)) { respInfo = from res in respInfo join cmp in this.companySizeRepository.GetAll() on res.CompanySize equals cmp.Size where cmp.Class == filter.CompanySize select res; } if (!string.IsNullOrEmpty(filter.ExperienceLevel)) { respInfo = from res in respInfo join exp in this.experienceLevelRepository.GetAll() on res.ExperienceLevel equals exp.YearsProgram where exp.Level == filter.ExperienceLevel select res; } IEnumerable <Respondent> respondents = respInfo .Select(respondent => new Respondent { Id = respondent.Id, Country = respondent.Country, DeveloperType = respondent.DeveloperType, Gender = respondent.Gender, Professional = respondent.Professional, CompanySize = respondent.CompanySize, Language = respondent.Language, VersionControl = respondent.VersionControl, WorkStart = respondent.WorkStart, ExperienceLevel = respondent.ExperienceLevel, CareerSatisfaction = respondent.CareerSatisfaction, JobSatisfaction = respondent.JobSatisfaction }); respondents = respondents.ToList(); foreach (Respondent respondent in respondents) { respondent.CompanySize = this.companySizeCache.GetCompanyClass(respondent.CompanySize); respondent.ExperienceLevel = this.experienceLevelCache.GetExperienceLevel(respondent.ExperienceLevel); } return(respondents); }
public IEnumerable <Respondent> GetAll([FromUri] RespondentsFilter filter) { return(respondentsService.GetRespondents(filter)); }