static void Main(string[] args) { #region Creational Patterns SafeAccountProxy safeAccount = new SafeAccountProxy();//there is only one account used per mobile device safeAccount.RealSubject = ClientAccount.Instance(); safeAccount.Deposit(1000, 5000, 2000); ICurrencyProfile eurProfile = new CurrencyEUR { Client = ClientAccount.Instance(), ProfileCurrency = ECurrencyProfile.EUR }; ICurrencyProfile ronProfile = new CurrencyEUR { Client = ClientAccount.Instance(), ProfileCurrency = ECurrencyProfile.RON }; ICurrencyProfile usdProfile = new CurrencyEUR { Client = ClientAccount.Instance(), ProfileCurrency = ECurrencyProfile.USD }; #endregion ConstructBrasovLocations(); ConstructIBANs(); XmlReader.ReadCurrency(); LoginToAccount(safeAccount, out sw); while (sw >= 0) { switch (sw) { //Change password case 1: { Console.WriteLine("Introdu parola:"); string password = Console.ReadLine(); safeAccount.Activate(password); break; } //See currencies case 2: { XmlReader.PrintCurrency(); break; } //Exchange case 3: { Exchange(); break; } //Send money to another account case 4: { string iban = null; ICurrencyProfile profile = null; while (true) { Console.WriteLine("Dati contul IBAN in care doriti sa faceti depunerea:"); iban = Console.ReadLine(); if (IBANs.Contains(iban)) { break; } else { Console.WriteLine("Cont iban inexistent!"); } } Console.WriteLine("Dati suma:"); Double.TryParse(Console.ReadLine(), out double sum); Console.WriteLine("Alegeti contul din care sa se retraga suma: eur, ron sau usd"); string option = Console.ReadLine(); option = option.Trim().ToUpper(); switch (option) { case "EUR": { profile = eurProfile; break; } case "RON": { profile = ronProfile; break; } case "USD": { profile = usdProfile; break; } default: { Console.WriteLine("Pentru contul dumneavoastra sunt disponibile doar 3 profile: Euro, Dolar si Ron"); break; } } if (profile != null) { profile.SendMoney(iban, sum); } break; } case 5: { Console.WriteLine("Introduceti cifrele codului de bare de pe factura:"); Int32.TryParse(Console.ReadLine(), out int code); Console.WriteLine("Alegeti tipul facturii: 1-Electricitate, 2-Apa, 3-Telefon, 4-Gaz"); Int32.TryParse(Console.ReadLine(), out int option); EBillType type = EBillType.NO_BILL; switch (option) { case 1: { type = EBillType.EElectricityBill; break; } case 2: { type = EBillType.EWaterBill; break; } case 3: { type = EBillType.EPhoneBill; break; } case 4: { type = EBillType.EGasBill; break; } default: { Console.WriteLine("Optiunea este momentan indisponibila."); break; } } if (type != EBillType.NO_BILL) { string randomIBAN = IBANs.ElementAt(random.Next(0, IBANs.Count)); ronProfile.SendMoney(randomIBAN, valFactura); Console.WriteLine($"{type.ToString()} : A fost retrasa suma de {valFactura} ron."); } break; } case 6: { Console.WriteLine("Alegeti reteaua: 1-Telekom, 2-Vodafone, 3-Digi, 4-Orange"); Int32.TryParse(Console.ReadLine(), out int optionResult); Console.WriteLine("Introduceti numarul de telefon:"); Int32.TryParse(Console.ReadLine(), out int phone); EMobilePhoneNetwork network = EMobilePhoneNetwork.NO_AVAIBLE_NETWORK; switch (optionResult) { case 1: { network = EMobilePhoneNetwork.Telekom; break; } case 2: { network = EMobilePhoneNetwork.Vodafone; break; } case 3: { network = EMobilePhoneNetwork.Digi; break; } case 4: { network = EMobilePhoneNetwork.Orange; break; } default: { Console.WriteLine("Momentan nu se pot face plati in reteaua aleasa."); break; } } if (network != EMobilePhoneNetwork.NO_AVAIBLE_NETWORK) { string randomIBAN = IBANs.ElementAt(random.Next(0, IBANs.Count)); int valCartela = valoriCartela.ElementAt(random.Next(0, valoriCartela.Count)); eurProfile.SendMoney(randomIBAN, valCartela); Console.WriteLine($"Reincarcare cartela {network.ToString()} : A fost retrasa suma de {valCartela} eur."); } break; } //Balance from all accounts case 7: { safeAccount.DisplayBalance(); break; } case 8: { PrintAgencies(); break; } case 0: { LoginToAccount(safeAccount, out sw); break; } default: ReadInputCommand(out sw); break; } Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("Doriti sa continuati? y - yes, n - no"); if (Char.TryParse(Console.ReadLine(), out char opt)) { if (opt == 'y') { ReadInputCommand(out sw); } else { sw = 0; } } } }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { EBillType billType = (EBillType)value; return(billType == EBillType.PO); }