Handler.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using Microsoft.EntityFrameworkCore;
  4. namespace Application.Features.Admin.Faq.Item.Get
  5. {
  6. public sealed class Handler(IAppDbContext db) : IQueryHandler<Query, Response?>
  7. {
  8. public async Task<Response?> Handle(Query request, CancellationToken ct)
  9. {
  10. var item = await db.FaqItem
  11. .AsNoTracking()
  12. .Include(i => i.FaqCategory)
  13. .Where(i => i.ID == request.ID)
  14. .Select(i => new
  15. {
  16. i.ID,
  17. i.CategoryID,
  18. CategoryCode = i.FaqCategory.Code,
  19. CategorySubject = i.FaqCategory.Subject,
  20. i.Question,
  21. i.Answer,
  22. i.Order,
  23. i.IsActive,
  24. i.UpdatedAt,
  25. i.CreatedAt
  26. })
  27. .FirstOrDefaultAsync(ct);
  28. if (item is null)
  29. {
  30. return null;
  31. }
  32. return new Response(
  33. item.ID,
  34. item.CategoryID,
  35. item.CategoryCode,
  36. item.CategorySubject,
  37. item.Question,
  38. item.Answer,
  39. item.Order,
  40. item.IsActive,
  41. item.UpdatedAt,
  42. item.CreatedAt
  43. );
  44. }
  45. }
  46. }