public async Task <ICollection <ActivityProfileDocument> > Handle(GetActivityProfilesQuery request, CancellationToken cancellationToken) { var activityHash = request.ActivityId.ComputeHash(); var query = _context.ActivityProfiles.Where(x => x.Activity.Hash == activityHash); if (request.Since.HasValue) { query = query.Where(x => x.Document.LastModified >= request.Since); } query = query.OrderByDescending(x => x.Document.LastModified); return(_mapper.Map <ICollection <ActivityProfileDocument> >(await query.ToListAsync(cancellationToken))); }
public async Task <ActionResult <string[]> > GetProfiles( [BindRequired, FromQuery] Iri activityId, [FromQuery] DateTimeOffset?since = null, CancellationToken cancelToken = default) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var profiles = await _mediator.Send(GetActivityProfilesQuery.Create(activityId, since), cancelToken); if (profiles == null) { return(Ok(Array.Empty <string>())); } IEnumerable <string> ids = profiles.Select(x => x.ProfileId); string lastModified = profiles.OrderByDescending(x => x.Document.LastModified) .FirstOrDefault()?.Document.LastModified?.ToString("o"); Response.Headers.Add("Last-Modified", lastModified); return(Ok(ids)); }