Oi, tudo bem? Eu parei num bug na aula 4 do módulo 4 de relacionando o gênero. O bug está no get musicas.
O erro: .
Esse é o meu código: Musica:
using Screen.Shared.Modelos.Modelos;
namespace ScreenSound.Modelos;
public class Musica
{
public Musica()
{
}
public Musica(string nome)
{
Nome = nome;
}
public string Nome { get; set; }
public int Id { get; set; }
public int? AnoLancamento { get; set; }
public int? ArtistaId { get; set; }
public virtual Artista? Artista { get; set; }
public virtual ICollection<Genero> Generos { get; set; }
public void ExibirFichaTecnica()
{
Console.WriteLine($"Nome: {Nome}");
}
public override string ToString()
{
return @$"Id: {Id}
Nome: {Nome}";
}
}
MusicaExtensions:
using Microsoft.AspNetCore.Mvc;
using Screen.Shared.Modelos.Modelos;
using ScreenSound.API.Requests;
using ScreenSound.API.Response;
using ScreenSound.Banco;
using ScreenSound.Modelos;
namespace ScreenSound.API.Endpoints;
public static class MusicasExtensions
{
public static void AddEndPointsMusicas(this WebApplication app)
{
app.MapGet("/Musicas", ([FromServices] DAL<Musica> dal) =>
{
var musicaList = dal.Listar();
if (musicaList is null)
{
return Results.NotFound();
}
var musicaListResponse = EntityListToResponseList(musicaList);
return Results.Ok(musicaListResponse);
});
app.MapGet("/Musicas/{nome}", ([FromServices] DAL<Musica> dal, string nome) =>
{
var musica = dal.RecuperarPor(a => a.Nome.ToUpper().Equals(nome.ToUpper()));
if (musica is null)
{
return Results.NotFound();
}
return Results.Ok(EntityToResponse(musica));
});
app.MapPost("/Musicas", ([FromServices] DAL<Musica> dal, [FromBody] MusicaRequest musicaRequest) =>
{
var musica = new Musica(musicaRequest.nome)
{
ArtistaId = musicaRequest.ArtistaId,
AnoLancamento = musicaRequest.anoLancamento,
Generos = musicaRequest.Generos is not null ? GeneroRequestConverter(musicaRequest.Generos) : new List<Genero>()
};
dal.Adicionar(musica);
return Results.Ok();
});
app.MapDelete("/Musicas/{id}", ([FromServices] DAL<Musica> dal, int id) => {
var musica = dal.RecuperarPor(a => a.Id == id);
if (musica is null)
{
return Results.NotFound();
}
dal.Deletar(musica);
return Results.NoContent();
});
app.MapPut("/Musicas", ([FromServices] DAL<Musica> dal, [FromBody] MusicaRequestEdit musicaRequestEdit) => {
var musicaAAtualizar = dal.RecuperarPor(a => a.Id == musicaRequestEdit.Id);
if (musicaAAtualizar is null)
{
return Results.NotFound();
}
musicaAAtualizar.Nome = musicaRequestEdit.nome;
musicaAAtualizar.AnoLancamento = musicaRequestEdit.anoLancamento;
dal.Atualizar(musicaAAtualizar);
return Results.Ok();
});
}
private static ICollection<Genero> GeneroRequestConverter(ICollection<GeneroRequest> generos)
{
return generos.Select(a => RequestToEntity(a)).ToList();
}
private static Genero RequestToEntity(GeneroRequest genero)
{
return new Genero() { Nome = genero.Nome, Descricao = genero.Descricao };
}
private static ICollection<MusicaResponse> EntityListToResponseList(IEnumerable<Musica> musicaList)
{
return musicaList.Select(a => EntityToResponse(a)).ToList();
}
private static MusicaResponse EntityToResponse(Musica musica)
{
return new MusicaResponse(musica.Id, musica.Nome!, musica.Artista!.Id, musica.Artista.Nome);
}
}