示例#1
0
        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);
    }