public CompteBancaire(CompteCréé compte, DépotRéalisé dépotRéalisé) { _evenements = new List<IEvénementMétier>(); _numeroDeCompte = compte.NuméroDeCompte; _autorisationDeCrédit = compte.AutorisationDeCrédit; _montant = new Montant(dépotRéalisé.MontantDepot.Montant1); }
public BalanceNégativeDétectée(string numéroDeCompte, Montant montant, DateTime dateRetrait) : this() { _numéroDeCompte = numéroDeCompte; _montant1 = montant; _dateRetrait = dateRetrait; }
public DépotRéalisé(string numéroDeCompte, Montant montantDepot, DateTime dateDepot) : this() { _numéroDeCompte = numéroDeCompte; MontantDepot = montantDepot; _dateDepot = dateDepot; }
public RetraitRéalisé(string numéroDeCompte, Montant montantRetrait, DateTime dateRetrait) : this() { _numéroDeCompte = numéroDeCompte; MontantRetrait = montantRetrait; _dateRetrait = dateRetrait; }
public CompteBancaire(CompteCréé compte) { _evenements = new List<IEvénementMétier>(); _numeroDeCompte = compte.NuméroDeCompte; _autorisationDeCrédit = compte.AutorisationDeCrédit; _montant = new Montant(0); }
public void EtantDonnéUnCompteBancaireFaireUnRetraitAvecProvisionSuffisanteProduitUnEvenement() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 0), new DépotRéalisé(_numéroDeCompte, new Montant(100), DateTime.Now)); // Event Sourcing avec une liste d'événements (params IEvénementMétier>[]) var montantRetrait = new Montant(10); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); // retourne un IEnumerable<IEvénémentMétier> contenant l'événement RetraitRealisé Check.That(evenements).ContainsExactly(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait)); }
public void EtantDonnéUnCompteBancaireNonApprovisionnéFaireUnRetraitSansDépasserSonAutorisationDeCreditSuffisanteProduitDeuxEvenements() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 10), new DépotRéalisé(_numéroDeCompte, new Montant(5), DateTime.Now)); var montantRetrait = new Montant(10); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait).ToList(); // retourne un IEnumerable<IEvénémentMétier> contenant l'événement RetraitRealisé Check.That(evenements).ContainsExactly<IEvenementMetier>(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait), new BalanceNégativeDétectée(_numéroDeCompte, new Montant(5), dateRetrait)); }
public void EtantDonnéUnCompteBancaireInitialiséViaEventSourcingFaireUnRetraitEnDehorsDeLAutorisationDeCreditLèveUneException() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 10), new DépotRéalisé(_numéroDeCompte, new Montant(5), DateTime.Now)); var montantRetrait = new Montant(30); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); Check.That(evenements).IsEmpty(); }
public void EtantDonnéUnCompteBancaireNonApprovisionnéFaireUnRetraitSansDépasserSonAutorisationDeCreditSuffisanteProduitDeuxEvenements() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 10), new DépotRéalisé(_numéroDeCompte, new Montant(5), DateTime.Now)); var montantRetrait = new Montant(10); var dateRetrait = DateTime.Now; var evenements = compteBancaire.FaireUnRetrait(montantRetrait, dateRetrait); // retourne un IEnumerable<IEvénémentMétier> contenant l'événement RetraitRealisé Check.That(evenements).ContainsExactly <IEvénementMétier>(new RetraitRéalisé(_numéroDeCompte, montantRetrait, dateRetrait), new BalanceNégativeDétectée(_numéroDeCompte, new Montant(5), dateRetrait)); }
public void EtantDonnéUnCompteBancaireFaireUnDepotProduitUnEvenement() { var compteBancaire = new CompteBancaire(new CompteCréé(_numéroDeCompte, 0)); // Event Sourcing avec un seul événement var montantDepot = new Montant(10); var dateDepot = DateTime.Now; var evenements = compteBancaire.FaireUnDepot(montantDepot, dateDepot); // retourne un IEnumerable<IEvenementMetier> contenant l'événement DepotRealisé Check.That(evenements).ContainsExactly(new DépotRéalisé(_numéroDeCompte, montantDepot, dateDepot)); }
public IEnumerable<IEvenementMetier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { if ((montant.Val - montantRetrait.Val)*-1 > _autorisationCredit.Val) { throw new Exception(); } else { montant.Val -= montantRetrait.Val; yield return new RetraitRéalisé(_numCompte, montantRetrait, dateRetrait); if (montant.Val < 0) { yield return new BalanceNégativeDétectée(_numCompte, new Montant(montant.Val*-1), dateRetrait); } } }
public IEnumerable<IEvénementMétier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { RetraitRéalisé retrait = new RetraitRéalisé(_numeroDeCompte, montantRetrait, dateRetrait); _evenements.Add(retrait); if (montantRetrait.Montant1 - _montant.Montant1 > _autorisationDeCrédit) { throw new RetraitNonAutorisé("La valeur du retrait est supérieurs à la valeure maximale autorisée !"); } if (montantRetrait.Montant1 > _montant.Montant1) { Montant mt = new Montant(Math.Abs(_montant.Montant1 - montantRetrait.Montant1)); _evenements.Add(new BalanceNégativeDétectée(_numeroDeCompte, mt, dateRetrait)); } _montant.Sub(montantRetrait); return _evenements; }
public override string ToString() { return(string.Format("Le montant {0} a été porté au {1} le {2}", Montant.ToString(), Type, Date.ToLongDateString())); }
public IEnumerable<IEvénementMétier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { DépotRéalisé depot = new DépotRéalisé(_numeroDeCompte, montantDepot, dateDepot); _montant.Add(montantDepot); yield return depot; }
public IEnumerable<IEvenementMetier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { montant.Val += montantDepot.Val; yield return new DépotRéalisé(this._numCompte, montantDepot, dateDepot); }
public BalanceNégativeDétectée(string numeroCompte, Montant montant, DateTime dateRetrait) { this.numeroCompte = numeroCompte; this.montant = montant; this.dateRetrait = dateRetrait; }
public IEnumerable<IEvenementMetier> FaireUnRetrait(Montant montantRetrait, DateTime dateRetrait) { yield return new RetraitRéalisé(NuméroDeCompte, montantRetrait, dateRetrait); }
public IEnumerable<IEvenementMetier> FaireUnDepot(Montant montantDepot, DateTime dateDepot) { yield return new DépotRéalisé(NuméroDeCompte, montantDepot, dateDepot); }
public Montant Substract(Montant montantRetrait) { return new Montant(_montant - montantRetrait._montant); }
public bool Equals(Montant mnt) { return mnt._montant == _montant; }
public Montant Add(Montant montantDepot) { return new Montant(_montant + montantDepot._montant); }
public CompteCréé(string numéroDeCompte, int montant) { NuméroDeCompte = numéroDeCompte; MontantCompte = new Montant(montant); }
public CompteBancaire(CompteCréé compteCréé, DépotRéalisé dépotRéalisé) { _numCompte = compteCréé.NumCompte; _autorisationCredit.Val = compteCréé.AutorisationCredit.Val; montant = dépotRéalisé.MontantDepot; }
public RetraitRéalisé(String numeroCompte, Montant montantRetrait, DateTime dateRetrait) { MontantRetrait = montantRetrait; this.dateRetrait = dateRetrait; this.numeroCompte = numeroCompte; }
public DépotRéalisé(string numéroDeCompte,Montant montantDepot, DateTime dateDepot) { this.numerocompte = numéroDeCompte; this.montantDepot = montantDepot; this.dateDepot = dateDepot; }
public RetraitRéalisé(string numéroDeCompte,Montant montantRetrait, DateTime dateRetrait) { this.numerocompte = numéroDeCompte; this.montantRetrait = montantRetrait; this.dateRetait = dateRetrait; }
public CompteBancaire(CompteCréé compteCréé) { _numCompte = compteCréé.NumCompte; _autorisationCredit = compteCréé.AutorisationCredit; }
//Transforme un groupe sous la forme Element, dElement public override Element Déconstruire() { Element e = new Element(); dElement d; string CodeAttribut = ""; TypeElement type = Acces.type_BUDGET_OPERATION; e.ID = ID; e.Element_Type = type.ID; e.Code = Code; e.Libelle = Libelle; e.Type_Element = (int)Type_Flux; e.Actif = Actif; //Type Enveloppe { CodeAttribut = "ENVELOPPE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Enveloppe.ToString()); e.Liste.Add(d); } //Période { CodeAttribut = "PERIODE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Periode.ToString()); e.Liste.Add(d); } //Date opération { CodeAttribut = "DATE_OPERATION"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, DateOperation); e.Liste.Add(d); } //Type opération { CodeAttribut = "TYPE_OPERATION"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Type_Operation.ToString()); e.Liste.Add(d); } //Budget ORG { CodeAttribut = "BUDGET_ORG"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_ORG.ToString()); e.Liste.Add(d); } //Budget GEO { CodeAttribut = "BUDGET_GEO"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_GEO.ToString()); e.Liste.Add(d); } //Compte ID { CodeAttribut = "COMPTE_ID"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Compte_ID.ToString()); e.Liste.Add(d); } //Montant { CodeAttribut = "MONTANT"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Montant.ToString()); e.Liste.Add(d); } //Type Flux { CodeAttribut = "TYPE_FLUX"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, ((int)Type_Flux).ToString()); e.Liste.Add(d); } //Type monatnt { CodeAttribut = "TYPE_MONTANT"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, ((int)Type_Montant).ToString()); e.Liste.Add(d); } //Commentaire { CodeAttribut = "COMMENTAIRE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Commentaire); e.Liste.Add(d); } //Virement ID { CodeAttribut = "VIREMENT_ID"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Virement_ID.ToString()); e.Liste.Add(d); } return(e); }
//Transforme un groupe sous la forme Element, dElement public override Element Déconstruire() { Element e = new Element(); dElement d; string CodeAttribut = ""; TypeElement type = Acces.type_BUDGET_VIREMENT; e.ID = ID; e.Code = Code; e.Libelle = Libelle; e.Element_Type = type.ID; e.Type_Element = (int)Type_Virement; e.Actif = Actif; //Période { CodeAttribut = "PERIODE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Periode.ToString()); e.Liste.Add(d); } //TypeFlux { CodeAttribut = "TYPE_FLUX"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, ((int)Type_Flux).ToString()); e.Liste.Add(d); } //TYpeMontant { CodeAttribut = "TYPE_MONTANT"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, ((int)Type_Montant).ToString()); e.Liste.Add(d); } //Enveloppe Source { CodeAttribut = "ENVELOPPE_SRC"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Enveloppe_Src.ToString()); e.Liste.Add(d); } //Budget GEO Source { CodeAttribut = "BUDGET_ORG_SRC"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_ORG_Src.ToString()); e.Liste.Add(d); } //Budget GEO Source { CodeAttribut = "BUDGET_GEO_SRC"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_GEO_Src.ToString()); e.Liste.Add(d); } //Compte ID Source { CodeAttribut = "COMPTE_ID_SRC"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Compte_ID_Src.ToString()); e.Liste.Add(d); } //Enveloppe Destination { CodeAttribut = "ENVELOPPE_DEST"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Enveloppe_Dest.ToString()); e.Liste.Add(d); } //Budget GEO Destination { CodeAttribut = "BUDGET_ORG_DEST"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_ORG_Dest.ToString()); e.Liste.Add(d); } //Budget GEO Destination { CodeAttribut = "BUDGET_GEO_DEST"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Budget_GEO_Dest.ToString()); e.Liste.Add(d); } //Compte ID Destination { CodeAttribut = "COMPTE_ID_DEST"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Compte_ID_Dest.ToString()); e.Liste.Add(d); } //Date de la demande { CodeAttribut = "DATE_DEMANDE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, DateDemande); e.Liste.Add(d); } //Date d'effet { CodeAttribut = "DATE_EFFET"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, DateEffet); e.Liste.Add(d); } //Montant { CodeAttribut = "MONTANT"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Montant.ToString()); e.Liste.Add(d); } //Commentaire { CodeAttribut = "COMMENTAIRE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, Commentaire); e.Liste.Add(d); } //Validé { CodeAttribut = "VALIDE"; d = new dElement(ID, Acces.Trouver_Attribut(type, CodeAttribut).ID, CodeAttribut, (Validé?"1":"0")); e.Liste.Add(d); } return(e); }