public async Task <IActionResult> Execute(JObject jObj, string subject) { if (jObj == null) { throw new ArgumentNullException(nameof(jObj)); } var request = _requestBuilder.GetSearchOrdersParameter(jObj); var searchResult = await _repository.Search(request); searchResult.Content = searchResult.Content == null ? new List <OrderAggregate>() : searchResult.Content; var href = "/" + Constants.RouteNames.Orders + "/" + Constants.RouteNames.Search; _halResponseBuilder.AddLinks(l => l.AddSelf(href)); foreach (var order in searchResult.Content) { if (order.Subject != subject && order.SellerId != subject) { continue; } await _orderEnricher.Enrich(_halResponseBuilder, order); } double r = (double)searchResult.TotalResults / (double)request.Count; var nbPages = Math.Ceiling(r); nbPages = nbPages == 0 ? 1 : nbPages; for (var page = 1; page <= nbPages; page++) { _halResponseBuilder.AddLinks(l => l.AddOtherItem("navigation", new Dtos.Link(href, page.ToString()))); } return(new OkObjectResult(_halResponseBuilder.Build())); }
public async Task <IActionResult> Execute(string orderId, string subject) { if (string.IsNullOrWhiteSpace(orderId)) { throw new ArgumentNullException(nameof(orderId)); } if (string.IsNullOrWhiteSpace(subject)) { throw new ArgumentNullException(nameof(subject)); } var order = await _orderRepository.Get(orderId); if (order == null) { var error = _responseBuilder.GetError(ErrorCodes.Server, ErrorDescriptions.TheOrderDoesntExist); return(_controllerHelper.BuildResponse(System.Net.HttpStatusCode.NotFound, error)); } if (order.Subject != subject && order.SellerId != subject) { var error = _responseBuilder.GetError(ErrorCodes.Server, ErrorDescriptions.TheOrderCannotBeAccessedByYou); return(_controllerHelper.BuildResponse(System.Net.HttpStatusCode.BadRequest, error)); } _halResponseBuilder.AddLinks(l => l.AddSelf("/" + Constants.RouteNames.Orders + "/" + orderId)); await _orderEnricher.Enrich(_halResponseBuilder, order); return(new OkObjectResult(_halResponseBuilder.Build())); }