using Bit.Core.Models.Data; using Bit.Infrastructure.EntityFramework.Models; namespace Bit.Infrastructure.EntityFramework.Repositories.Queries; public class EventReadPageByOrganizationIdServiceAccountIdQuery : IQuery { private readonly Guid _organizationId; private readonly Guid _serviceAccountId; private readonly DateTime _startDate; private readonly DateTime _endDate; private readonly DateTime? _beforeDate; private readonly PageOptions _pageOptions; public EventReadPageByOrganizationIdServiceAccountIdQuery(Guid organizationId, Guid serviceAccountId, DateTime startDate, DateTime endDate, DateTime? beforeDate, PageOptions pageOptions) { _organizationId = organizationId; _serviceAccountId = serviceAccountId; _startDate = startDate; _endDate = endDate; _beforeDate = beforeDate; _pageOptions = pageOptions; } public IQueryable Run(DatabaseContext dbContext) { var q = from e in dbContext.Events where e.Date >= _startDate && (_beforeDate != null || e.Date <= _endDate) && (_beforeDate == null || e.Date < _beforeDate.Value) && e.OrganizationId == _organizationId && e.ServiceAccountId == _serviceAccountId orderby e.Date descending select e; return q.Skip(0).Take(_pageOptions.PageSize); } }