O que fiz no meu caso foi criar uma nova tabela no banco de dados, você poderia chamá-lo, Domains
por exemplo.
Adicione todos os recursos específicos, aqueles que poderiam ser mostrados em alguns domínios, mas não nos demais, como colunas para essa tabela e como bit para valores booleanos. Como, no meu caso allow_multiple_bookings
, use_company_card
... tanto faz.
Em seguida, considere criar uma classe Domain
e seu respectivo repositório e pergunte esses valores em seu código, tentando inserir o máximo possível essa lógica em seu domínio (seu modelo, serviços de aplicativos etc.).
Por exemplo, eu não faria a verificação do método do controlador para saber RequestBooking
se o domínio que está solicitando uma reserva pode solicitar apenas um ou mais.
Em vez disso, faço isso em um RequestBookingValidatorService
que pode verificar se a data e hora da reserva já passou, o usuário tem um cartão de crédito ativado ... ou o domínio do qual essa ação vem tem permissão para solicitar mais de uma reserva (e, se já tiver qualquer).
Isso adiciona a conveniência da legibilidade, pois você levou essa decisão aos seus serviços de aplicativo. Além disso, acho que sempre que precisar de um novo recurso, posso usar as migrações do Laravel (ou Symfony) para adicionar esse recurso à tabela e até atualizar suas linhas (seus domínios) com os valores que quero no mesmo commit que codifiquei.