public ResponseCustomerDTO Filter(FilterCustomerDTO filters) { int totalPages = 0, pageSize = 10, pageNumber = 0; var customers = (List <Customer>)_memoryCache.Get("Customers"); if (filters.Type.HasValue) { customers = customers.Where(x => x.TypeEnum == (CustomerTypeEnum)filters.Type.Value).ToList(); } if (filters.Region.HasValue) { customers = customers.Where(x => x.Location.RegionEnum == (CustomerRegionEnum)filters.Region.Value).ToList(); } if (!string.IsNullOrEmpty(filters.Gender)) { customers = customers.Where(x => x.Gender.ToLower().Equals(filters.Gender.ToLower())).ToList(); } if (!string.IsNullOrEmpty(filters.Email)) { customers = customers.Where(x => x.Email.ToLower().Contains(filters.Email.ToLower())).ToList(); } if (filters.PageSize.HasValue) { pageSize = filters.PageSize.Value; } if (filters.PageNumber.HasValue) { pageNumber = filters.PageNumber.Value; } totalPages = customers.Count / pageSize; if (totalPages < pageNumber) { throw new CustomerException(errorTotalPages); } return(new ResponseCustomerDTO { users = customers.Skip(pageNumber * pageSize).Take(pageSize).ToList(), pageNumber = pageNumber, pageSize = pageSize, totalCount = customers.Count() }); }
public ActionResult <ResponseCustomerDTO> Filter([FromBody] FilterCustomerDTO filterCustomerDTO) { try { logHelper.Information("Verificando se os filtros são válidos."); //Verifica se o objeto de filtro veio vazio filterCustomerDTO.IsValid(); //Filtra de acordo com o que foi enviado var customers = _customerRepository.Filter(filterCustomerDTO); return(Ok(customers)); } catch (SystemException e) { logHelper.Error(e, "Ocorreu um erro ao filtrar os clientes já.", filterCustomerDTO); return(VerifyException(e)); } }