Exemplo n.º 1
0
        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));
        }