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));
        }
예제 #2
0
        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
        }