public IEnumerable <IEvénementMétier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { var numeroDeCompte = RecupererNumeroDeCompte(); if (numeroDeCompte == string.Empty) { return(null); } var retrait = new RetraitRéalisé(numeroDeCompte, montantRetrait, dateRetrait); var montantRestantSurLeCompte = CalculerMontantRestantSurLeCompteApresRetrait(retrait); if (montantRestantSurLeCompte >= 0) { return(new[] { (IEvénementMétier)retrait }); } if (Math.Abs(montantRestantSurLeCompte) > RecupererAutorisationDeCredit()) { throw new RetraitNonAutorisé(); } var balanceNegative = new BalanceNégativeDétectée(numeroDeCompte, new Montant(Math.Abs(montantRestantSurLeCompte)), dateRetrait); return(new[] { (IEvénementMétier)retrait, balanceNegative }); }
public IEnumerable<IEvénementMétier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { var numeroDeCompte = RecupererNumeroDeCompte(); if (numeroDeCompte == string.Empty) { return null; } var retrait = new RetraitRéalisé(numeroDeCompte, montantRetrait, dateRetrait); var montantRestantSurLeCompte = CalculerMontantRestantSurLeCompteApresRetrait(retrait); if (montantRestantSurLeCompte >= 0) { return new[] { (IEvénementMétier)retrait }; } if (Math.Abs(montantRestantSurLeCompte) > RecupererAutorisationDeCredit()) { throw new RetraitNonAutorisé(); } var balanceNegative = new BalanceNégativeDétectée(numeroDeCompte, new Montant(Math.Abs(montantRestantSurLeCompte)), dateRetrait); return new[] { (IEvénementMétier)retrait, balanceNegative }; }