public IActionResult ProcessOrder([FromBody] ProcessOrderDto orderPlaced) { if (!ModelState.IsValid) { return(BadRequest()); } var product = _orderProcessorRepository.GetProdut(orderPlaced.ProductId); if (product.AvaliableQuantity >= orderPlaced.Quantity) { _orderProcessorRepository.CreateOrder(new CreateOrderDto(orderPlaced.UserId, orderPlaced.ProductId, orderPlaced.Quantity)); _orderProcessorRepository.UpdateProduct(new UpdateProductDto(product.AvaliableQuantity - orderPlaced.Quantity)); var paymentStatus = _paymentService.ChargePayment(orderPlaced.CreditCard, orderPlaced.Quantity * product.Price); if (paymentStatus) { _mailService.Send($"Order Placed for {product.Id} by {orderPlaced.UserId}", $"Please ship {orderPlaced.Quantity} quantity of {product.Id} to User: {orderPlaced.UserId}"); return(Ok(new Response <bool>() { Data = true, })); } return(BadRequest(new Response <bool>() { Data = false, Error = "Unable to process payment" })); } return(BadRequest(new Response <bool>() { Data = false, Error = "Requested quantity of product is not available in inventory" })); }
private static ProcessOrderDto ValidProcessOrderDto() { var orderPlaced = new ProcessOrderDto() { CreditCard = "6011111111111117", ProductId = 10, Quantity = 10, UserId = 2 }; return(orderPlaced); }
public async Task <IActionResult> Process([FromRoute, Required] int orderId, [FromBody] ProcessOrderDto body) { try { return(await _mediator.Send(new ProcessOrderCommand { OrderId = orderId, Body = body })); } catch (Exception ex) { _logger.LogError(ex, "Error in {0}", HttpContext.Request.Path); return(BadRequest(ErrorMessages.InternalExceptionModel)); } }
public void ValidateProcessOrderDtoValidTest() { //Assemble var emp = new ProcessOrderDto { CreditCard = "6011111111111117", ProductId = 1, Quantity = 10, UserId = 2 }; //Act var validationResults = new List <ValidationResult>(); var actual = Validator.TryValidateObject(emp, new ValidationContext(emp), validationResults, true); //Assert Assert.AreEqual(0, validationResults.Count, "Unexpected number of validation errors."); }