2
respostas

[Dúvida] Atividade do restaurante

Como posso fazer para que possa ser selecionado mais de um pedido?
E como posso fazer para chamar o método MesaDisponível antes de realizar o pedido?

public class Restaurante
{
    public List<Mesa> Mesas { get; set; } = new List<Mesa>();
    public void MesaDisponivel(Mesa mesa)
    {
        if (mesa.Ocupada == false)
            Console.WriteLine("Mesa disponível para reserva");
        else Console.WriteLine("Mesa ocupada, selecione outra mesa para reserva");
    }
    public List<string> Cardapio { get; set; } = new List<string> { "Pizza", "Hambúrguer", "Salada", "Sopa", "Frango Assado" };
}
public class Mesa
{
    public int Numero { get; set; }
    public bool Ocupada { get; set; }

}
public class Pedidos
{
    public void FazerPedido(Restaurante restaurante)
    {
        int numeroMesa;

        while (true)
        {
            Console.WriteLine("Digite o número da mesa:");

            bool numeroValido =
                int.TryParse(Console.ReadLine(), out numeroMesa);

            if (numeroValido)
                break;

            Console.WriteLine("Digite apenas números.");
        }

        Mesa mesaEncontrada = restaurante.Mesas.FirstOrDefault(m => m.Numero == numeroMesa);
        if (mesaEncontrada == null)
        {
            Console.WriteLine("Mesa não encontrada. Pedido não realizado.");
            return;
        }
        if (mesaEncontrada.Ocupada)
        {
            Console.WriteLine("=== CARDÁPIO ===");

            foreach (var item in restaurante.Cardapio)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("\nRealize seu pedido: ");
            string pedidoRealizado = Console.ReadLine();
            string pedidoCardapio = restaurante.Cardapio.FirstOrDefault(p => p.Equals(pedidoRealizado, StringComparison.OrdinalIgnoreCase));
            switch (pedidoCardapio)
            {



                case "Pizza":
                    Console.WriteLine("Pedido de Pizza realizado com sucesso!");
                    break;
                case "Hambúrguer":
                    Console.WriteLine("Pedido de Hambúrguer realizado com sucesso!");
                    break;
                case "Salada":
                    Console.WriteLine("Pedido de Salada realizado com sucesso!");
                    break;
                case "Sopa":
                    Console.WriteLine("Pedido de Sopa realizado com sucesso!");
                    break;
                case "Frango Assado":
                    Console.WriteLine("Pedido de Frango Assado realizado com sucesso!");
                    break;
                default:
                    Console.WriteLine("Item não encontrado no cardápio.");
                    break;

            }
        }
        else
        {
            Console.WriteLine("Mesa livre, não há como fazer pedidos.");
        }
    }
}
2 respostas

Oi, Giseli! Como vai?

Gostei da forma como você organizou as classes Restaurante, Mesa e Pedidos, isso mostra que você já está aplicando bem os conceitos de Orientação a Objetos.

Sobre validar a disponibilidade da mesa antes do pedido, você pode chamar o método MesaDisponivel() logo após encontrar a mesa. Já para permitir mais de um pedido, uma solução interessante é criar uma List<string> para armazenar vários itens escolhidos pela pessoa usuária.

Uma dica interessante para o futuro é utilizar um while para permitir adicionar vários pedidos até a pessoa decidir finalizar. Veja este exemplo:


List<string> pedidos = new List<string>();
string opcao = "";

while(opcao != "sair")
{
    Console.WriteLine("Digite um item do cardapio ou 'sair':");
    opcao = Console.ReadLine();

    if(opcao != "sair")
    {
        pedidos.Add(opcao);
    }
}

Console.WriteLine("Pedidos realizados:");
foreach(string item in pedidos)
{
    Console.WriteLine(item);
}

Esse código cria uma lista de pedidos e permite adicionar vários itens até digitar sair.

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

Obrigada pelo retorno, no caso dessa lista eu crio ela no Program.cs ou em uma das classes?