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); } }
public async Task <ActionResult <Tenant[]> > SearchTenants(TenantSearchCriteria criteria) { var result = await _tenantService.SearchAsync(criteria); return(Ok(result)); }