Olá! Seguindo meus estudos de .NET com C# aqui na Alura, me deparei com um impasse que não estou conseguindo resolver. Estou desenvolvendo um pequeno programa de leitura de estoque, cadastro e consulta de produtos. Porém, encontrei uma dificuldade em acessar a List da Classe Produtos no método CadastrarProduto() e ConsultarProduto(). Eu criei um dicionário no Program.cs seguindo o projeto das aulas como modelo e acabei relacionando o Dicionário nos métodos. Alguém pode me ajudar?
Segue código:
/////////Program.cs
using System.Collections.Generic;
using classe_produto.Produtos;
Dictionary<string, Produtos> produtosSistema = new();
void CadastrarProduto()
{
Console.Clear();
Console.WriteLine("°* CADASTRAR PRODUTO *°");
Console.Write("Digite o produto que quer cadastrar: ");
string nomeProduto = Console.ReadLine()!;
Console.Write("Digite a marca do produto: ");
string marcaProduto = Console.ReadLine()!;
Console.Write("Digite o preço do produto: ");
double precoProduto = double.Parse(Console.ReadLine()!);
Console.Write("Digite a quantidade inicial no estoque: ");
int quantidadeInicial = int.Parse(Console.ReadLine()!);
if (produtosSistema.ContainsKey(nomeProduto))
{
Console.WriteLine($"Erro! {nomeProduto} já cadastrado.");
Thread.Sleep(4000);
CadastrarProduto();
}
else
{
Produtos produto = new Produtos(nomeProduto, marcaProduto, precoProduto, quantidadeInicial);
produtosSistema.Add(nomeProduto, produto);
Console.WriteLine($"O produto {nomeProduto} foi cadastrado com sucesso!");
}
Console.Write("Digite uma tecla para voltar ao Menu: ");
Console.ReadKey();
Console.Clear();
SistemaMenu();
}
void ConsultarProduto()
{
Console.Clear();
Console.WriteLine("°* CONSULTAR PRODUTO *°");
Console.Write("Digite o nome do produto: ");
string nomeProduto = Console.ReadLine()!;
if (produtosSistema.ContainsKey(nomeProduto))
{
Produtos produtos = produtosSistema[nomeProduto];
produtos.ExibirProdutos(produtos.Det);
Console.Write("Digite uma tecla para voltar ao Menu: ");
Console.ReadKey();
Console.Clear();
}
else
{
Console.WriteLine("Produto não encontrado na lista.");
Console.Write("Digite uma tecla para voltar ao Menu: ");
Console.ReadKey();
Console.Clear();
}
SistemaMenu();
}
//////////classe Produtos
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace classe_produto.Produtos;
class Produtos
{
public List<Produtos> produtos = new List<Produtos>();
public Produtos(string nome, string marca, double preco, int estoque)
{
Nome = nome;
Marca = marca;
Preco = preco;
Estoque = estoque;
}
private double preco;
private int estoque;
private int quantidadeEstoque;
public string Nome { get; set; }
public string Marca { get; set; }
public double Preco
{
get => preco;
set
{
if (value < 0)
{
throw new ArgumentException("O preço deve ser positivo");
}
preco = value;
}
}
public int Estoque
{
get => estoque;
set
{
if (value < 0)
{
throw new ArgumentException("Não é possível registrar negativo");
}
estoque = value;
}
}
public string DetalhesInfos => $"Detalhes do produto: {Nome} | {Marca} | {Preco} | {Estoque}";
public void AdicionarProduto(Produtos produto)
{
produtos.Add(produto);
}
public void ExibirProdutos(string nomeProduto)
{
Console.WriteLine("Produtos em estoque: \n");
foreach (var produto in produtos)
{
Console.WriteLine(produto.DetalhesInfos);
}
}
public void AdicionarQuantidade(int quantidade)
{
quantidadeEstoque += quantidade;
}
}