Handler.cs 1.3 KB

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