public List <AG_ROOT_Cont> PlatesteFactura(Suma sum, IBAN catre, List <AG_ROOT_Cont> conturi)
        {
            if (this.Sold.getSuma - sum.getSuma >= 0)
            {
                //ia banii din contul celui care transfera
                Tranzactie tranzactie = new Tranzactie(new ID(IstoricTranzactii.getTranzactii.Count()), catre, TipTranzactie.Factura);
                Contract.Requires <ArgumentException>(!tranzactie.Suma.getSuma.Equals(new Suma(0.0)), "suma sa fie !=0");
                tranzactie.SetSumaTranzactionata(sum);
                this.sold.getSuma -= tranzactie.Suma.getSuma;
                this.IstoricTranzactii.AdaugaTranzactie(tranzactie);

                //depune in contul altuia, update contul impactat!!
                int indexDest = GasesteDestinatarul(catre, conturi);
                if (indexDest != -1)
                {
                    AG_ROOT_Cont destinatar = conturi.ElementAt(indexDest);
                    destinatar.sold.getSuma += tranzactie.Suma.getSuma;
                    Tranzactie tranzactie2 = new Tranzactie(new ID(destinatar.IstoricTranzactii.getTranzactii.Count()), this.iban, TipTranzactie.Depunere);
                    tranzactie2.SetSumaTranzactionata(sum);
                    destinatar.IstoricTranzactii.AdaugaTranzactie(tranzactie2);
                    Console.WriteLine("Clientul: " + this.DateClient.Nume + " a platit o factura de " + sum.getSuma + " lei in contul lui " + destinatar.DateClient.Nume);
                    return(conturi); //returneaza lista de conturi cu informatiile updatate
                }
                else
                {
                    throw new AccountNotFoundException();
                }
            }
            else
            {
                throw new InsufficientFundsException();
            }
        }
        public List <AG_ROOT_Cont> TransferBaniIntreDouaConturi(Suma sum, AG_ROOT_Cont sursa, AG_ROOT_Cont dest)
        {
            //va returna conturile modificate
            if (sursa.Sold.getSuma - sum.getSuma >= 0)
            {
                if (sum.getSuma == 0)
                {
                    throw new ArgumentException("");
                }
                else
                {
                    Tranzactie tranzactie = new Tranzactie(new ID(1), dest.IBAN, TipTranzactie.Transfer);
                    //ia banii din contul celui care transfera
                    tranzactie.SetSumaTranzactionata(sum);
                    sursa.sold.getSuma -= tranzactie.Suma.getSuma;
                    sursa.IstoricTranzactii.AdaugaTranzactie(tranzactie);

                    //depune in contul altuia, update contul impactat!!
                    dest.sold.getSuma += tranzactie.Suma.getSuma;
                    Tranzactie tranzactie2 = new Tranzactie(new ID(1), sursa.iban, TipTranzactie.Transfer);
                    tranzactie2.SetSumaTranzactionata(sum);
                    dest.IstoricTranzactii.AdaugaTranzactie(tranzactie2);
                    //Console.WriteLine("Clientul: " + this.DateClient.Nume + " a depus " + sum.getSuma + " lei in contul lui " + destinatar.DateClient.Nume);
                    List <AG_ROOT_Cont> conturi = new List <AG_ROOT_Cont>();
                    conturi.Add(sursa);
                    conturi.Add(dest);
                    return(conturi); //returneaza cele doua conturi cu informatiile updatate
                }
            }
            else
            {
                throw new InsufficientFundsException();
            }
        }
        public AG_ROOT_Cont CreazaCont(IBAN iban, Client client)
        {
            var cont = new AG_ROOT_Cont(iban, client);

            return(cont);
        }