Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida projeto final

Olá boa tarde, fui fazer o ultimo mão na massa e parecia que estava tudo certo, mas fui executar e a opção 5 que invoca o "MenuMostrarPorAnoLancamento" não esta funcionando, eu clico e nada acontecem, os cmd só pisca e volta pro menu principal

using ScreenSound.Banco;
using ScreenSound.Modelos;
using System;

namespace ScreenSound.Menus
{
    internal class MenuMostrarPorAnoDeLancamento : Menu
    {
        public override void Executar1(DAL<Musica> musicaDAL)
        {
            base.Executar1(musicaDAL);
            ExibirTituloDaOpcao("Exibir músicas por ano de lançamento");

            Console.WriteLine("Digite o ano para filtrar as músicas:");
            int ano = int.Parse(Console.ReadLine()!);

            var musicasPorAno = musicaDAL.ListarPorCondicao(m => m.AnoLancamento == ano);

            if (musicasPorAno.Any())
            {
                Console.WriteLine($"\nMúsicas lançadas em {ano}:");
                foreach (var musica in musicasPorAno)
                {
                    Console.WriteLine(musica);
                }
            }
            else
            {
                Console.WriteLine($"\nNão foram encontradas músicas lançadas em {ano}!");
            }

            Console.WriteLine("\nDigite uma tecla para voltar ao menu principal");
            Console.ReadKey();
            Console.Clear();
        }
    }
}

a classe menu e program ficaram assim:

using ScreenSound.Banco;
using ScreenSound.Modelos;

namespace ScreenSound.Menus;

internal class Menu
{
    public void ExibirTituloDaOpcao(string titulo)
    {
        int quantidadeDeLetras = titulo.Length;
        string asteriscos = string.Empty.PadLeft(quantidadeDeLetras, '*');
        Console.WriteLine(asteriscos);
        Console.WriteLine(titulo);
        Console.WriteLine(asteriscos + "\n");
    }
    public virtual void Executar(DAL<Artista> artistaDAL)
    {
        Console.Clear();
    }
    public virtual void Executar1(DAL<Musica> musicaDAL)
    {
        Console.Clear();
    }
}
var context = new ScreenSoundContext();
var artistaDAL = new DAL<Artista>(context);

Dictionary<int, Menu> opcoes = new();
opcoes.Add(1, new MenuRegistrarArtista());
opcoes.Add(2, new MenuRegistrarMusica());
opcoes.Add(3, new MenuMostrarArtistas());
opcoes.Add(4, new MenuMostrarMusicas());
opcoes.Add(5, new MenuMostrarPorAnoDeLancamento());
opcoes.Add(-1, new MenuSair());

void ExibirLogo()
{
    Console.WriteLine(@"

░██████╗░█████╗░██████╗░███████╗███████╗███╗░░██╗  ░██████╗░█████╗░██╗░░░██╗███╗░░██╗██████╗░
██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝████╗░██║  ██╔════╝██╔══██╗██║░░░██║████╗░██║██╔══██╗
╚█████╗░██║░░╚═╝██████╔╝█████╗░░█████╗░░██╔██╗██║  ╚█████╗░██║░░██║██║░░░██║██╔██╗██║██║░░██║
░╚═══██╗██║░░██╗██╔══██╗██╔══╝░░██╔══╝░░██║╚████║  ░╚═══██╗██║░░██║██║░░░██║██║╚████║██║░░██║
██████╔╝╚█████╔╝██║░░██║███████╗███████╗██║░╚███║  ██████╔╝╚█████╔╝╚██████╔╝██║░╚███║██████╔╝
╚═════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚══════╝╚═╝░░╚══╝  ╚═════╝░░╚════╝░░╚═════╝░╚═╝░░╚══╝╚═════╝░
");
    Console.WriteLine("Boas vindas ao Screen Sound 3.0!");
}

void ExibirOpcoesDoMenu()
{
    ExibirLogo();
    Console.WriteLine("\nDigite 1 para registrar um artista");
    Console.WriteLine("Digite 2 para registrar a música de um artista");
    Console.WriteLine("Digite 3 para mostrar todos os artistas");
    Console.WriteLine("Digite 4 para exibir todas as músicas de um artista");
    Console.WriteLine("Digite 5 para filtrar as músicas por ano");
    Console.WriteLine("Digite -1 para sair");

    Console.Write("\nDigite a sua opção: ");
    string opcaoEscolhida = Console.ReadLine()!;
    int opcaoEscolhidaNumerica = int.Parse(opcaoEscolhida);

    if (opcoes.ContainsKey(opcaoEscolhidaNumerica))
    {
        Menu menuASerExibido = opcoes[opcaoEscolhidaNumerica];
        menuASerExibido.Executar(artistaDAL);
        if (opcaoEscolhidaNumerica > 0) ExibirOpcoesDoMenu();
    } 
    else
    {
        Console.WriteLine("Opção inválida");
    }
}

ExibirOpcoesDoMenu();
2 respostas
solução!

Oii, como vai você? Espero que esteja bem!

Verifique se a instância do menu está sendo criada corretamente e se a chamada do método Executar1 está sendo feita da maneira esperada. Além disso, verifique se a classe MenuMostrarPorAnoDeLancamento está implementando corretamente o método Executar1. Dessa forma, você pode garantir que a execução do método seja feita corretamente.

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!

volto a funcionar quando eu reiniciei meu pc por algum motivo kkk, mas mt obg...