Esempio n. 1
0
        public static RequestHandlerResult ExecuteHandler <TContext, TRequest>(TRequest request,
                                                                               IRequestHandler <TContext, TRequest> requestHandler) where TContext : BaseContext
        {
            RequestHandlerResult result = null;

            if (requestHandler.Condition != null)
            {
                result = requestHandler.Condition.IsSatisfied(requestHandler.Context, request)
                    ? requestHandler.HandleRequest(request)
                    : ((RequestHandler <TContext, TRequest>)requestHandler).Next(request);
            }
            else
            {
                result = requestHandler.HandleRequest(request);
            }


            return(result);
        }
        public static IActionResult AsActionResult(this RequestHandlerResult requestHandlerResult)
        {
            var responseObject = requestHandlerResult.Result();

            if (requestHandlerResult.Errors != null)
            {
                var errorsResponse = new ErrorsResponse();

                foreach (var error in requestHandlerResult.Errors)
                {
                    string property = null;

                    if (error.Property != null)
                    {
                        var parts = error.Property.Split(".").ToList();

                        if (parts.Count > 1)
                        {
                            parts.RemoveAt(0);
                        }

                        var finalParts = parts.Select(i => i.GetValueConsideringCurrentCase());
                        property = string.Join(".", finalParts);
                    }

                    errorsResponse.AddError(error.Message, property);
                }

                responseObject = errorsResponse;
            }

            return(new ObjectResult(responseObject)
            {
                StatusCode = requestHandlerResult.StatusCode
            });
        }