public Result AjouterPersonne(string prenom, InfosNaissance infosNaissance) { PersonneNonAjouteeCar?raison = null; if (string.IsNullOrWhiteSpace(prenom)) { raison = PersonneNonAjouteeCar.PrenomInvalide; } else { if (!_state.Personnes.Any(p => p.Prenom == prenom && p.InfosNaissance == infosNaissance)) { var declarationNaissance = Personne.DeclarerNaissance(prenom, infosNaissance); if (declarationNaissance && declarationNaissance is Result <Personne> declarationOk) { _state.Personnes.Add(declarationOk.Value); AddDomainEvent(new PersonneAjoutee(Id, prenom, infosNaissance.Lieu, infosNaissance.DateNaissance)); return(Result.Ok()); } else { return(declarationNaissance); } } else { raison = PersonneNonAjouteeCar.PersonneExistante; } } return(Result.Fail(raison.Value)); }
public static Result DeclarerNaissance(string prenom, InfosNaissance infosNaissance) { if (string.IsNullOrWhiteSpace(prenom)) { return(Result.Fail(DeclarationNaissanceImpossibleCar.AbsenceDePrenom)); } if (infosNaissance == null) { return(Result.Fail(DeclarationNaissanceImpossibleCar.AbsenceInformationNaissance)); } return(Result.Ok(new Personne(PersonneId.Generate()) { Prenom = prenom, InfosNaissance = infosNaissance })); }