public async Task <IActionResult> Execute(JObject jObj, string subject) { if (jObj == null) { throw new ArgumentNullException(nameof(jObj)); } var request = _requestBuilder.GetSearchDiscountsParameter(jObj); request.Subject = subject; var searchResult = await _repository.Search(request); searchResult.Content = searchResult.Content == null ? new List <DiscountAggregate>() : searchResult.Content; var href = "/" + Constants.RouteNames.Discounts + "/" + Constants.RouteNames.Search; _halResponseBuilder.AddLinks(l => l.AddSelf(href)); foreach (var order in searchResult.Content) { _discountEnricher.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 discountId, string subject) { if (string.IsNullOrWhiteSpace(discountId)) { throw new ArgumentNullException(nameof(discountId)); } if (string.IsNullOrWhiteSpace(subject)) { throw new ArgumentNullException(nameof(subject)); } var discount = await _discountRepository.Get(discountId); if (discount == null) { var error = _responseBuilder.GetError(ErrorCodes.Server, ErrorDescriptions.TheDiscountDoesntExist); return(_controllerHelper.BuildResponse(System.Net.HttpStatusCode.NotFound, error)); } if (discount.Subject != subject) { var error = _responseBuilder.GetError(ErrorCodes.Server, ErrorDescriptions.TheDiscountCannotBeAccessedByYou); return(_controllerHelper.BuildResponse(System.Net.HttpStatusCode.BadRequest, error)); } _halResponseBuilder.AddLinks(l => l.AddSelf("/" + Constants.RouteNames.Discounts + "/" + discountId)); _discountEnricher.Enrich(_halResponseBuilder, discount); return(new OkObjectResult(_halResponseBuilder.Build())); }