Exemple #1
0
        public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            // before controller
            if (!context.ModelState.IsValid)
            {
                var errors = context.ModelState.Where(x => x.Value.Errors.Count > 0)
                             .ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(x => x.ErrorMessage)).ToArray();

                var errorResponse = new ErrorResponseDto();
                foreach (var err in errors)
                {
                    foreach (var subError in err.Value)
                    {
                        var errorModel = new ErrorModel
                        {
                            FieldName = err.Key,
                            Message   = subError
                        };
                        errorResponse.Errors.Add(errorModel);
                    }
                }

                context.Result = new BadRequestObjectResult(errorResponse);
            }

            next();

            // after controller
        }
        public void OnException(ExceptionContext context)
        {
            this.logger.LogError(new EventId(context.Exception.HResult),
                                 context.Exception,
                                 context.Exception.Message);

            if (context.Exception is PassiveMQException)
            {
                ErrorResponseDto json = new ErrorResponseDto()
                {
                    ExceptionName = context.Exception.GetType().Name,
                    Messages      = new[] { context.Exception.Message }
                };

                context.Result = new BadRequestObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
            }
            else
            {
                ErrorResponseDto json = new ErrorResponseDto()
                {
                    Messages = new[] { "An error ocurr.Try it again." }
                };

                if (this.enviroment.IsDevelopment())
                {
                    json.DeveloperMeesage = context.Exception.ToString();
                }

                context.Result = new InternalServerErrorObjectResult(json);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
            }
            context.ExceptionHandled = true;
        }
        public async Task <IActionResult> AcceptedCards(string processor)
        {
            AdminCommandResponse <IList <CardType> > result;

            using (var authorizerService = _authorizerFactory.Create(processor))
            {
                if (authorizerService is null)
                {
                    return(NotFound(
                               ErrorResponseDto.FromMissingProcessor(processor)
                               ));
                }

                result = await authorizerService.GetAcceptedCardTypesAsync();
            }

            if (result.Success)
            {
                return(Ok(new CardTypesResponseDto(result)));
            }
            else
            {
                return(BadRequest(ErrorResponseDto.FromProcessorResponse(result)));
            }
        }
Exemple #4
0
        /// <summary>
        /// アクション実行前の処理を行います。
        /// </summary>
        /// <param name="context">コンテキスト。</param>
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            // モデル検証エラーの場合は処理終了
            if (context.ModelState.IsValid == false)
            {
                // モデルエラーの取得
                var errors = new List <ErrorResponseDto.ErrorArgument>();
                foreach (var value in context.ModelState.Values)
                {
                    foreach (var error in value.Errors)
                    {
                        errors.Add(
                            new ErrorResponseDto.ErrorArgument()
                        {
                            Message = error.ErrorMessage
                        });
                    }
                }

                var responseDto = new ErrorResponseDto();
                responseDto.Errors = errors;

                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                context.HttpContext.Response.Headers.Clear();

                context.Result = new ObjectResult(responseDto);
                return;
            }

            base.OnActionExecuting(context);
        }
Exemple #5
0
        public async void ValidateLoginNotFound()
        {
            CredentialsRequestDto request = new CredentialsRequestDto()
            {
                Username = "******",
                Password = "******"
            };;

            var expected = new ErrorResponseDto()
            {
                Code = "U404"
            };

            _userService.Setup(x => x.ValidateUser(It.IsAny <string>(), It.IsAny <string>()))
            .Callback(() =>
            {
                throw new UserNotFoundException($"User {request.Username} not found");
            });

            // Act
            var result = await _usersController.Post(request);

            // Assert
            var okResult = Assert.IsType <NotFoundObjectResult>(result);


            Assert.Equal(expected.Code, (okResult.Value as ErrorResponseDto).Code);
        }
        public async Task <IActionResult> Transaction([FromBody] TransactionDto transaction, string processor)
        {
            var transDef = _mapper.Map <TransactionDto, TransactionRequest>(transaction);

            TransactionResponse result;

            using (var authorizerService = _authorizerFactory.Create(processor))
            {
                if (authorizerService is null)
                {
                    return(BadRequest(ErrorResponseDto.FromMissingProcessor(processor)));
                }

                result = await authorizerService.ProcessTransactionAsync(transDef);
            }

            switch (result.ResultCode)
            {
            case BaseResponse.ResultCodesEnum.InternalProcessorError:
            case BaseResponse.ResultCodesEnum.CommunicationsError:
                return(StatusCode(500, ErrorResponseDto.FromProcessorResponse(result)));

            case BaseResponse.ResultCodesEnum.NotReady:
            case BaseResponse.ResultCodesEnum.InvalidParametersError:
            case BaseResponse.ResultCodesEnum.ProcessorError:
                return(BadRequest(ErrorResponseDto.FromProcessorResponse(result)));

            default:
                return(Ok(new TransactionResponseDto(result)));
            }
        }
