class Cardapio
{
public string Nome { get; set; }
public float Preco { get; set; }
public string Categoria { get; set; }
}
class Pedido
{
public int numeroMesa { get; set; }
public List<Cardapio> itensPedidos = new List<Cardapio>();
public bool EstaAberto { get; set; }
public float SomarPedidos()
{
float total = 0f;
foreach(Cardapio preco in itensPedidos)
{
total = total + preco.Preco;
}
return total;
}
}
class Mesa
{
public int NumeroDaMesa { get; set; }
public bool estaOcupada { get; set; }
}
using System.IO;
List<Mesa> mesasParaReservar = new();
List<Pedido> novosPedidos = new();
for(int i = 0; i<10; i++)
{
Mesa novaMesa = new Mesa();
novaMesa.NumeroDaMesa = i + 1;
novaMesa.estaOcupada = false;
mesasParaReservar.Add(novaMesa);
}
Menu();
void Menu()
{
Console.Clear();
Console.WriteLine("Digite 1 para reservar uma mesa\n");
Console.WriteLine("Digite 2 lançar pedidos\n");
Console.WriteLine("Digite 3 fechar conta\n");
int escolhaUsuario = int.Parse(Console.ReadLine()!);
switch (escolhaUsuario)
{
case 1: ReservarMesa();
break;
case 2: FazerPedidos();
break;
case 3: FecharConta();
break;
}
}
void ReservarMesa()
{
Console.Clear();
Console.Write("Digite o número da mesa: ");
int numeroMesaDigitado = int.Parse(Console.ReadLine()!);
Mesa mesaEncontrada = null;
foreach (Mesa mesa in mesasParaReservar)
{
if (mesa.NumeroDaMesa == numeroMesaDigitado)
{
mesaEncontrada = mesa;
break;
}
}
if (mesaEncontrada != null)
{
if (mesaEncontrada.estaOcupada)
{
Console.WriteLine($"A mesa {numeroMesaDigitado} já está ocupada no momento.");
}
else
{
mesaEncontrada.estaOcupada = true;
Console.WriteLine($"A mesa {numeroMesaDigitado} foi reservada com sucesso!");
}
}
else
{
Console.WriteLine("Erro: esse número de mesa não existe.");
}
Thread.Sleep(2000);
Menu();
}
void FazerPedidos()
{
Console.Clear();
Console.WriteLine("Digite 1 para incluir um prato principal.");
Console.WriteLine("Digite 2 para incluir uma bebida.");
Console.WriteLine("Digite 3 para incluir uma sobremesa.");
int escolhaDoUsuario = int.Parse(Console.ReadLine()!);
switch (escolhaDoUsuario)
{
case 1: LancarItem("Prato Principal");
break;
case 2: LancarItem("Bebida");
break;
case 3: LancarItem("Sobremesa");
break;
}
}
void LancarItem(string categoria)
{
Console.WriteLine($"--- Lançando {categoria} ---");
Console.WriteLine("Digite o número da mesa:");
int numMesa = int.Parse(Console.ReadLine()!);
Pedido pedidoDaMesa = null;
foreach (Pedido p in novosPedidos)
{
if (p.numeroMesa == numMesa && p.EstaAberto)
{
pedidoDaMesa = p;
break;
}
}
if (pedidoDaMesa == null)
{
pedidoDaMesa = new Pedido();
pedidoDaMesa.numeroMesa = numMesa;
pedidoDaMesa.EstaAberto = true;
novosPedidos.Add(pedidoDaMesa);
}
Cardapio item = new Cardapio();
item.Categoria = categoria;
Console.WriteLine($"Digite o nome do(a) {categoria}:");
item.Nome = Console.ReadLine()!;
Console.WriteLine("Digite o preço:");
item.Preco = float.Parse(Console.ReadLine()!);
pedidoDaMesa.itensPedidos.Add(item);
Console.WriteLine($"{item.Nome} adicionado com sucesso!");
Thread.Sleep(2000);
Menu();
}
void FecharConta()
{
Console.Clear();
Console.Write("Digite o número da mesa: ");
int numMesa = int.Parse(Console.ReadLine()!);
Pedido pedidoDaMesa = null;
foreach (Pedido p in novosPedidos)
{
if (p.numeroMesa == numMesa && p.EstaAberto)
{
pedidoDaMesa = p;
break;
}
}
if(pedidoDaMesa != null)
{
Console.Clear();
Console.WriteLine("Itens consumidos\n");
foreach(Cardapio item in pedidoDaMesa.itensPedidos)
{
Console.WriteLine($"{item.Nome} ------ {item.Preco}\n");
}
Console.WriteLine("-----------------------------------------");
float total = pedidoDaMesa.SomarPedidos();
Console.WriteLine($"Total a pagar: R$ {total:F2}\n");
Console.WriteLine("Pressione qualquer tecla para volta ao menu.");
Console.ReadKey();
Menu();
}
else
{
Console.WriteLine("Mesa nao encontrada");
Console.ReadKey();
Menu();
}
}