Add detail page and fetch game detail
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user