public Task <CustomerGetPagedListResponse> GetPagedListAsync( CustomerGetPagedListRequest request, Dictionary <string, string> headers = default, CancellationToken ct = default) { return(_factory.PostAsync <CustomerGetPagedListResponse>( _host + "/Customers/v1/GetPagedList", null, request, headers, ct)); }
public async Task <ActionResult <CustomerGetPagedListResponse> > GetPagedList( CustomerGetPagedListRequest request, CancellationToken ct = default) { var response = await _customersService.GetPagedListAsync(_userContext.AccountId, request, ct); return(ReturnIfAllowed( response, Roles.Customers, response.Customers.Select(x => x.AccountId))); }
public static bool FilterByAdditional(this Customer customer, CustomerGetPagedListRequest request) { return((request.SourceIds == null || !request.SourceIds.Any() || request.SourceIds.Any(x => SourceIdsPredicate(customer, x))) && (request.CreateUserIds == null || !request.CreateUserIds.Any() || request.CreateUserIds.Any(x => CreateUserIdsPredicate(customer, x))) && (request.ResponsibleUserIds == null || !request.ResponsibleUserIds.Any() || request.ResponsibleUserIds.Any(x => ResponsibleUserIdsPredicate(customer, x))) && (request.Attributes == null || !request.Attributes.Any() || (request.AllAttributes is false ? request.Attributes.Any(x => AttributePredicate(customer, x)) : request.Attributes.All(x => AttributePredicate(customer, x))))); }
public async Task WhenGetPagedList_ThenSuccess() { var headers = await _defaultRequestHeadersService.GetAsync(); var attribute = await _create.CustomerAttribute.BuildAsync(); var value = "Test".WithGuid(); var source = await _create.CustomerSource .WithName(value) .BuildAsync(); await Task.WhenAll( _create.Customer .WithSourceId(source.Id) .WithAttributeLink(attribute.Id, value) .BuildAsync(), _create.Customer .WithSourceId(source.Id) .WithAttributeLink(attribute.Id, value) .BuildAsync()); var filterAttributes = new Dictionary <Guid, string> { { attribute.Id, value } }; var filterSourceIds = new List <Guid> { source.Id }; var request = new CustomerGetPagedListRequest { Attributes = filterAttributes, SourceIds = filterSourceIds }; var response = await _customersClient.GetPagedListAsync(request, headers); var results = response.Customers .Skip(1) .Zip(response.Customers, (previous, current) => current.CreateDateTime >= previous.CreateDateTime); Assert.NotEmpty(response.Customers); Assert.All(results, Assert.True); }
public async Task <CustomerGetPagedListResponse> GetPagedListAsync( Guid accountId, CustomerGetPagedListRequest request, CancellationToken ct) { var customers = await _storage.Customers .AsNoTracking() .Include(x => x.Source) .Include(x => x.AttributeLinks) .Where(x => x.AccountId == accountId && (request.Surname.IsEmpty() || EF.Functions.ILike(x.Surname, $"{request.Surname}%")) && (request.Name.IsEmpty() || EF.Functions.ILike(x.Name, $"{request.Name}%")) && (request.Patronymic.IsEmpty() || EF.Functions.ILike(x.Patronymic, $"{request.Patronymic}%")) && (request.Phone.IsEmpty() || x.Phone == request.Phone) && (request.Email.IsEmpty() || x.Email == request.Email) && (!request.MinBirthDate.HasValue || x.BirthDate >= request.MinBirthDate) && (!request.MaxBirthDate.HasValue || x.BirthDate <= request.MaxBirthDate) && (!request.IsDeleted.HasValue || x.IsDeleted == request.IsDeleted) && (!request.MinCreateDate.HasValue || x.CreateDateTime >= request.MinCreateDate) && (!request.MaxCreateDate.HasValue || x.CreateDateTime <= request.MaxCreateDate) && (!request.MinModifyDate.HasValue || x.ModifyDateTime >= request.MinModifyDate) && (!request.MaxModifyDate.HasValue || x.ModifyDateTime <= request.MaxModifyDate)) .ToListAsync(ct); return(new CustomerGetPagedListResponse { TotalCount = customers .Count(x => x.FilterByAdditional(request)), LastModifyDateTime = customers .Max(x => x.ModifyDateTime), Customers = customers .Where(x => x.FilterByAdditional(request)) .AsQueryable() .SortBy(request.SortBy, request.OrderBy) .Skip(request.Offset) .Take(request.Limit) .ToList() }); }