-
Notifications
You must be signed in to change notification settings - Fork 306
Expand file tree
/
Copy pathAuditTrailsWithPaginationQuery.cs
More file actions
46 lines (38 loc) · 1.84 KB
/
AuditTrailsWithPaginationQuery.cs
File metadata and controls
46 lines (38 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using CleanArchitecture.Blazor.Application.Features.AuditTrails.Caching;
using CleanArchitecture.Blazor.Application.Features.AuditTrails.DTOs;
using CleanArchitecture.Blazor.Application.Features.AuditTrails.Specifications;
namespace CleanArchitecture.Blazor.Application.Features.AuditTrails.Queries.PaginationQuery;
public class AuditTrailsWithPaginationQuery : AuditTrailAdvancedFilter, ICacheableRequest<PaginatedData<AuditTrailDto>>
{
public AuditTrailAdvancedSpecification Specification => new(this);
public string CacheKey => AuditTrailsCacheKey.GetPaginationCacheKey($"{this}");
public IEnumerable<string>? Tags => AuditTrailsCacheKey.Tags;
public override string ToString()
{
return
$"Listview:{ListView}-{CurrentUser?.UserId},AuditType:{AuditType},Search:{Keyword},Sort:{SortDirection},OrderBy:{OrderBy},{PageNumber},{PageSize}";
}
}
public class AuditTrailsQueryHandler : IRequestHandler<AuditTrailsWithPaginationQuery, PaginatedData<AuditTrailDto>>
{
private readonly IApplicationDbContext _context;
private readonly IMapper _mapper;
public AuditTrailsQueryHandler(
IApplicationDbContext context,
IMapper mapper
)
{
_context = context;
_mapper = mapper;
}
public async Task<PaginatedData<AuditTrailDto>> Handle(AuditTrailsWithPaginationQuery request,
CancellationToken cancellationToken)
{
var data = await _context.AuditTrails.OrderBy($"{request.OrderBy} {request.SortDirection}")
.ProjectToPaginatedDataAsync<AuditTrail, AuditTrailDto>(request.Specification, request.PageNumber,
request.PageSize, _mapper.ConfigurationProvider, cancellationToken);
return data;
}
}