Olá, galera!
Eu gostaria de pedir dicas para aplicar uma funcionalidade em um projeto pessoal. Estou desenvolvendo um sistemas de controle de tickets para a empresa onde trabalho, e já está praticamente tudo funcionando. Agora vou implementar os envios de e-mails (quando um ticket for aberto, quando um atendente receber a responsabilidade pelo ticket, quando o mesmo for fechado, etc.), e gostaria de saber como implementar seguindo os princípios de SOLID.
Observer não cabe aqui, pois são várias ações em meu Ticket (fechar, addMensagem, reabrir, setAtendenteResponsavel, etc.). Pensei em Proxy. Criar um TicketProxy e nesses métodos adicionar a funcionalidade de e-mail. Porém se futuramente outras ações precisarem ser disparadas nesses eventos, precisaria mecher no Proxy, quebrando o S de SOLID.
Aqui está o código (branch dev-v2
é a versão em desenvolvimento com as features em questão):
https://github.com/CViniciusSDias/controle-de-tickets/tree/dev-v2
Que linha devo seguir para não quebrar nenhum princípio SOLID?
PS.: Aceito dicas relacionados a quaisquer outras partes do código também, galera.
Desde já, grato!