Ciao Giulio,
personalmente modellerei l'AppointmentService rendendo esplicite le funzionalità di cui ho bisogno, piuttosto che esporre i metodi Add ed Update che "mi suonano" più da repository che da service. Con un'interfaccia del genere:public interface IAppointmentService{ void Create(Appointment a); void Move(Appointment a, DateTime newDate); void Confirm(Appoinment a);}rendi esplicite le funzionalità implementate, il cliente sa esattamente cosa può fare con l'appuntamento, e tu puoi gestire tranquillamente l'invio delle notifiche via mail senza alcun problema. Come dicevo prima, i metodi Add e Update conviene infilarli nel repository..., oppure se hai bisogno di gestire una qualche validazione dei dati a livello di BusinessLogic, puoi metterli come metodi private nella classe AppointmentService, e richiamarli in modo opportuno dall'interno dei metodi Create, Move e Confirm.
Che ne pensi?
Ciao,neronotte