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));
            }
        }