public async Task <IActionResult> GetStatements([FromQuery] Queries.PagedStatementsQuery parameters, CancellationToken cancellationToken = default) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } ResultFormat format = parameters.Format ?? ResultFormat.Exact; if (!StringValues.IsNullOrEmpty(Request.Headers[HeaderNames.AcceptLanguage])) { format = ResultFormat.Canonical; } bool attachments = parameters.Attachments.GetValueOrDefault(); if (parameters.StatementId.HasValue || parameters.VoidedStatementId.HasValue) { IRequest <StatementEntity> requestQuery = null; if (parameters.StatementId.HasValue) { Guid statementId = parameters.StatementId.Value; requestQuery = Queries.StatementQuery.Create(statementId, attachments, format); } else if (parameters.VoidedStatementId.HasValue) { Guid voidedStatementId = parameters.VoidedStatementId.Value; requestQuery = Queries.VoidedStatemetQuery.Create(voidedStatementId, attachments, format); } StatementEntity statementEntity = await _mediator.Send(requestQuery, cancellationToken); if (statementEntity == null) { return(NotFound()); } var statement = _mapper.Map <Statement>(statementEntity); return(new StatementActionResult(statement, format)); } PagedStatementsResult pagedResult = await _mediator.Send(parameters, cancellationToken); var mappedStatements = _mapper.Map <IEnumerable <Statement> >(pagedResult.Statements); StatementsResult result = new StatementsResult() { Statements = new StatementCollection(mappedStatements) }; // Generate more url if (!string.IsNullOrEmpty(pagedResult.MoreToken)) { result.More = new Uri($"/xapi/statements?more={pagedResult.MoreToken}", UriKind.Relative); } return(new StatementsActionResult(result, format, attachments)); }
public async Task <IActionResult> GetStatements([FromQuery] Queries.PagedStatementsQuery parameters) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } ResultFormat format = parameters.Format ?? ResultFormat.Exact; if (parameters.StatementId.HasValue || parameters.VoidedStatementId.HasValue) { bool attachments = parameters.Attachments.GetValueOrDefault(); IRequest <Statement> requestQuery = null; if (parameters.StatementId.HasValue) { Guid statementId = parameters.StatementId.Value; requestQuery = Queries.StatementQuery.Create(statementId, attachments, format); } else if (parameters.VoidedStatementId.HasValue) { Guid voidedStatementId = parameters.VoidedStatementId.Value; requestQuery = Queries.VoidedStatemetQuery.Create(voidedStatementId, attachments, format); } Statement statement = await _mediator.Send(requestQuery); if (statement == null) { return(NotFound()); } return(new StatementActionResult(statement, format)); } PagedStatementsResult pagedResult = await _mediator.Send(parameters); StatementsResult result = new StatementsResult { Statements = pagedResult.Statements }; // Generate more url if (!string.IsNullOrEmpty(pagedResult.MoreToken)) { result.More = new Uri($"/xapi/statements?more={pagedResult.MoreToken}", UriKind.Relative); } return(new StatementsActionResult(result, format)); }