Add detail page and fetch game detail

This commit is contained in:
2025-05-02 22:04:42 +02:00
parent f3c9e1d9da
commit 9fdd25172c
29 changed files with 961 additions and 189 deletions

View File

@@ -14,14 +14,15 @@ public class GameWriteService(GameIdeasContext context, IMapper mapper) : IGameW
{
var gameToCreate = mapper.Map<Game>(gameDto);
await HandlePublisherCreation(gameDto.Publisher);
await HandleDeveloperCreation(gameDto.Developer);
await context.Games.AddAsync(gameToCreate);
await context.SaveChangesAsync();
await HandlePlatformsCreation(gameDto.Platforms, gameToCreate.Id);
await HandlePropertiesCreation(gameDto.Properties, gameToCreate.Id);
await HandleTagsCreation(gameDto.Tags, gameToCreate.Id);
await HandlePublishersCreation(gameDto.Publishers, gameToCreate.Id);
await HandleDevelopersCreation(gameDto.Developers, gameToCreate.Id);
await context.SaveChangesAsync();
@@ -37,11 +38,12 @@ public class GameWriteService(GameIdeasContext context, IMapper mapper) : IGameW
var gameToUpdate = mapper.Map<Game>(gameDto);
await HandlePublisherCreation(gameDto.Publisher);
await HandleDeveloperCreation(gameDto.Developer);
await HandlePlatformsCreation(gameDto.Platforms, gameToUpdate.Id);
await HandlePropertiesCreation(gameDto.Properties, gameToUpdate.Id);
await HandleTagsCreation(gameDto.Tags, gameToUpdate.Id);
await HandlePublishersCreation(gameDto.Publishers, gameToUpdate.Id);
await HandleDevelopersCreation(gameDto.Developers, gameToUpdate.Id);
context.Games.Update(gameToUpdate);
await context.SaveChangesAsync();
@@ -107,35 +109,23 @@ public class GameWriteService(GameIdeasContext context, IMapper mapper) : IGameW
}
}
private async Task HandlePublishersCreation(IEnumerable<PublisherDto>? categoriesToCreate, int gameId)
private async Task HandlePublisherCreation(PublisherDto? categoriesToCreate)
{
if (categoriesToCreate != null)
{
var gps = mapper.Map<ICollection<GamePublisher>>(categoriesToCreate);
foreach (var gp in gps)
{
gp.GameId = gameId;
}
context.Publishers.AttachRange(gps.Select(gp => gp.Publisher));
await context.GamePublishers.AddRangeAsync(gps);
var pub = mapper.Map<Publisher>(categoriesToCreate);
context.Publishers.Attach(pub);
await context.Publishers.AddAsync(pub);
}
}
private async Task HandleDevelopersCreation(IEnumerable<DeveloperDto>? categoriesToCreate, int gameId)
private async Task HandleDeveloperCreation(DeveloperDto? categoriesToCreate)
{
if (categoriesToCreate != null)
{
var gds = mapper.Map<ICollection<GameDeveloper>>(categoriesToCreate);
foreach (var gd in gds)
{
gd.GameId = gameId;
}
context.Developers.AttachRange(gds.Select(gd => gd.Developer));
await context.GameDevelopers.AddRangeAsync(gds);
var dev = mapper.Map<Developer>(categoriesToCreate);
context.Developers.Attach(dev);
await context.Developers.AddAsync(dev);
}
}
}