| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using Application.Abstractions.Data;
- using Application.Abstractions.Messaging;
- using Microsoft.EntityFrameworkCore;
- using SharedKernel.Results;
- namespace Application.Features.Admin.Store.Game.Get;
- public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Result<Response>>
- {
- public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
- {
- var game = await db.Game
- .AsNoTracking()
- .Where(c => c.ID == request.ID)
- .Select(c => new
- {
- c.ID,
- c.Code,
- c.KorName,
- c.EngName,
- c.Publisher,
- c.Thumbnail,
- c.BigImage,
- c.Description,
- c.CommissionRate,
- c.Link,
- c.IsActive,
- c.Order,
- c.CreatedAt,
- c.UpdatedAt,
- c.TrailerUrl,
- c.MinSpec,
- c.RecommendedSpec,
- c.ReleaseDate
- })
- .FirstOrDefaultAsync(ct);
- if (game is null)
- {
- return Result.Failure<Response>(Error.NotFound("Game.NotFound", "게임을 찾을 수 없습니다."));
- }
- var genreIds = await db.GameGenreMap.AsNoTracking().Where(m => m.GameID == game.ID).Select(m => m.GameGenreID).ToListAsync(ct);
- var categoryIds = await db.GameCategoryMap.AsNoTracking().Where(m => m.GameID == game.ID).Select(m => m.GameCategoryID).ToListAsync(ct);
- var images = await db.GameImage.AsNoTracking().Where(i => i.GameID == game.ID && !i.IsDisabled).OrderBy(i => i.Order).ThenBy(i => i.ID).Select(i => new Response.ImageRow(i.ID, i.Url)).ToListAsync(ct);
- var languages = await db.GameLanguageSupport.AsNoTracking().Where(s => s.GameID == game.ID).Select(s => new Response.LanguageSupportRow(s.GameLanguageID, s.Interface, s.FullAudio, s.Subtitles)).ToListAsync(ct);
- return Result.Success(new Response(
- game.ID,
- game.Code,
- game.KorName,
- game.EngName,
- game.Publisher,
- game.Thumbnail,
- game.BigImage,
- game.Description,
- game.CommissionRate,
- game.Link,
- game.IsActive,
- game.Order,
- game.CreatedAt,
- game.UpdatedAt,
- game.TrailerUrl,
- game.MinSpec,
- game.RecommendedSpec,
- game.ReleaseDate,
- genreIds,
- categoryIds,
- images,
- languages
- ));
- }
- }
|