public async Task GetCustomers_should_return_error_when_get_customers_from_db_failed() { var repository = new Mock <ICustomerRepository>(); repository.Setup(r => r.GetListAsync(It.IsAny <int>(), It.IsAny <int>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <object>())).Returns(Task.FromResult((IEnumerable <CustomerEntity>)null)); var sut = new CustomerService(repository.Object); var filter = new GetCustomersFilter(); var result = await sut.GetCustomersAsync(filter); Assert.False(result.IsSuccessful); Assert.Equal("Get customers failed.", result.ErrorMessage); }
public async Task GetCustomers_should_return_correct_no_customer_when_no_match_found() { var repository = new Mock <ICustomerRepository>(); var customers = BuildCustomers(); repository.Setup(r => r.GetListAsync(1, 1, "test desc", It.IsAny <string>(), It.IsAny <object>())).Returns(Task.FromResult(BuildCustomers())); var sut = new CustomerService(repository.Object); var filter = new GetCustomersFilter() { OrderBy = "test_no_match", OrderByDirection = "desc", Page = 1, RecordsPerPage = 1 }; var result = await sut.GetCustomersAsync(filter); Assert.True(result.IsSuccessful); Assert.Empty(result.Result.Items); }
public async Task GetCustomers_should_return_correct_customer() { var repository = new Mock <ICustomerRepository>(); var customers = BuildCustomers(); repository.Setup(r => r.GetListAsync(1, 1, "test desc", It.IsAny <string>(), It.IsAny <object>())).Returns(Task.FromResult(BuildCustomers())); var sut = new CustomerService(repository.Object); var filter = new GetCustomersFilter() { OrderBy = "test", OrderByDirection = "desc", Page = 1, RecordsPerPage = 1 }; var result = await sut.GetCustomersAsync(filter); Assert.True(result.IsSuccessful); Assert.Single(result.Result.Items); Assert.Equal(customers.First().FirstName, result.Result.Items.First().FirstName); Assert.Equal(customers.First().LastName, result.Result.Items.First().LastName); Assert.Equal(customers.First().DOB, result.Result.Items.First().DOB); Assert.Equal(customers.First().Email, result.Result.Items.First().Email); }
public async Task <List <GetCustomerWithImageResponse> > GetAllCustomers(GetCustomersFilter filter) { // prepare filter predicate var predicate = PredicateBuilder.New <Customer>(true); if (!string.IsNullOrEmpty(filter?.SearchString)) { predicate = predicate.Or(p => p.CompanyName.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.VatNumber.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.Id.ToString().ToLower().Contains(filter.SearchString.ToLower())); } var customers = await _unitOfWork.Customers.FindWithAccount(predicate); return(customers.Select(customer => new GetCustomerWithImageResponse() { Id = customer.Id, AccountId = customer.AccountId, Image = customer.Account.Image, CompanyName = customer.CompanyName, VatNumber = customer.VatNumber, }) .ToList()); }
public async Task <ActionResult <List <GetCustomerResponse> > > GetCustomers([FromQuery] GetCustomersFilter filter) { return(Ok(await _customerService.GetAllCustomers(filter))); }
//This function supports pagination, and it will get first 5 records of first page by default. public async Task <ExecutionResult <PagedResult <CustomerEntity> > > GetCustomersAsync(GetCustomersFilter filter) { var result = new ExecutionResult <PagedResult <CustomerEntity> >(); var query = ""; var firstName = ""; var lastName = ""; var email = ""; var page = 1; var recordsPerpage = 5; var orderBy = "dob, lastName"; var orderByDirection = "asc"; if (!string.IsNullOrWhiteSpace(filter.FirstName)) { query = " FirstName=@FirstName"; firstName = filter.FirstName; } if (!string.IsNullOrWhiteSpace(filter.LastName)) { query += " LastName=@LastName"; lastName = filter.LastName; } if (!string.IsNullOrWhiteSpace(filter.Email)) { query += " Email=@Email"; email = filter.Email; } if (filter.Page > 0) { page = filter.Page; } if (filter.RecordsPerPage > 0) { recordsPerpage = filter.RecordsPerPage; } if (!string.IsNullOrWhiteSpace(filter.OrderBy)) { orderBy = filter.OrderBy; } if (!string.IsNullOrWhiteSpace(filter.OrderByDirection)) { orderByDirection = filter.OrderByDirection; } if (!string.IsNullOrWhiteSpace(query)) { query = $"where {query}"; } var parameters = new { firstName, lastName, email }; var customers = await _customerRepository.GetListAsync(page, recordsPerpage, $"{orderBy} {orderByDirection}", query, parameters); if (customers == null) { result.IsSuccessful = false; result.ErrorMessage = "Get customers failed."; return(result); } var totalCount = await _customerRepository.CountAsync(); result.IsSuccessful = true; var collectionResult = new PagedResult <CustomerEntity>(); collectionResult.TotalCount = totalCount; collectionResult.Page = page; collectionResult.RecordsPerPage = recordsPerpage; collectionResult.Items = customers; result.Result = collectionResult; return(result); }