Exemplo n.º 1
0
        ///<inheritdoc/>
        public async Task <bool> Handle(GetProductsRequest message, IOutputPort <GetProductsResponse> outputPort)
        {
            var errors = new List <Error>();

            if (message is null)
            {
                errors.Add(new Error(nameof(_responsesSettings.RequestMissingErrorMessage), _responsesSettings.RequestMissingErrorMessage));
            }

            else if (!message.FilterTerm?.IsAlphaNumeric() ?? false)
            {
                errors.Add(new Error(nameof(_responsesSettings.InvalidParamErrorMessage), string.Format(_responsesSettings.InvalidParamErrorMessage, nameof(message.FilterTerm))));
            }

            if (message is null || errors.Any())
            {
                outputPort.Handle(new GetProductsResponse(errors));
                return(false);
            }

            BaseGatewayResponse <PagedList <Product> > getProductsResponse = null;

            //Gets the products
            if (string.IsNullOrWhiteSpace(message.FilterTerm))
            {
                getProductsResponse = await _getProductsFromRepository.GetProducts(message.PageParameters);
            }
            else
            {
                getProductsResponse = await _getProductsFromRepository.GetProducts(message.PageParameters, message.FilterTerm);

                //Debt: Sets discounts in a service for future discounts scenarios
                if (message.FilterTerm.IsPalindrome())
                {
                    foreach (var product in getProductsResponse.Data)
                    {
                        product.ApplyDiscount(50);
                    }
                }
            }

            //Verify Errors
            if (!getProductsResponse.Success)
            {
                errors.AddRange(getProductsResponse.Errors ?? new List <Error>());
            }
            else if (!getProductsResponse.Data?.Any() ?? true)
            {
                errors.Add(new Error(nameof(_responsesSettings.GetNoEntitiesFound), string.Format(_responsesSettings.GetNoEntitiesFound, nameof(Product))));
            }

            outputPort.Handle(!errors.Any() ? new GetProductsResponse(getProductsResponse.Data) : new GetProductsResponse(errors));
            return(!errors.Any());
        }
Exemplo n.º 2
0
 public ActionResult ToActionResult(BaseGatewayResponse baseGatewayResponse)
 {
     return(new ContentResult()
     {
         StatusCode = (int)baseGatewayResponse.StatusCode,
         ContentType = baseGatewayResponse.ContentType,
         Content = baseGatewayResponse.MessageBody != null
             ? JsonSerializer.SerializeObject(baseGatewayResponse.MessageBody)
             : baseGatewayResponse.ErrorMessage
     });
 }
Exemplo n.º 3
0
 public ActionResult ToDataResult <TDest>(BaseGatewayResponse response)
 {
     return(new ContentResult()
     {
         StatusCode = (int)response.StatusCode,
         ContentType = response.ContentType,
         Content = response.MessageBody == null
             ? response.ErrorMessage
             : response.MessageBody is IEnumerable <object> items
             ? JsonSerializer.SerializeObject(items.Select(_mapper.Map <TDest>))
             : JsonSerializer.SerializeObject(_mapper.Map <TDest>(response.MessageBody))
     });
 }