public async Task <IEnumerable <Company> > GetCompanies(SearchCompanies request) { var query = _queryFactory .Query(TableName) .When(request.Columns.AnyItem(), q => q.Select(request.Columns)) .When(request.Ids.AnyItem(), q => q.WhereIn("Id", request.Ids)) .When(request.IsActive.IsNotNull(), q => q.Where("IsActive", request.IsActive.ConvertToByte())) .OrderBy("Id") .ForPage(request.Page ?? request.DefaultPage, request.PageSize ?? request.DefaultPageSize) .GetAsync <Company>(); return(await query.ConfigureAwait(false)); }
public async Task Should_Return_AllCompanies_When_Filter_Is_Null() { // Arrange SearchCompanies requestFilter = new SearchCompanies() { Ids = new int?[] { }, IsActive = null, Names = null, Columns = null, Page = null, PageSize = null }; var expectedResultCount = 5; // Act var result = await _companyService .GetCompanies(requestFilter) .ConfigureAwait(false); // Assert Assert.Equal(expectedResultCount, result.Count()); }
public Task <IEnumerable <Company> > GetCompanies(SearchCompanies request) { return(_companyRepository.GetCompanies(request)); }
public TutorialQuery(ICompanyService companyService) { #region Company Field <CompanyGraphType>( name: "company", arguments: new QueryArguments(new List <QueryArgument> { new QueryArgument <IntGraphType> { Name = "companyId" }, new QueryArgument <StringGraphType> { Name = "companyName" }, new QueryArgument <BooleanGraphType> { Name = "isActive" } }), resolve : delegate(ResolveFieldContext <object> context) { var columns = context.GetMainSelectedFields(); var companyId = context.GetArgument <int?>("companyId"); var companyName = context.GetArgument <string>("companyName"); var isActive = context.GetArgument <bool?>("isActive"); var request = new SearchCompany { Id = companyId, Name = companyName, IsActive = isActive, Columns = columns }; return(companyService.GetCompany(request)); }); Field <ListGraphType <CompanyGraphType> >( "companies", arguments: new QueryArguments(new List <QueryArgument> { new QueryArgument <ListGraphType <IntGraphType> > { Name = "companyIds" }, new QueryArgument <ListGraphType <StringGraphType> > { Name = "companyNames" }, new QueryArgument <BooleanGraphType> { Name = "isActive" }, new QueryArgument <IntGraphType> { Name = "page" }, new QueryArgument <IntGraphType> { Name = "pageSize" } }), resolve : delegate(ResolveFieldContext <object> context) { var columns = context.GetMainSelectedFields(); var companyIds = context.GetArgument <int?[]>("companyIds"); var companyNames = context.GetArgument <string[]>("companyNames"); var isActive = context.GetArgument <bool?>("isActive"); var page = context.GetArgument <int?>("page"); var pageSize = context.GetArgument <int?>("pageSize"); var request = new SearchCompanies() { Ids = companyIds, Names = companyNames, IsActive = isActive, Page = page, PageSize = pageSize, Columns = columns }; return(companyService.GetCompanies(request)); }); #endregion }