Exemple #7
0
        public ActionResult HandleRequestException(RequestException exception, ControllerBase controller)
        {
            _logger.LogWarning(exception, "A Request Exception was thrown! Containing message: {ExceptionMessage}", exception.HumanMessage);
            var errorResponse = new ErrorResponseDto(exception.HumanMessage);
            var dataForClient = new DataForClient <IResponse>(errorResponse, exception.Fixes);

            return(controller.Ok(dataForClient));
        }
Exemple #8
0
        public ActionResult HandleException(Exception exception, ControllerBase controller)
        {
            _logger.LogWarning(exception, "A generic Exception was thrown! Containing message: {ExceptionMessage}", exception.Message);
            var errorResponse = new ErrorResponseDto(_textService.Error_ServerError);
            var dataForClient = new DataForClient <IResponse>(errorResponse, new FixResponseDto[0]);

            return(controller.Ok(dataForClient));
        }
        // ***
        public async Task <IResponseDto> CreateOrder(CreateOrderDto request)
        {
            bool                    areAllAvailable        = true;
            var                     wantedDishesEnumerator = request.WantedDishes.GetEnumerator();
            IList <Dish>            wantedDishes           = new List <Dish>();
            IDictionary <Guid, int> wantedDishesCount      = new Dictionary <Guid, int>();

            while (wantedDishesEnumerator.MoveNext() && areAllAvailable == true)
            {
                var wantedDish = await _unitOfWork.DishesRepository.Get(wantedDishesEnumerator.Current.Id);

                wantedDishes.Add(wantedDish);
                wantedDishesCount.Add(wantedDish.Id, wantedDishesEnumerator.Current.Count);

                areAllAvailable = wantedDish.IsAvailable;
            }
            wantedDishesEnumerator.Dispose();

            if (areAllAvailable == false)
            {
                return(ErrorResponseDto.Create("Some dishes are not available."));
            }
            var createdOrder = Order.Create(DateTime.Now, request.Adress);
            await _unitOfWork.OrdersRepository.Add(createdOrder);

            foreach (var wantedDish in wantedDishes)
            {
                wantedDishesCount.TryGetValue(wantedDish.Id, out int count);
                var orderDish = OrderDish.Create(wantedDish, createdOrder, count);

                await _unitOfWork.OrderDishesRepository.Add(orderDish);

                foreach (var wantedDishIngredient in wantedDish.DishIngredients)
                {
                    IngredientOnStock usedIngredient = wantedDishIngredient.Ingredient;
                    usedIngredient.Quantity -= wantedDishIngredient.Quantity;
                    await _unitOfWork.IngredientsRepository.Update(wantedDishIngredient.Ingredient);

                    foreach (var usedIngredientDish in wantedDishIngredient.Ingredient.IngredientDishes)
                    {
                        if (usedIngredientDish.Quantity > wantedDishIngredient.Ingredient.Quantity)
                        {
                            usedIngredientDish.Dish.IsAvailable = false;
                            await _unitOfWork.DishesRepository.Update(usedIngredientDish.Dish);
                        }
                    }
                }
            }

            await _unitOfWork.CommitAsync();

            // cauta dishurile orderului
            //verifica daca sunt available
            // create order
            // scade din fiecare ingredient folosit in dishurile alese
            //si pentru fiecare ingredient modificat se verifica dishurile la care se foloseste ingredientul (is available?)
            return(SuccessResponseDto.Create(_mapper.Map <OrderDto>(createdOrder)));
        }
