public List <CustomerResponse> Search(SearchCustomersRequest request) { var customers = _customerRepository.GetBy(p => p.IsActive); var customersResponse = _mapper.Map <List <CustomerResponse> >(customers); return(customersResponse); }
public async Task If_There_Are_Customers_Matching_The_Filter_Criteria_They_Must_Be_Returned() { // // Arrange // var mockedCustomerRepository = new Mock <ICustomerRepository>(); mockedCustomerRepository.Setup(x => x.GetCustomersByNameAsync("john")).ReturnsAsync(OperationResult <List <Customer> > .Success(new List <Customer> { new Customer { FirstName = "john" }, new Customer { LastName = "JOHN" } })); var customerService = new CustomerService(mockedCustomerRepository.Object, Mock.Of <ILogger <CustomerService> >()); var searchRequest = new SearchCustomersRequest("john"); // // Act // var operationResult = await customerService.SearchCustomersAsync(searchRequest); // // Assert // Assert.True(operationResult.Status); Assert.Equal(2, operationResult.Data.Customers.Count); }
public async Task <SearchCustomersResponse> SearchCustomersAsync( IList <Predicate> predicates, DateRange dateRange, IList <OrderBy> ordering, Paging pageInfo) { var request = new SearchCustomersRequest { Predicates = predicates, DateRange = dateRange, Ordering = ordering, PageInfo = pageInfo }; return(await CustomerManagementService.CallAsync((s, r) => s.SearchCustomersAsync(r), request)); }
public async Task If_There_Are_No_Customers_Matching_The_Filter_Criteria_The_Operation_Must_Be_Success_And_Results_Must_Be_Empty() { // // Arrange // var mockedCustomerRepository = new Mock <ICustomerRepository>(); mockedCustomerRepository.Setup(x => x.GetCustomersByNameAsync(It.IsAny <string>())).ReturnsAsync(OperationResult <List <Customer> > .Success(new List <Customer>())); var customerService = new CustomerService(mockedCustomerRepository.Object, Mock.Of <ILogger <CustomerService> >()); var searchRequest = new SearchCustomersRequest("cheranga"); // // Act // var operationResult = await customerService.SearchCustomersAsync(searchRequest); // // Assert // Assert.True(operationResult.Status); Assert.Empty(operationResult.Data.Customers); }
private IObservable <IList <Customer> > GetRecentlyUpdatedCustomers(CustomersApi customersApi, CustomerQuery query, string cursor) { var request = new SearchCustomersRequest(Cursor: cursor, Query: query); return(customersApi .SearchCustomersAsync(request) .ToObservable() .SelectMany( response => { if (response.Cursor == null) { return Observable .Return(response.Customers); } else { return Observable .Return(response.Customers) .Concat(GetRecentlyUpdatedCustomers(customersApi, query, response.Cursor)); } })); }
public ActionResult <List <CustomerResponse> > Get([FromQuery] SearchCustomersRequest request) { var customersResponse = _customerService.Search(request); return(Ok(customersResponse)); }
public async Task <OperationResult <SearchCustomersResponse> > SearchCustomersAsync(SearchCustomersRequest request) { var isValid = request.Validate(); if (!isValid) { _logger.LogError($"Error. Invalid request: {JsonConvert.SerializeObject(request)}"); return(OperationResult <SearchCustomersResponse> .Failure("Invalid request")); } var operationResult = await _customerRepository.GetCustomersByNameAsync(request.Name).ConfigureAwait(false); if (!operationResult.Status) { _logger.LogError($"Error: {operationResult.Message}"); return(OperationResult <SearchCustomersResponse> .Failure("Cannot search for customers, error occured")); } var displayCustomers = operationResult.Data.Select(x => x.ToDisplay()); return(OperationResult <SearchCustomersResponse> .Success(new SearchCustomersResponse(displayCustomers))); }