Criei um sistema de controle de estoque com base nas aulas de C#. Porem, eu ainda nao vi como remover um intem da list de um dicionario. eu conssigo remover o item por completo, mas não consigo remover a quantidade. meu codigo roda mas não remove. obs: tentei deixar ele o mais limpo possivel para facilitar na hora de ler. Pesquisei, porem a unica solução que eu achei seriam varios if e elses o que deixaria meu codigo pesado. Segue abaixo o codigo:
//CONTROLE DE ESTOQUE
Dictionary<string, List> produtosRegistrados = new Dictionary<string, List>();
Console.WriteLine("Controle de estoque:");
ExibirMenu();
void ExibirMenu()
{
Console.Clear();
Console.WriteLine("\nDigite 01 para: Registrar produto.");
Console.WriteLine("Digite 02 para: Produtos registrados.");
Console.WriteLine("Digite 03 para: Quantidade em estoque.");
Console.WriteLine("Digite 04 para: Remover.");
Console.WriteLine("Digite 05 para: Sair.");
Console.Write("\nDigite a sua opção: ");
int opcaoEscolhida = int.Parse(Console.ReadLine()!);
switch (opcaoEscolhida)
{
case 1: RegistrarProduto();
break;
case 2: ProdutosRegistrados();
break;
case 3: QuantidadeEmEstoque();
break;
case 4: Remover();
break;
case 5: Console.WriteLine("Sessão encerrada!");
break;
default: Console.WriteLine("Opção invalida.");
ExibirMenu();
break;
}
}
void VoltarAoMenu()
{
Console.WriteLine("Digite uma tecla para voltar ao menur inicial.");
Console.ReadKey();
Console.Clear();
ExibirMenu();
}
void RegistrarProduto()
{
string nomeDoProduto;
int quantidade, voltarAoMenu;
do
{
Console.Clear();
Console.Write("Nome do produto: ");
nomeDoProduto = Console.ReadLine()!;
Console.Write("Quantidade: ");
quantidade = int.Parse(Console.ReadLine()!);
if (produtosRegistrados.ContainsKey(nomeDoProduto))
{
produtosRegistrados[nomeDoProduto].Add(quantidade);
}
else
{
produtosRegistrados.Add(nomeDoProduto, new List<int> { quantidade });
}
Console.Write("Deseja continuar?\n1 - Sim | 0 - Não:\n");
voltarAoMenu = int.Parse(Console.ReadLine()!);
} while(voltarAoMenu != 0);
ExibirMenu();
}
void ProdutosRegistrados()
{
Console.Clear();
foreach (string produto in produtosRegistrados.Keys)
{
Console.WriteLine($"Produtos registrados:\n{produto}");
}
VoltarAoMenu();
}
void QuantidadeEmEstoque()
{
Console.Clear();
Console.Write("Nome do Produto: ");
string nomeDoProduto = Console.ReadLine()!;
if (produtosRegistrados.ContainsKey(nomeDoProduto))
{
List<int> estoque = produtosRegistrados[nomeDoProduto];
Console.WriteLine($"\nO produto {nomeDoProduto} tem {estoque.Sum()} unidades.");
VoltarAoMenu();
}else
{
Console.WriteLine($"\nO produto {nomeDoProduto} não foi encontrado!");
VoltarAoMenu();
}
}
void Remover()
{
Console.Clear();
Console.Write("O que deseja remover:\n1 - Produto | 2 - Quantidade:\n");
int opcaoEscolhida = int.Parse(Console.ReadLine()!);
Console.Clear();
Console.Write("Qual produto deseja remover: ");
string nomeDoProduto = Console.ReadLine()!;
if (!produtosRegistrados.ContainsKey(nomeDoProduto))
{
Console.WriteLine("Produto não encontrado.");
VoltarAoMenu();
return;
}
List<int> estoque = produtosRegistrados[nomeDoProduto];
switch (opcaoEscolhida)
{
case 1:
produtosRegistrados.Remove(nomeDoProduto);
Console.WriteLine($"O produto '{nomeDoProduto}' foi removido com sucesso!");
break;
case 2:
Console.Write("\nQuantas unidades deseja remover: ");
int quantidade = int.Parse(Console.ReadLine()!);
if (estoque.Contains(quantidade))
{
estoque.Remove(quantidade);
if (estoque.Count == 0)
produtosRegistrados.Remove(nomeDoProduto);
Console.WriteLine($"Foi removido {quantidade} do estoque com sucesso!");
}
else
{
Console.WriteLine($"O estoque não possui {quantidade} unidades desse produto.");
}
break;
default:
Console.WriteLine("Opção inválida.");
break;
}
VoltarAoMenu();
}