Exemple #10
0
        public void OnException(ExceptionContext context)
        {
            ErrorResponseDto errorResponseDto = ErrorResponseDto.GetErrorResposenDtoFromExceprion(context.Exception);

            context.Result = new ObjectResult(errorResponseDto)
            {
                StatusCode = 500
            };
        }
        private JsonResult CreateErrorResponse(string errorMessage)
        {
            var responseDto = new ErrorResponseDto
            {
                ErrorMessage = errorMessage
            };

            return(new JsonResult(responseDto));
        }
Exemple #12
0
        public async Task <IActionResult> Get(
            string processor,
            string terminalId = "")
        {
            if (processor is null || processor == "")
            {
                return(BadRequest(ErrorResponseDto.CustomInvalidRequest("'processor' parameter missing")));
            }

            return(Ok(await _processorConfigService.GetConfig(processor, terminalId)));
        }
Exemple #13
0
        public async Task <IResponseDto> Get(string id)
        {
            Guid.TryParse(id, out Guid dishId);
            var searchedDish = await _unityOfWork.DishesRepository.Get(dishId);

            if (searchedDish == null)
            {
                return(ErrorResponseDto.Create(ErrorMessages.IdNotFound));
            }

            return(SuccessResponseDto.Create(_mapper.Map <DishDto>(searchedDish)));
        }
        private JsonResult InteralError(Exception ex)
        {
            ErrorResponseDto errorResponse = new ErrorResponseDto();
            List <ErrorDto>  errors        = new List <ErrorDto>
            {
                new ErrorDto(ex.GetType().Name, ex.Message)
            };

            errorResponse.Errors = errors.ToArray();
            return(new JsonResult(errorResponse)
            {
                StatusCode = (int)HttpStatusCode.InternalServerError
            });
        }
