using System; using System.Text; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Net.Mail; public partial class Admin_OrderWizard_Complete : WebBlocks.AdministrativePage { private int OrderID { get { return (ViewState["OrderID"] == null ? 0 : (int)ViewState["OrderID"]); } set { ViewState["OrderID"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { OrderID = Int32.Parse(Request["OrderID"]); // first step, check if the order has been captured DataRow dr = Database.Orders_GetByOrderID(OrderID); bool IsAuthorized = (bool)dr["IsAuthorized"]; bool IsCaptured = (bool)dr["IsCaptured"]; if (IsCaptured) // skip step one if its captured already wizShip.ActiveStepIndex = 1; } } protected void btnCapture_Click(object sender, EventArgs e) { Gateways.GatewayBase gateway = Gateways.GatewayBase.GetGateway(Configuration.Get("Gateways.PaymentGateway")); if (gateway.CaptureFunds(OrderID)) litCapture.Text = "Finalization Successful"; else { DataRow dr = Database.Orders_GetByOrderID(OrderID); litCapture.Text = "
Finalization failed for the following reason:
"; litCapture.Text += (dr["LastResponseText"] == DBNull.Value ? "No Reason" : (string)dr["LastResponseText"]); litCapture.Text += "

If you'd like to continue anyway, you can click the 'Next' button below. Otherwise, you may want to check the order details."; } } protected void wizShip_NextButtonClick(object sender, WizardNavigationEventArgs e) { if (e.CurrentStepIndex == 1) { Database.Orders_SetTrackingNumber(OrderID, txtTrackingNumber.Text); } else if (e.CurrentStepIndex == 2) { // send email if (chkSendEmail.Checked) SendEmail(); } } protected void wizShip_FinishButtonClick(object sender, WizardNavigationEventArgs e) { Database.Orders_UpdateForProcessing(OrderID, null, DateTime.Now, 3, null, null); Response.Redirect("EditOrder.aspx?OrderID=" + OrderID.ToString()); } private void SendEmail() { DataRow drOrder = Database.Orders_GetByOrderID(OrderID); DataRow drCustomer = Database.Customers_Get((int)drOrder["CustomerID"]); if (drOrder != null && drCustomer != null) { string EmailAddress = (string)drCustomer["EmailAddress"]; // send order confirmation email TemplatedEmail email = new TemplatedEmail(this, "~/EmailTemplates/OrderComplete.html"); email.From = new MailAddress(Configuration.Get("Emails.ReplyEmail"), Configuration.Get("Emails.FromName")); email.To.Add(new MailAddress(EmailAddress)); email.TemplateVariables.Add("[[OrderID]]", OrderID.ToString()); email.TemplateVariables.Add("[[Tracking Number]]", txtTrackingNumber.Text); // grab data needed to send the email DataRow drBilling = Database.OrderAddresses_GetByOrderAddressID((int)drOrder["BillingAddressID"]); email.TemplateVariables.Add("[[BillingFirstName]]", (string)drBilling["FirstName"]); email.TemplateVariables.Add("[[BillingLastName]]", (string)drBilling["LastName"]); email.TemplateVariables.Add("[[BillingAddress]]", (string)drBilling["Address"]); email.TemplateVariables.Add("[[BillingCity]]", (string)drBilling["City"]); email.TemplateVariables.Add("[[BillingState]]", (string)drBilling["State"]); email.TemplateVariables.Add("[[BillingZipCode]]", (string)drBilling["ZipCode"]); email.TemplateVariables.Add("[[BillingCountry]]", (string)drBilling["Country"]); email.TemplateVariables.Add("[[BillingPhone]]", (string)drBilling["Phone"]); DataRow drShipping = Database.OrderAddresses_GetByOrderAddressID((int)drOrder["ShippingAddressID"]); email.TemplateVariables.Add("[[ShippingFirstName]]", (string)drShipping["FirstName"]); email.TemplateVariables.Add("[[ShippingLastName]]", (string)drShipping["LastName"]); email.TemplateVariables.Add("[[ShippingAddress]]", (string)drShipping["Address"]); email.TemplateVariables.Add("[[ShippingCity]]", (string)drShipping["City"]); email.TemplateVariables.Add("[[ShippingState]]", (string)drShipping["State"]); email.TemplateVariables.Add("[[ShippingZipCode]]", (string)drShipping["ZipCode"]); email.TemplateVariables.Add("[[ShippingCountry]]", (string)drShipping["Country"]); DataTable dtOrderItems = Database.OrderItems_GetForAdmin(OrderID); StringBuilder str = new StringBuilder(); str.Append(""); str.Append(""); foreach (DataRow dr in dtOrderItems.Rows) { str.Append(""); } str.Append("
QuantityItemItem PriceTotal
"); str.Append(dr["Quantity"].ToString()); str.Append(""); str.Append((string)dr["ItemName"]); str.Append(""); str.Append(String.Format("{0:C}", (decimal)dr["Price"])); str.Append(""); str.Append(String.Format("{0:C}", (decimal)dr["Cost"])); str.Append("
"); email.TemplateVariables.Add("[[ShoppingCart]]", str.ToString()); email.TemplateVariables.Add("[[Comments]]", txtComments.Text); email.Send(); } } }