コード例 #1
0
ファイル: TenantService.cs プロジェクト: AliveMen/Homes
        public async Task <Tenant[]> SearchAsync(TenantSearchCriteria criteria)
        {
            using (var repository = _homeRepositoryFactory())
            {
                var query = repository.Tenants;

                if (!criteria.ObjectIds.IsNullOrEmpty())
                {
                    query = query.Where(x => criteria.ObjectIds.Contains(x.Id));
                }
                else
                {
                    if (criteria.BuildingId != null)
                    {
                        query = query.Where(x => x.BuildingId == criteria.BuildingId);
                    }

                    if (criteria.Keyword != null)
                    {
                        query = query.Where(x => x.Name.Contains(criteria.Keyword));
                    }
                }

                var tenantIds = query
                                .OrderBy(x => x.Name)
                                .ThenBy(x => x.Id)
                                .Skip(criteria.Skip)
                                .Take(criteria.Take)
                                .Select(x => x.Id)
                                .ToArray();

                var result = await GetByIdsAsync(tenantIds);

                return(result);
            }
        }
コード例 #2
0
ファイル: TenantsController.cs プロジェクト: AliveMen/Homes
        public async Task <ActionResult <Tenant[]> > SearchTenants(TenantSearchCriteria criteria)
        {
            var result = await _tenantService.SearchAsync(criteria);

            return(Ok(result));
        }