Resolução:
FichaPessoa.cs
using System.Text.Json;
namespace DesafiosCSharp03._04Desafio
{
public class FichaPessoas
{
public FichaPessoas(string nomeFicha)
{
NomeFicha = nomeFicha;
ListaPessoas = new List<Pessoa>();
}
public string NomeFicha { get; }
public List<Pessoa> ListaPessoas { get; }
public int LimitePessoas = 5;
public void AdicionarPessoa(Pessoa pessoa)
{
if (ListaPessoas.Count >= LimitePessoas)
{
Console.WriteLine($"A ficha {NomeFicha} já atingiu o limite de {LimitePessoas} pessoas.");
return;
}
if (ListaPessoas.Contains(pessoa))
{
Console.WriteLine($"Pessoa {pessoa.Nome} já está na ficha!");
return;
}
ListaPessoas.Add(pessoa);
Console.WriteLine($"{pessoa.Nome} adicionada à ficha {NomeFicha}.");
}
public void CriarArquivoJSON()
{
string json = JsonSerializer.Serialize(new
{
NomeFicha,
ListaPessoas,
LimitePessoas
});
string nomeDoArquivo = $"ficha-{NomeFicha}.json";
File.WriteAllText(nomeDoArquivo, json);
Console.WriteLine();
Console.WriteLine($"Arquivo criado com sucesso!\n" +
$"{Path.GetFullPath(nomeDoArquivo)}");
Console.WriteLine();
}
public void ConvertendoArquivoJSON(string nomeDoArquivo)
{
try
{
if (File.Exists(nomeDoArquivo))
{
// Ler conteúdo do arquivo JSON
string resposta = File.ReadAllText(nomeDoArquivo);
// Desserializar JSON para lista de Pessoa
var chamada = JsonSerializer.Deserialize<FichaJSON>(resposta)!;
Console.WriteLine($"Exibindo informações da chamada:");
foreach(var pessoa in chamada.ListaPessoas)
{
Console.WriteLine($"\nNome: {pessoa.Nome}");
Console.WriteLine($"Idade: {pessoa.Idade}");
Console.WriteLine($"Email: {pessoa.Email}");
}
}
else
{
Console.WriteLine($"O arquivo {nomeDoArquivo} não existe.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Temos um erro: {ex.Message}");
}
}
public void BuscarPorIdade(string nomeDoArquivo)
{
try
{
if (File.Exists(nomeDoArquivo))
{
// Ler conteúdo do arquivo JSON
string resposta = File.ReadAllText(nomeDoArquivo);
// Desserializar JSON para lista de Pessoa
var chamada = JsonSerializer.Deserialize<FichaJSON>(resposta)!;
Console.Write($"\nInsira uma idade: ");
int buscaIdade; int.TryParse(Console.ReadLine()!, out buscaIdade);
Console.Clear();
var pessoasComIdade = chamada.ListaPessoas
.Where(p => p.Idade == buscaIdade)
.OrderBy(p => p.Nome)
.ToList();
if (pessoasComIdade.Any())
{
// Exibir informações das pessoas com a idade especificada
Console.WriteLine($"\nPessoas com {buscaIdade} anos:");
foreach (Pessoa pessoa in pessoasComIdade)
{
Console.WriteLine($"\nNome: {pessoa.Nome}");
Console.WriteLine($"Idade: {pessoa.Idade}");
Console.WriteLine($"Email: {pessoa.Email}");
}
}
else
{
Console.WriteLine($"Nenhuma pessoa encontrada com {buscaIdade} anos.");
}
}
else
{
Console.WriteLine($"O arquivo {nomeDoArquivo} não existe.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Temos um erro: {ex.Message}");
}
}
}
}
FichaJSON.cs
namespace DesafiosCSharp03._04Desafio
{
public class FichaJSON
{
public string NomeFicha { get; set; }
public List<Pessoa> ListaPessoas { get; set; }
public int LimitePessoas { get; set; }
}
}