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 }); } }