public async Task <Registration> FindRegistrationAsync( RegistrationFilter filter, RegistrationRetrievalOptions options, CancellationToken cancellationToken) { options ??= RegistrationRetrievalOptions.Default; var query = _context.Registrations .WithOptions(options) .AddFilter(filter); if (filter.AccessibleOnly) { query = await _registrationAccessControlService .AddAccessFilterAsync(query, cancellationToken); } return(await query.FirstOrDefaultAsync(cancellationToken)); }
public async Task <Paging <Registration> > ListRegistrationsAsync( RegistrationListRequest request, RegistrationRetrievalOptions options, CancellationToken cancellationToken) { options ??= RegistrationRetrievalOptions.Default; var query = _context.Registrations .WithOptions(options) .AddFilter(request.Filter) .AddOrder(request.OrderBy, request.Descending); if (request.Filter.AccessibleOnly) { query = await _registrationAccessControlService .AddAccessFilterAsync(query, cancellationToken); } return(await Paging <Registration> .CreateAsync(query, request, cancellationToken)); }
public async Task <Registration> GetRegistrationByIdAsync(int id, RegistrationRetrievalOptions options, CancellationToken cancellationToken) { options ??= RegistrationRetrievalOptions.Default; var registration = await _context.Registrations .AsNoTracking() .WithOptions(options) .Where(r => r.RegistrationId == id) .FirstOrDefaultAsync(cancellationToken); if (registration == null) { throw new NotFoundException($"Registration {id} not found."); } await _registrationAccessControlService .CheckRegistrationReadAccessAsync(registration); return(registration); }
public static IQueryable <Registration> WithOptions( this IQueryable <Registration> query, RegistrationRetrievalOptions options) { if (options == null) { return(query); } if (options.IncludeUser) { query = query.Include(r => r.User); } if (options.IncludeEventInfo) { query = query.Include(r => r.EventInfo); } if (options.IncludeOrders) { query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines); } if (options.IncludeProducts) { query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines) .ThenInclude(l => l.Product); query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines) .ThenInclude(l => l.ProductVariant); } return(query); }
public async Task <Registration> GetRegistrationByIdAsync(int id, RegistrationRetrievalOptions options, CancellationToken cancellationToken) { options ??= RegistrationRetrievalOptions.Default; var registration = await _context.Registrations .WithOptions(options) .FirstOrDefaultAsync(r => r.RegistrationId == id, cancellationToken) ?? throw new NotFoundException($"Registration {id} not found."); if (options.ForUpdate) { await _registrationAccessControlService .CheckRegistrationUpdateAccessAsync(registration, cancellationToken); } else { await _registrationAccessControlService .CheckRegistrationReadAccessAsync(registration, cancellationToken); } return(registration); }
public static IQueryable <Registration> WithOptions( this IQueryable <Registration> query, RegistrationRetrievalOptions options) { if (options == null) { return(query); } if (!options.ForUpdate) { query = query.AsNoTracking(); } if (options.LoadUser) { query = query.Include(r => r.User); } if (options.LoadEventInfo) { query = query.Include(r => r.EventInfo); } if (options.LoadEventOrganization) { query = query.Include(r => r.EventInfo) .ThenInclude(e => e.Organization); } if (options.LoadEventOrganizer) { query = query.Include(r => r.EventInfo) .ThenInclude(e => e.OrganizerUser); } if (options.LoadOrders) { query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines); } if (options.LoadProducts) { query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines) .ThenInclude(l => l.Product); query = query.Include(r => r.Orders) .ThenInclude(o => o.OrderLines) .ThenInclude(l => l.ProductVariant); } if (options.LoadCertificate) { query = query.Include(r => r.Certificate) .ThenInclude(c => c.IssuingOrganization); query = query.Include(r => r.Certificate) .ThenInclude(c => c.IssuingUser); } return(query); }