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; } /****************************************************************************************************/ }