/// <summary> /// Gets customers. /// </summary> /// <param name="request">The request.</param> /// <returns></returns> public async Task <PagedResult <Customer> > GetCustomers(CustomersSearchDto request) { Expression <Func <Customer, bool> > expression = c => true; if (request != null) { if (!string.IsNullOrEmpty(request.Q)) { var terms = request.Q.Split(' ').Where(r => !string.IsNullOrWhiteSpace(r)); foreach (var term in terms) { expression = expression.And(c => c.Name.Contains(term) || c.Subdomain.Contains(term)); } } if (!request.IncludeArchived) { expression = expression.And(c => !c.IsDeleted); } } return(await customerRepository .FindPagedAsync( expression, o => o.OrderBy(e => e.Name), CustomerIncludes, request != null?request.Skip : (int?)null, request != null?request.Take : (int?)null )); }
public async Task GetCustomers_CustomerSubdomainMatchToQuery_ReturnsMatchCustomer() { // Arrange var testCustomer1 = new Customer { Id = 3000, Name = "TestCustomer1", Subdomain = "TestCustomerSubdomain1" }; var testCustomer2 = new Customer { Id = 3001, Name = "TestCustomer2", Subdomain = "TestCustomerSubdomain2" }; var searchRequest = new CustomersSearchDto { Q = testCustomer2.Subdomain }; this.customersRepository.Refresh(new List <Customer> { testCustomer1, testCustomer2 }); // Act var result = await this.sut.GetCustomers(searchRequest); var actual = result.Results.FirstOrDefault(); // Assert Assert.IsNotNull(actual); Assert.AreSame(testCustomer2, actual); }
public async Task GetCustomers_IncludeArchived_ReturnsDeletedCustomers() { // Arrange var testCustomer1 = new Customer { Id = 3000, Name = "TestCustomer1", Subdomain = "TestCustomerSubdomain1", IsDeleted = true }; var testCustomer2 = new Customer { Id = 3001, Name = "TestCustomer2", Subdomain = "TestCustomerSubdomain2" }; var searchRequest = new CustomersSearchDto { IncludeArchived = true }; this.customersRepository.Refresh(new List <Customer> { testCustomer1, testCustomer2 }); // Act var result = await this.sut.GetCustomers(searchRequest); var actual = result.Results.FirstOrDefault(c => c.Id == testCustomer1.Id); // Assert Assert.IsNotNull(actual); Assert.AreSame(testCustomer1, actual); }
public async Task <IHttpActionResult> GetCustomers( string q = null, int?skip = null, int?take = null, bool includeArchived = false, bool isBrief = true ) { // Temporary workaround to avoid unsuccessfull request validation var request = new CustomersSearchDto { Q = q ?? string.Empty, IncludeArchived = includeArchived }; request.Skip = skip ?? request.Skip; request.Take = take ?? request.Take; var responseModel = await customersHelper.GetCustomers(request, isBrief); return(Ok(responseModel)); }
/// <summary> /// Gets customers. /// </summary> /// <param name="request">The request.</param> /// <param name="isBrief"></param> /// <returns></returns> public async Task <PagedResultDto <BaseCustomerResponseDto> > GetCustomers(CustomersSearchDto request, bool isBrief) { var pagedCustomers = await customerService.GetCustomers(request); // Filtering archived customer's sites and organizations if (request != null && !request.IncludeArchived) { foreach (var customer in pagedCustomers.Results) { customer.Sites = customer.Sites.Where(s => !s.IsDeleted).ToList(); customer.Organizations = customer.Organizations.Where(s => !s.IsDeleted).ToList(); } } var result = new PagedResultDto <BaseCustomerResponseDto>() { Total = pagedCustomers.Total, Results = isBrief ? Mapper.Map <IList <Customer>, IList <BriefCustomerResponseDto> >(pagedCustomers.Results).Cast <BaseCustomerResponseDto>().ToList() : Mapper.Map <IList <Customer>, IList <FullCustomerResponseDto> >(pagedCustomers.Results).Cast <BaseCustomerResponseDto>().ToList() }; return(result); }