public async Task <ActionResult <List <GetCustomerAddressResponse> > > GetCustomerAddresses(Guid customerId, [FromQuery] GetCustomerAddressFilter filter) { var customerAddresses = await _customerAddressesService.GetCustomerAddresses(customerId, filter); if (customerAddresses is null) { return(NotFound()); } return(Ok(customerAddresses)); }
public async Task <List <GetCustomerAddressResponse> > GetCustomerAddresses(Guid customerId, GetCustomerAddressFilter filter) { // prepare filter predicate var predicate = PredicateBuilder.New <CustomerAddress>(true); if (!string.IsNullOrEmpty(filter?.SearchString)) { predicate = predicate.Or(p => p.Name.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.Address.Street.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.Address.City.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.Address.ZipCode.ToLower().Contains(filter.SearchString.ToLower())); predicate = predicate.Or(p => p.Address.PhoneNumber.ToLower().Contains(filter.SearchString.ToLower())); } if (!string.IsNullOrEmpty(filter?.City)) { predicate = predicate.And(p => p.Address.City.ToLower().Contains(filter.City.ToLower())); } var customerAddresses = await _unitOfWork.CustomerAddresses.FindWithAddress(customerId, predicate); return(_mapper.Map <List <GetCustomerAddressResponse> >(customerAddresses)); }