class Podcast
{
public Podcast(Host host, string nome)
{
Host = host;
Nome = nome;
}
private List<Episodio> episodios = new List<Episodio>();
public Host Host { get; }
public string Nome { get; }
public int TotalEpisodios => episodios.Count();
public void AdicionarEpisodio(Episodio episodio)
{
episodios.Add(episodio);
}
public void ExibirDetalhes()
{
Console.WriteLine($"Nome: {Nome}, Host: {Host.Nome}\n");
Console.WriteLine($"Lista de episódios:");
foreach (var episodio in episodios.OrderBy(x => x.Ordem))
{
Console.WriteLine($"{episodio.Resumo}");
}
Console.WriteLine($"Total de episódios: {TotalEpisodios}");
}
}
class Host
{
public Host(string nome)
{
Nome = nome;
}
public string Nome { get; }
}
class Episodio
{
public Episodio(int duracao, int ordem, string titulo)
{
Duracao = duracao;
Ordem = ordem;
Titulo = titulo;
}
private List<Convidado> convidados { get; } = new List<Convidado>();
public int Duracao { get; }
public int Ordem { get; }
public string Titulo { get; }
public string Resumo => $"Número: {Ordem}, Título: {Titulo}, Duração: {Duracao}, Convidados: {string.Join(", ", convidados.Where(x => x.Confirmado).Select(x => x.Nome))}";
public void AdicionarConvidados(Convidado convidado)
{
convidados.Add(convidado);
}
}
class Convidado
{
public Convidado(string nome, bool confirmado)
{
Nome = nome;
Confirmado = confirmado;
}
public string Nome { get; }
public bool Confirmado { get; }
}
var episodio = new Episodio(60, 1, "Teste");
var episodio2 = new Episodio(60, 2, "Teste 2");
var episodio3 = new Episodio(60, 3, "Teste 3");
var convidado = new Convidado("Eduardo", true);
var convidado2 = new Convidado("Joao", false);
var convidado3 = new Convidado("Maria", true);
var convidado4 = new Convidado("Lucas", false);
var convidado5 = new Convidado("Jose", true);
episodio.AdicionarConvidados(convidado);
episodio2.AdicionarConvidados(convidado2);
episodio3.AdicionarConvidados(convidado3);
episodio.AdicionarConvidados(convidado4);
episodio2.AdicionarConvidados(convidado5);
var host = new Host("Marcelo");
var podcast = new Podcast(host, "CityCast");
podcast.AdicionarEpisodio(episodio);
podcast.AdicionarEpisodio(episodio3);
podcast.AdicionarEpisodio(episodio2);
podcast.ExibirDetalhes();