2
respostas

[Projeto] CurrencyConverter

namespace CurrencyConverter.Programs
{
    public static class ConvertionFee
    {
        public const decimal DollarFee = 5.53m;
        public const decimal EuroFee = 6.41m;
        public const decimal PoundFee = 7.37m;
        public const decimal YenFee = 0.036m;

        public const decimal StandardFee = 0.10m;
        public const decimal SilverFee = 0.08m;
        public const decimal GoldFee = 0.06m;
        public const decimal PremiumFee = 0.04m;
    }

    public class ConvertionCalculation
    {
        decimal value;
        decimal exchangeFee;
        decimal categoryFee;
        decimal newValue;
        string symbol;
        string category;
        ConverterView viewConverter = new();

        public void Play()
        {
            viewConverter.ShowWelcomeMenu();

            while (true)
            {
                viewConverter.ShowMainMenu();
                int choose = viewConverter.GetPlayerChoose(6);

                switch (choose)
                {
                    case 1:
                        while (true)
                        {
                            viewConverter.ShowCurrencyMenu();
                            choose = viewConverter.GetPlayerChoose(5);
                            switch (choose)
                            {
                                case 1: exchangeFee = ConvertionFee.DollarFee; symbol = "US$"; break;
                                case 2: exchangeFee = ConvertionFee.EuroFee; symbol = "€"; break;
                                case 3: exchangeFee = ConvertionFee.PoundFee; symbol = "£"; break;
                                case 4: exchangeFee = ConvertionFee.YenFee; symbol = "¥"; break;
                                case 5: break;
                            }
                            break;
                        }
                        break;
                    case 2:
                        while (true)
                        {
                            viewConverter.ShowCategoryMenu();
                            choose = viewConverter.GetPlayerChoose(5);
                            switch (choose)
                            {
                                case 1: categoryFee = ConvertionFee.StandardFee; category = "Standard"; break;
                                case 2: categoryFee = ConvertionFee.SilverFee; category = "Silver"; break;
                                case 3: categoryFee = ConvertionFee.GoldFee; category = "Gold"; break;
                                case 4: categoryFee = ConvertionFee.PremiumFee; category = "Premium"; break;
                                case 5: break;
                            }
                            break;
                        }
                        break;

                    case 3:
                        value = viewConverter.ShowEnterMenu();                        
                        break;

                    case 4:
                        Console.WriteLine($"\nAmount request for Conversion: R${value}.");
                        Console.WriteLine($"exchange fee of the chosen currency: {symbol}{exchangeFee}.");
                        Console.WriteLine($"Conversion fee of the chosen client category: {category} Fee: {categoryFee}.");
                        break;
                    case 5:
                        newValue = (value - (value * categoryFee))/exchangeFee;
                        Console.WriteLine($"\nYour amount after exchange is {symbol}{newValue:F2}.");
                        break;
                    case 6:
                        Console.WriteLine("Thank you, see you next time!");
                        return;
                }
            }
        }
    }
}

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas
namespace CurrencyConverter.Programs
{
    public class ConverterView
    {
        public void ShowWelcomeMenu()
        {
            Console.WriteLine("\n──────────────────────────────────────");
            Console.WriteLine("Welcome to the Currency Convertion App!");
            Console.WriteLine("──────────────────────────────────────");
            Console.WriteLine("Please, Enter your Name: ");
            string nameClient = Console.ReadLine();
            Console.WriteLine($"\nHello, {nameClient}. Let's Go!");
        }

        public void ShowMainMenu()
        {
            Console.WriteLine("\n─────────");
            Console.WriteLine("Main Menu");
            Console.WriteLine("─────────");
            Console.WriteLine("1. Choose Currancy");
            Console.WriteLine("2. Choose your Category");
            Console.WriteLine("3. Enter the Value to exchange");
            Console.WriteLine("4. Details of the Operation");
            Console.WriteLine("5. Calculate");
            Console.WriteLine("6. Exit");
        }

        public void ShowCurrencyMenu()
        {
            Console.WriteLine("\n─────────────");
            Console.WriteLine("Currency Menu");
            Console.WriteLine("─────────────");
            Console.WriteLine("1. Dollar");
            Console.WriteLine("2. Euro");
            Console.WriteLine("3. Pound");
            Console.WriteLine("4. Iene");
            Console.WriteLine("5. Back");
        }

        public void ShowCategoryMenu()
        {
            Console.WriteLine("\n─────────────");
            Console.WriteLine("Category Menu");
            Console.WriteLine("─────────────");
            Console.WriteLine("1. Standard");
            Console.WriteLine("2. Silver");
            Console.WriteLine("3. Gold");
            Console.WriteLine("4. Premium");
            Console.WriteLine("5. Back");
        }

        public decimal ShowEnterMenu()
        {
            Console.WriteLine("Enter the Value to Exchenge: ");
            _ = decimal.TryParse(Console.ReadLine(), out decimal value);
            return value;
        }

        public int GetPlayerChoose(int maxOption)
        {
            int choose;
            while (!int.TryParse(Console.ReadLine(), out choose) || choose < 1 || choose > maxOption)
            {
                Console.WriteLine($"Invalid Choose. Please, enter a option between 1 e {maxOption}.");
            }
            return choose;
        }
    }
}

Esta é o arquivo com os Menus interativos e suas chamadas.

Oi, Rafael! Como vai?

Seu projeto CurrencyConverter ficou bem estruturado e organizado. A forma como você utilizou constantes para armazenar as taxas torna o código mais limpo e fácil de manter. Além disso, o uso de switch para seleção de moedas e categorias mostra uma boa compreensão da lógica condicional.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!