using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CodeCafe.Web;
using System.Configuration;
using System.Data;
public partial class Shopping_Basket : System.Web.UI.Page
{
/****************************************************************************************************/
///
/// Handles the Load event of the Page control.
///
/// The source of the event.
/// The instance containing the event data.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
clsBasket basket = new clsBasket();
if (basket.CountItems() == 0)
Response.Redirect("Order-Now.aspx");
BindBasketData();
ltTerms.Text = Global.LoadTermsAndConditions();
}
}
/****************************************************************************************************/
///
/// Binds the basket data.
///
private void BindBasketData()
{
clsBasket basket = new clsBasket();
rptBasket.DataSource = basket.AsDataSet();
rptBasket.DataBind();
pnlMonthly.Visible = clsBasket.HasRecurringItem();
pnlOnceOff.Visible = clsBasket.HasOnceOffItem();
ltOnceOff1.Visible = pnlMonthly.Visible;
ltOnceOff2.Visible = pnlMonthly.Visible;
if (pnlMonthly.Visible)
{
ltPaymentInfo.Text += Global.RecurringPaymentInfo(DateTime.Today, basket.GetMaxTerm());
//DateTime Payment = new DateTime(DateTime.Today.AddMonths(1).Year, DateTime.Today.AddMonths(1).Month, 1);
//ltPaymentInfo.Text = "
Your first monthly payment will reflect immediately, subsequent payments will reflect on the 1st of each month starting from
";
//ltPaymentInfo.Text += "1st " + Payment.ToString("MMMM yyyy") + " until 1st " + Payment.AddMonths(basket.GetMaxTerm() - 2).ToString("MMMM yyyy") + "";
}
else
ltPaymentInfo.Text = "";
}
/****************************************************************************************************/
///
/// Updates the basket item.
///
/// The sender.
/// The instance containing the event data.
protected void UpdateBasketItem(object sender, CommandEventArgs e)
{
if (Page.IsValid)
{
int id = Convert.ToInt32(e.CommandArgument);
foreach (RepeaterItem comment in rptBasket.Items)
{
int check = Convert.ToInt32(((HiddenField)comment.FindControl("hfID")).Value);
if (check == id)
{
int qty = Utils.StrToIntDef(((TextBox)comment.FindControl("tbQty")).Text, 0);
clsBasket basket = new clsBasket();
basket.UpdateBasket(id, qty);
break;
}
}
BindBasketData();
}
}
/****************************************************************************************************/
///
/// Removes the basket item.
///
/// The sender.
/// The instance containing the event data.
protected void RemoveBasketItem(object sender, CommandEventArgs e)
{
clsBasket basket = new clsBasket();
basket.RemoveFromBasket(int.Parse(e.CommandArgument.ToString()));
if (basket.CountItems() > 0)
BindBasketData();
else
Response.Redirect("Order-Now.aspx");
}
/****************************************************************************************************/
///
/// Saves the user details.
///
///
private int SaveUserDetails()
{
int result = 0;
clsUserInfo user = new clsUserInfo();
user.ui_id = 0;
user.ui_firstName = tbName.Text;
user.ui_surname = tbSurname.Text;
user.ui_jobTitle = tbTitle.Text;
user.ui_contact = tbNumber.Text;
user.ui_email = tbEmail.Text;
user.ui_company = tbCompany.Text;
user.ui_numEmployees = int.Parse(ddEmployees.SelectedValue);
user.pv_id = int.Parse(ddProvince.SelectedValue);
result = user.Save();
//result = 1; for testing...
return result;
}
/****************************************************************************************************/
///
/// Sends the order request.
///
/// The sender.
/// The instance containing the event data.
protected void SendOrderRequest(object sender, EventArgs e)
{
if (Page.IsValid)
{
string ClientEmail = "";
string OrderEmail = "";
clsBasket basket = new clsBasket();
basket.LoadBasket();
clsShoppingBasket shopping = new clsShoppingBasket();
shopping.sb_id = 0;
shopping.sb_paymentType = 2;
shopping.sb_status = (int)PaymentResults.Pending;
shopping.ui_id = SaveUserDetails();
shopping.sb_date = DateTime.Now;
shopping.sb_amount = (clsBasket.TotalBasketWithVat() * 100).ToString("G0");
int sbid = shopping.Save();
shopping.sb_id = sbid;
foreach (BasketItem item in basket.Basket)
{
clsBasketItem bi = new clsBasketItem();
bi.pi_id = item.ProductId;
bi.pi_price = item.Cost;
bi.bi_qty = item.Qty;
bi.bi_term = item.Term;
bi.sb_id = sbid;
bi.Save();
}
string Reference = "BW" + sbid.ToString("00000");
clsUserInfo user = new clsUserInfo();
user.Load(shopping.ui_id);
ClientEmail = "Dear " + user.ui_firstName + " " + user.ui_surname + ",
";
ClientEmail += "Order Reference: " + Reference + "
";
ClientEmail += "Thank you! You successfully ordered the following on " + shopping.sb_date.ToString("dd MMMM yyyy") + " at " + shopping.sb_date.ToString("HH:mm") + ":
";
ClientEmail += basket.RenderClientEmail();
ClientEmail += "
One of our sales consultants will be in contact with you shortly.
";
ClientEmail += "Yours sincerely,
The BluWave CRM Sales Team.";
Global.SendBluWaveEmail(user.ui_email, "BluWave CRM Order", ClientEmail, ConfigurationManager.AppSettings.Get("OrderAddress"));
OrderEmail = "New Order Request on " + shopping.sb_date.ToString("dd MMMM yyyy") + " at " + shopping.sb_date.ToString("HH:mm") + "
";
OrderEmail += "Order Reference: " + Reference + "
";
OrderEmail += user.ToEmail() + "
";
OrderEmail += basket.RenderBluWaveEmail();
Global.SendBluWaveEmail(ConfigurationManager.AppSettings.Get("OrderAddress"), "BluWave CRM Order", OrderEmail, user.ui_email);
basket.DeleteBasket();
ltRefNum.Text = Reference;
mpeOrder.Show();
}
}
/****************************************************************************************************/
///
/// Starts the payment request.
///
/// The sender.
/// The instance containing the event data.
protected void StartPaymentRequest(object sender, EventArgs e)
{
if (Page.IsValid)
{
clsBasket basket = new clsBasket();
basket.LoadBasket();
clsShoppingBasket shopping = new clsShoppingBasket();
shopping.sb_id = 0;
shopping.sb_paymentType = 1;
shopping.sb_status = (int)PaymentResults.Pending;
shopping.ui_id = SaveUserDetails();
shopping.sb_date = DateTime.Now;
int sbid = shopping.Save();
shopping.sb_id = sbid;
int MaxTerm = 1;
foreach (BasketItem item in basket.Basket)
{
clsBasketItem bi = new clsBasketItem();
bi.pi_id = item.ProductId;
bi.pi_price = item.Cost;
bi.bi_qty = item.Qty;
bi.bi_term = item.Term;
if (item.Term > MaxTerm)
MaxTerm = item.Term;
bi.sb_id = sbid;
bi.Save();
}
if (clsBasket.HasRecurringItem())
{
PayGateSubscriptions pg = new PayGateSubscriptions();
pg.Reference = "BW" + sbid.ToString("00000");
pg.Amount = clsBasket.TotalMonthlyBasketWithVat();
pg.ProcessNow = ProcessNowOptions.Yes;
pg.ProcessNowAmount = clsBasket.TotalBasketWithVat();
pg.UserEmail = tbEmail.Text;
DateTime Payment = new DateTime(DateTime.Today.AddMonths(1).Year, DateTime.Today.AddMonths(1).Month, 1);
pg.SubsStartDate = Payment;
pg.SubsEndDate = Payment.AddMonths(MaxTerm - 2);
shopping.sb_code = pg.StartPayment();
shopping.sb_amount = (pg.ProcessNowAmount * 100).ToString("G0"); //this is the one off cost...
shopping.Save();
basket.DeleteBasket();
//lbDebug.Text = shopping.sb_code;
Response.Redirect(shopping.sb_code);
}
else
{
PayGate pg = new PayGate();
pg.Reference = "BW" + sbid.ToString("00000");
pg.Amount = clsBasket.TotalBasketWithVat();
pg.UserEmail = tbEmail.Text;
shopping.sb_code = pg.StartPayment();
shopping.sb_amount = (pg.Amount * 100).ToString("G0");
shopping.Save();
basket.DeleteBasket();
//lbDebug.Text = shopping.sb_code;
Response.Redirect(shopping.sb_code);
}
}
}
/****************************************************************************************************/
///
/// Validates the employees drop down.
///
/// The source.
/// The instance containing the event data.
protected void ValidateEmployees(object source, ServerValidateEventArgs args)
{
args.IsValid = ddEmployees.SelectedIndex > 0;
}
/****************************************************************************************************/
///
/// Validates the province drop down.
///
/// The source.
/// The instance containing the event data.
protected void ValidateProvince(object source, ServerValidateEventArgs args)
{
args.IsValid = ddProvince.SelectedIndex > 0;
}
/****************************************************************************************************/
}