Exemplo n.º 1
0
        public OrderResponse Post([FromBody] OrderRequest orderRequest)
        {
            Dispatcher dispatcher = new Dispatcher();

            dispatcher.RegisterInterceptor(new LoggerInterceptor());
            dispatcher.RegisterInterceptor(new InvokerInterceptor());
            OrderValidation orderValidation = new OrderValidation(new RepositoryFactory <OrderEntity>(), _appSettings.Value.MongoConnectionString, dispatcher, new Logger(), new Invoker());

            try
            {
                var orderValidationStatus = orderValidation.ValidateOrder(orderRequest.AccountName,
                                                                          orderRequest.CustomerName, orderRequest.Products);
                orderValidation.AddOrderToRepository(orderValidationStatus.OrderEntity);
                return(new OrderResponse()
                {
                    Message = "Order Complete",
                    OrderComplete = orderValidationStatus.IsValid,
                    OrderEntity = orderValidationStatus.OrderEntity
                });
            }
            catch (Exception e)
            {
                return(new OrderResponse()
                {
                    Message = "Order Not Complete",
                    OrderComplete = false
                });
            }
        }