using FrameworkDAL.DTO.AuditQuery; using FrameworkDAL.Query.AuditQuery; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.AuditQuery { public sealed class AuditQueryDAL : IAuditQueryDAL { private readonly IQueryExecutor _qe; public AuditQueryDAL(IQueryExecutor qe) => _qe = qe; public async Task> GetByEntityAsync( int entityType, int entityId, int pageOffset, int pageSize, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.GET_BY_ENTITY, new { TenantId = login.ClientId, EntityType = entityType, EntityId = entityId, PageOffset = pageOffset, PageSize = pageSize }, cancellationToken: ct).ConfigureAwait(false)).ToList(); public async Task> GetByEntityArchiveAsync( int entityType, int entityId, int pageOffset, int pageSize, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.GET_BY_ENTITY_ARCHIVE, new { TenantId = login.ClientId, EntityType = entityType, EntityId = entityId, PageOffset = pageOffset, PageSize = pageSize }, cancellationToken: ct).ConfigureAwait(false)).ToList(); public async Task> GetByUserAsync( AuditSearchCriteriaDTO criteria, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.GET_BY_USER, new { TenantId = login.ClientId, criteria.UserId, criteria.DateFrom, criteria.DateTo, PageOffset = criteria.PageOffset, PageSize = criteria.PageSize }, cancellationToken: ct).ConfigureAwait(false)).ToList(); public async Task> GetByUserArchiveAsync( AuditSearchCriteriaDTO criteria, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.GET_BY_USER_ARCHIVE, new { TenantId = login.ClientId, criteria.UserId, criteria.DateFrom, criteria.DateTo, PageOffset = criteria.PageOffset, PageSize = criteria.PageSize }, cancellationToken: ct).ConfigureAwait(false)).ToList(); public async Task> SearchAsync( AuditSearchCriteriaDTO criteria, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.SEARCH, BuildSearchParams(criteria, login), cancellationToken: ct).ConfigureAwait(false)).ToList(); public async Task> SearchArchiveAsync( AuditSearchCriteriaDTO criteria, LoginDTO login, CancellationToken ct = default) => (await _qe.QueryAsync( login, AuditQueryQB.SEARCH_ARCHIVE, BuildSearchParams(criteria, login), cancellationToken: ct).ConfigureAwait(false)).ToList(); private static object BuildSearchParams(AuditSearchCriteriaDTO c, LoginDTO login) => new { TenantId = login.ClientId, c.UserId, c.EntityType, c.EntityId, c.EventTypeId, c.DateFrom, c.DateTo, c.FieldName, PageOffset = c.PageOffset, PageSize = c.PageSize }; } }