Handler.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. using Application.Abstractions.Messaging;
  2. using Application.Abstractions.Data;
  3. using SharedKernel.Results;
  4. using Microsoft.EntityFrameworkCore;
  5. namespace Application.Features.Admin.Banner.Item.Get;
  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 item = await db.BannerItem.AsNoTracking().FirstOrDefaultAsync(x => x.ID == request.ID, ct);
  11. if (item is null)
  12. {
  13. return Result.Failure<Response>(Error.NotFound("Banner.NotFound", "배너를 찾을 수 없습니다."));
  14. }
  15. return Result.Success(new Response(
  16. item.ID,
  17. item.PositionID,
  18. item.Subject,
  19. item.DesktopImage,
  20. item.MobileImage,
  21. item.Link,
  22. item.LinkTarget,
  23. item.Order,
  24. item.IsActive,
  25. item.StartAt,
  26. item.EndAt,
  27. item.UpdatedAt,
  28. item.CreatedAt
  29. ));
  30. }
  31. }