private PayPal.Api.Payment CreatePayment(DexCMS.Tickets.Orders.Models.Order order)
        {
            var payer = new Payer { payment_method = "paypal" };
            List<Transaction> transactions = BuildTransactions(order);
            var baseUrl = WebConfigurationManager.AppSettings["ServerUrl"] + "secure/";
            var payment = new PayPal.Api.Payment
            {
                intent = "sale",
                payer = payer,
                transactions = transactions,
                redirect_urls = new RedirectUrls
                {
                    cancel_url = baseUrl + "cancel/" + order.OrderID,
                    return_url = baseUrl + "payment"
                }
            };

            return payment;
        }
        private List<Transaction> BuildTransactions(DexCMS.Tickets.Orders.Models.Order order)
        {
            var details = new Details { shipping = "0.00", tax = "0.00", subtotal = order.OrderTotal.ToString() };
            var amount = new Amount { currency = "USD", details = details, total = order.OrderTotal.ToString() };
            var itemList = new ItemList() { items = new List<Item>() };

            foreach (var ticket in order.Tickets)
            {
                itemList.items.Add(new Item
                {
                    name = GetTicketName(ticket),
                    currency = "USD",
                    price = ticket.TicketTotalPrice.ToString(),
                    quantity = "1",
                    sku = ticket.TicketID.ToString()
                });
            }

            var transaction = new Transaction
            {
                amount = amount,
                description = string.Format("Order #{0} purchased from {1}", order.OrderID, SiteSettings.Resolve.GetSetting("SiteTitle")),
                item_list = itemList,
                invoice_number = order.OrderID.ToString()
            };



            var transactions = new List<Transaction>
            {
                transaction
            };
            return transactions;
        }
        //[HttpDelete]
        //public async Task<IHttpActionResult> Delete(int id)
        //{
        //    var order = await repository.RetrieveAsync(id);

        //    await repository.DeleteAsync(order);
        //    return Ok();
        //}

        //[HttpPut]
        //public async Task<IHttpActionResult> Put(int id, SecureOrderApiModel model)
        //{
        //    var order = await repository.RetrieveAsync(id);

        //    if (order != null && order.UserName == User.Identity.Name)
        //    {
        //        var apiContext = PaypalConfiguration.GetAPIContext();
        //        var payment = PayPal.Api.Payment.Get(apiContext, model.PaymentID);
        //        if (payment.state == "approved")
        //        {
        //            var transaction = payment.transactions.ToArray()[0];
        //            var sale = transaction.related_resources.ToArray()[0].sale;

        //            if (order.Payments == null)
        //            {
        //                order.Payments = new List<DexCMS.Tickets.Orders.Models.Payment>();
        //            }

        //            order.Payments.Add(new DexCMS.Tickets.Orders.Models.Payment
        //            {
        //                GrossPaid = decimal.Parse(transaction.amount.total),
        //                NetPaid = decimal.Parse(transaction.amount.total) - decimal.Parse(sale.transaction_fee.value),
        //                OrderID = order.OrderID,
        //                PaidOn = Convert.ToDateTime(payment.update_time),
        //                PaymentDetails = payment.ConvertToJson(),
        //                PaymentFee = decimal.Parse(sale.transaction_fee.value),
        //                PaymentType = PaymentType.Paypal
        //            });

        //            order.OrderStatus =
        //                order.OrderTotal == decimal.Parse(transaction.amount.total) ? OrderStatus.Complete : OrderStatus.Partial;

        //            await repository.UpdateAsync(order, order.OrderID);

        //            return Ok();
        //        }
        //        else
        //        {
        //            return BadRequest();
        //        }
        //    }
        //    else
        //    {
        //        return BadRequest();
        //    }

        //}

        //private PayPal.Api.Payment CreatePayment(DexCMS.Tickets.Orders.Models.Order order)
        //{
        //    var payer = new Payer { payment_method = "paypal" };
        //    List<Transaction> transactions = BuildTransactions(order);
        //    var baseUrl = WebConfigurationManager.AppSettings["ServerUrl"] + "secure/";
        //    var payment = new PayPal.Api.Payment
        //    {
        //        intent = "sale",
        //        payer = payer,
        //        transactions = transactions,
        //        redirect_urls = new RedirectUrls
        //        {
        //            cancel_url = baseUrl + "cancel/" + order.OrderID,
        //            return_url = baseUrl + "payment"
        //        }
        //    };

        //    return payment;
        //}

        private List<InvoiceItem> BuildItems(DexCMS.Tickets.Orders.Models.Order order)
        {
            var invoiceItems = new List<InvoiceItem>();

            foreach (var ticket in order.Tickets)
            {
                var item = new InvoiceItem
                {
                   name = GetTicketName(ticket),
                   quantity = 1,
                   unit_price = new Currency
                   {
                       currency = "USD",
                       value = ticket.TicketTotalPrice.ToString()
                   }
                };
                invoiceItems.Add(item);
            }

            return invoiceItems;
        }