Exemple #15
0
        public async Task <IActionResult> GetConfig(int merchantId, string processor, [FromQuery(Name = "terminal_id")] string terminalId = "")
        {
            var merchant = await _context.Merchants.Include(p => p.Config).FirstOrDefaultAsync(p => p.Id == merchantId);

            if (merchant is null)
            {
                return(NotFound(ErrorResponseDto.FromNotFoundInDb("merchantId", merchantId.ToString())));
            }

            var config = await _merchantConfigService.GetConfig(processor, merchantId, terminalId);

            if (processor is null || processor == "")
            {
                return(Ok(config));
            }
Exemple #16
0
        protected override string CreateErrorMessage(string content)
        {
            string errorMessage = string.Empty;

            try
            {
                ErrorResponseDto error = JsonConvert.DeserializeObject <ErrorResponseDto>(content);
                errorMessage = $"{error.Error.Code} {error.Error.Message}";
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(errorMessage);
        }
Exemple #17
0
        public static void AddProductionExceptionHandler(this IApplicationBuilder app)
        {
            app.UseExceptionHandler(config =>
            {
                config.Run(async context =>
                {
                    context.Response.StatusCode  = 500;
                    context.Response.ContentType = "application/json";

                    var error = context.Features.Get <Microsoft.AspNetCore.Diagnostics.IExceptionHandlerFeature>();
                    if (error != null)
                    {
                        var ex = error.Error;
                        ErrorResponseDto errorDto;

                        switch (ex.GetType().ToString())
                        {
                        //case "SomeExceptionType":
                        //    errorDto = new ErrorResponseDto
                        //    {
                        //        ErrorCode = "SomeError",
                        //        ErrorList = new List<string>() { ex.Message },
                        //        ErrorMessage = "Error Description",
                        //        ErrorSource = "utg"
                        //    };
                        //    break;
                        default:
                            errorDto = new ErrorResponseDto
                            {
                                ErrorCode = "UnhandledError",
                                ErrorList = new List <string>()
                                {
                                    ex.Message
                                },
                                ErrorMessage = "Error inesperado (" + ex.GetType().ToString() + ") dentro del processor",
                                ErrorSource  = "utg"
                            };
                            break;
                        }
                        var output = JsonConvert.SerializeObject(errorDto);

                        await context.Response.WriteAsync(output);
                    }
                });
            });
        }
        private async Task <string> ParseErrorMessage(HttpResponseMessage response)
        {
            switch (response.StatusCode)
            {
            // allowed http statuses
            case HttpStatusCode.BadRequest:
            case HttpStatusCode.NoContent:
            case HttpStatusCode.Unauthorized:
            case HttpStatusCode.NotModified:
            case HttpStatusCode.UpgradeRequired:
            {
                string responseString = await response.Content.ReadAsStringAsync();

                ErrorResponseDto error = JsonConvert.DeserializeObject <ErrorResponseDto>(responseString);

                if (!string.IsNullOrEmpty(error?.Message))
                {
                    return(error.Message);
                }

                if (!string.IsNullOrEmpty(error?.OtherMessage))
                {
                    return(error.OtherMessage);
                }

                if (!string.IsNullOrEmpty(error?.ErrorDescription))
                {
                    return(error.ErrorDescription);
                }

                if (!string.IsNullOrEmpty(error?.Error))
                {
                    return(error.Error);
                }

                return(null);
            }

            // fatal error from server: 500, 404, 403 etc.
            default:
                return(null);
            }
        }
Exemple #19
0
        /// <inheritdoc/>
        public void OnException(ExceptionContext context)
        {
            // transform the exception into JSON
            if (context.Exception is ExceptionBase)
            {
                _logger.LogInformation(context.Exception, context.ActionDescriptor.DisplayName);

                ExceptionBase customException = context.Exception as ExceptionBase;

                var exceptionJson = new ErrorResponseDto
                {
                    Message = customException.Message,
                    InnerExceptionMessage = customException.InnerException?.Message,
                };

                switch (_hostingEnvironment.EnvironmentName.ToLowerInvariant())
                {
                case "local":
                case "dev":
                case "development":
                    exceptionJson.StackTrace = customException.StackTrace;
                    break;

                default:
                    break;
                }

                context.Result = new JsonResult(exceptionJson)
                {
                    StatusCode = (int)customException.StatusCode
                };
                context.ExceptionHandled = true;
            }
            else
            {
                // unexpected exception so log to _logger (which probably will be Application Insights)
                _logger.LogCritical(context.Exception, context.ActionDescriptor.DisplayName);

                // unhandled exception keeps percolating and will be handled by ASP.NET Core
            }
        }
Exemple #20
0
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (context.ModelState.IsValid)
            {
                return;
            }

            string[] validationErrors = context.ModelState
                                        .Keys
                                        .SelectMany(k => context.ModelState[k].Errors)
                                        .Select(e => e.ErrorMessage)
                                        .ToArray();

            ErrorResponseDto json = new ErrorResponseDto()
            {
                ExceptionName = nameof(PassiveMQValidationException),
                Messages      = validationErrors
            };

            context.Result = new BadRequestObjectResult(json);
        }
Exemple #21
0
        public HttpResponseMessage GetPostById(int Id)
        {
            var response = new HttpResponseMessage();

            try
            {
                var post = _Uow.Posts.GetPostById(Id);
                response = Request.CreateResponse(HttpStatusCode.OK, post);
                return(response);
            }
            catch (Exception ex)
            {
                var ErrorResponse = new ErrorResponseDto
                {
                    ExceptionMessage      = ex.Message,
                    InnerExceptionMessage = ex.InnerException == null ? "None" : ex.InnerException.Message
                };

                response = Request.CreateResponse(HttpStatusCode.BadRequest, ErrorResponse);
                return(response);
            }
        }
Exemple #22
0
        public HttpResponseMessage CreatePost(PostRequestDto postRequestDto)
        {
            var response = new HttpResponseMessage();

            try
            {
                _Uow.Posts.CreatePost(postRequestDto);
                response = Request.CreateResponse(HttpStatusCode.OK, "Post created successfully");
                return(response);
            }
            catch (Exception ex)
            {
                var ErrorResponse = new ErrorResponseDto
                {
                    ExceptionMessage      = ex.Message,
                    InnerExceptionMessage = ex.InnerException == null ? "None" : ex.InnerException.Message
                };

                response = Request.CreateResponse(HttpStatusCode.BadRequest, ErrorResponse);
                return(response);
            }
        }
Exemple #23
0
        public HttpResponseMessage DeleteComment(int Id)
        {
            var response = new HttpResponseMessage();

            try
            {
                _Uow.Comments.DeleteComment(Id);
                _Uow.SaveChanges();
                response = Request.CreateResponse(HttpStatusCode.OK, "Comment deleted successfully");
                return(response);
            }
            catch (Exception ex)
            {
                var ErrorResponse = new ErrorResponseDto
                {
                    ExceptionMessage      = ex.Message,
                    InnerExceptionMessage = ex.InnerException == null ? "None" : ex.InnerException.Message
                };

                response = Request.CreateResponse(HttpStatusCode.BadRequest, ErrorResponse);
                return(response);
            }
        }
        /// <summary>
        /// Error result exception
        /// </summary>
        /// <param name="exception">Exception result</param>
        /// <param name="context">Context application</param>
        /// <returns>Void</returns>
        /// <auhtor>Oscar Julian Rojas</auhtor>
        /// <date>10/07/2021</date>
        public async Task ErrorResult(Exception exception, HttpContext context)
        {
            context.Response.StatusCode  = (int)GetErrorCode(exception);
            context.Response.ContentType = ApisConstants.ContentType;

            var errorResponse = new ErrorResponseDto
            {
                ErrorCode      = context.Response.StatusCode,
                Message        = exception.Message,
                ErrorType      = exception.GetType().Name,
                Source         = exception.Source,
                ActionName     = (string)context.GetRouteData()?.Values[ApisConstants.ActionName],
                ControllerName = (string)context.GetRouteData()?.Values[ApisConstants.ControllerName],
                UserId         = context.User.HasClaim(x => x.Value.Equals("Id")) ? context.User.FindFirst("Id").Value : string.Empty
            };

            _logger.LogInformation("Error application");
            await context.Response.WriteAsync(JsonConvert.SerializeObject(new Response <ErrorResponseDto>
            {
                Data          = errorResponse,
                IsSuccess     = errorResponse.ErrorCode == default,
                ReturnMessage = errorResponse.Message
            }));
        protected async Task <IActionResult> ExecuteCommandAsync <TResponse>(IRequest <TResponse> request, Func <TResponse, object> success, CancellationToken cancellationToken = default, HttpStatusCode statusCode = HttpStatusCode.OK)
        {
            try
            {
                TResponse response = await this.Mediator.Send(request, cancellationToken);

                return(new JsonResult(success(response))
                {
                    StatusCode = (int)statusCode
                });
            }

            // Failures in validation copy to error response
            catch (FluentValidation.ValidationException ex)
            {
                ErrorResponseDto errorResponse = new ErrorResponseDto();
                List <ErrorDto>  errors        = new List <ErrorDto>();
                foreach (FluentValidation.Results.ValidationFailure error in ex.Errors)
                {
                    errors.Add(new ErrorDto(error.ErrorCode, error.ErrorMessage));
                }
                errorResponse.Errors = errors.ToArray();

                return(new JsonResult(errorResponse)
                {
                    StatusCode = (int)HttpStatusCode.BadRequest
                });
            }
            catch (NotFoundException)
            {
                return(this.NotFound());
            }
            catch (Exception ex)
            {
                return(this.InteralError(ex));
            }
        }