Mesmo repositorio, varios clientes

Olá

Eu tenho uma entidade CondicaoPagamento, que é relacionada com uma entidade Pedido;

Para determinado cliente, só é possível criar um pedido novo com condições de pagamento vigentes, e sendo assim criei o seguinte método onde eu recupero as condições de pagamento filtrando pela vigência:

CondicaoPagamentoRepository.buscaPermitidasParaPedido(PedidoAggregate);

Porem em outro cliente, a vigência não é levada em consideração, fazendo com que retorne todas as condições de pagamento existentes.

Como eu faço isso no repositório? Crio outro método? Abstraio o método para o cliente? Uso um Strategy?

Uma particularidade é que tenho muitos clientes, cada um com um filtro diferente, e tenho medo de acontecer uma “explosão de métodos” dentro do repositório;

eu Usaria Strategy e uma fabriqueta, isso resolveria o problema

Um Strategy para substituir somente este método?

Condição de pagamento é somente um dos atributos que é diferente para cada cliente, tambem tenho Tabela de preço, e forma de pagamento que varia. Faria um Strategy com Factory para cada?

Quantos tipos de clientes você tem? Dependendo do número de “condicionais” , acho interessante sim um Strategy mesmo sendo somente um método.

Cada cliente é uma história diferente.
Eu posso ter varias combinações diferentes de estratégia de busca de tabela de preço, condição de pagamento, tipo de cobrança; Posso ter até uma que depende da outra (O tipo de cobrança é condicionado a condição de pagamento), ou todos independentes;