In my domain model I have a customer aggregate root. My business rule is -> I can not add a new customer with the same firstname, lastname and email address. Where is the best place for this kind of validation check?
First from my point of view its completely wrong to place this kind of check inside of my customer aggregate. Second it also feels unnatural to add this validation inside of my CustomerRepository as I want to treat them just as simple in memory collections with mainly the same logic for all my aggregates. Third i am also not going to add this check inside of my CreateCustomer-Command because then this important check is outside of my domain model.
So the last option I see is to create a CustomerService class and put this kind of validation here.
Do you have any other recommendation? I already read many of other posts but they don't really give a clear answer... Thanks!!