Example #1
0
        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()));
        }
Example #2
0
        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()));
        }