public ActionResult Create([FromBody] OrderRequest orderData) { if (orderData == null) { return(BadRequest("Input request is empty")); } #region validate data try { var dataRequestValidator = new OrderRequestValidator(); var validationResult = dataRequestValidator.Validate(orderData); if (!validationResult.IsValid) { string errorMessage = ""; foreach (var error in validationResult.Errors) { errorMessage += error.ErrorMessage + " "; } return(Conflict(errorMessage)); } } catch (Exception e) { _logger.LogError($"Create new orders. Input data failed validation. Full validator exception message: {e.Message}"); return(StatusCode(StatusCodes.Status500InternalServerError, "Internal server error")); } #endregion ServiceResult result = _userOrderService.SaveOrder(orderData); if (result.ResultConnection != ServiceResult.ResultConnectionEnum.Correct) { return(StatusCode(StatusCodes.Status500InternalServerError, result.Message)); } return(StatusCode(StatusCodes.Status201Created)); }
public OrderRequestValidatorTest() { testObject = new OrderRequestValidator(); }
public async Task <IActionResult> Create([FromBody] OrderRequestDto payload) { TextInfo caseFormat = new CultureInfo("en-US", false).TextInfo; var accountId = UserHelper.GetAccountId(User); if (payload == null) { ModelState.AddModelError("order", "The order cannot be blank"); return(BadRequest(Responses.ErrorResponse <PaymentRequest>(ModelState.ToErrors(), StatusMessage.ValidationErrors, ResponseCodes.VALIDATION_ERRORS))); } //call a function that assigns the customer, branch and employee from an order to the payment if empty on the payment payload = setCustomerDataOnPayment(payload); var payment = payload?.Payment; if (payment == null) { ModelState.AddModelError("payment", "There is no payment attached to the order"); return(BadRequest(Responses.ErrorResponse <PaymentRequest>(ModelState.ToErrors(), StatusMessage.ValidationErrors, ResponseCodes.VALIDATION_ERRORS))); } var paymentValidator = new PaymentRequestValidator(_paymentTypeConfiguration); paymentValidator.Validate(payment).AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(BadRequest(Responses.ErrorResponse <PaymentRequest>(ModelState.ToErrors(), StatusMessage.ValidationErrors, ResponseCodes.VALIDATION_ERRORS))); } var orderValidator = new OrderRequestValidator(); orderValidator.Validate(payload).AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(BadRequest(Responses.ErrorResponse <PaymentRequest>(ModelState.ToErrors(), StatusMessage.ValidationErrors, ResponseCodes.VALIDATION_ERRORS))); } var orderRequest = _mapper.Map <OrderRequest>(payload); var paymentRequest = _mapper.Map <PaymentRequest>(payment); paymentRequest.OrderRequestDoc = JsonConvert.SerializeObject(orderRequest); paymentRequest = await _paymentRequestRepository.AddAsync(paymentRequest).ConfigureAwait(false); var paymentTypeClassName = $"Hubtel.PaymentProxy.Services.{caseFormat.ToTitleCase(payment.PaymentType.ToLower())}PaymentService"; var paymentService = (PaymentService)ActivatorUtilities.CreateInstance(_provider, Type.GetType(paymentTypeClassName)); //--> var processPaymentResult = await paymentService.ProcessPayment(paymentRequest).ConfigureAwait(false); if (processPaymentResult.Success) { processPaymentResult.Data.OrderRequestDoc = null; return(Ok(processPaymentResult)); } await _paymentRequestRepository.DeleteByClientReferenceAsync(paymentRequest.ClientReference).ConfigureAwait(false); processPaymentResult.Data = null; return(BadRequest(processPaymentResult)); }