Пример #1
0
        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);
        }
Пример #3
0
 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.");
        }