Handler.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. using Application.Abstractions.Data;
  2. using Application.Abstractions.Messaging;
  3. using Microsoft.EntityFrameworkCore;
  4. using SharedKernel.Results;
  5. namespace Application.Features.Admin.Store.Game.Options;
  6. public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Result<Response>>
  7. {
  8. public async Task<Result<Response>> Handle(Query request, CancellationToken ct)
  9. {
  10. var genres = await db.GameGenre.AsNoTracking()
  11. .Where(g => g.IsActive)
  12. .OrderBy(g => g.Order).ThenBy(g => g.KorName)
  13. .Select(g => new OptionItem(g.ID, g.KorName))
  14. .ToListAsync(ct);
  15. var categories = await db.GameCategory.AsNoTracking()
  16. .Where(c => c.IsActive)
  17. .OrderBy(c => c.Order).ThenBy(c => c.KorName)
  18. .Select(c => new OptionItem(c.ID, c.KorName))
  19. .ToListAsync(ct);
  20. var languages = await db.GameLanguage.AsNoTracking()
  21. .Where(l => l.IsActive)
  22. .OrderBy(l => l.Order).ThenBy(l => l.KorName)
  23. .Select(l => new OptionItem(l.ID, l.KorName))
  24. .ToListAsync(ct);
  25. return new Response(genres, categories, languages);
  26. }
  27. }