private OrderAfter GetOrder(Guid clientOrderId)
        {
            using (var conn = new SqlConnection(_connectionString))
            {
                conn.Open();

                using (var tx = conn.BeginTransaction())
                using (var cmd = new SqlCommand("SELECT OrderId, Name, Amount, Success, ClientOrderId FROM OrdersPlaced WHERE ClientOrderId = @ClientOrderId", conn, tx))
                {
                    cmd.Parameters.AddWithValue("ClientOrderId", clientOrderId);

                    using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                    {
                        if (reader.Read())
                        {
                            var order = new OrderAfter
                            {
                                OrderId = (int) reader[0],
                                Name = (string) reader[1],
                                Amount = (decimal) reader[2],
                                Success = (bool) reader[3],
                                ClientOrderId = (Guid) reader[4],
                            };

                            return order;
                        }
                    }
                }
            }

            return null;
        }
        public ActionResult New(OrderForm form)
        {
            var order = new OrderAfter
            {
                Name = form.Name,
                Amount = form.Amount,
                ClientOrderId = Guid.NewGuid()
            };

            SaveOrder(order);

            var message = new PlaceOrder
            {
                Name = order.Name,
                Amount = order.Amount,
                ClientOrderId = order.ClientOrderId
            };

            MvcApplication.Bus.Send(message);

            return RedirectToAction("Show", new { order.ClientOrderId });
        }
        private void SaveOrder(OrderAfter order)
        {
            using (var conn = new SqlConnection(_connectionString))
            {
                conn.Open();

                using (var tx = conn.BeginTransaction())
                using (var cmd = new SqlCommand("INSERT OrdersPlaced (OrderId, Name, Amount, Success, ClientOrderId) VALUES (@OrderId, @Name, @Amount, @Success, @ClientOrderId)", conn, tx))
                {
                    cmd.Parameters.AddWithValue("OrderId", order.OrderId);
                    cmd.Parameters.AddWithValue("Name", order.Name);
                    cmd.Parameters.AddWithValue("Amount", order.Amount);
                    cmd.Parameters.AddWithValue("Success", order.Success);
                    cmd.Parameters.AddWithValue("ClientOrderId", order.ClientOrderId);
                    cmd.ExecuteNonQuery();

                    tx.Commit();
                }
            }
        }