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("| Quantity | Item | Item Price | Total | ");
foreach (DataRow dr in dtOrderItems.Rows)
{
str.Append("
|---|
| ");
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(" | ");
}
str.Append("
");
email.TemplateVariables.Add("[[ShoppingCart]]", str.ToString());
email.TemplateVariables.Add("[[Comments]]", txtComments.Text);
email.Send();
}
}
}