using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; using OfficeOpenXml; using CodeCafe.Web; using System.Data.SqlClient; using System.Data; public partial class Admin_Orders : 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) { PopulateDropDowns(); BindReport(); } } /****************************************************************************************************/ /// /// Populates the drop downs on the form. /// private void PopulateDropDowns() { ddMonth.Items.Clear(); ListItem item; for (int i = 1; i <= 12; i++) { item = new ListItem(new DateTime(2011, i, 1).ToString("MMMM"), i.ToString()); item.Selected = (i == DateTime.Today.Month); ddMonth.Items.Add(item); } ddYear.Items.Clear(); for (int i = 2011; i <= DateTime.Today.Year; i++) { item = new ListItem(i.ToString(), i.ToString()); item.Selected = (i == DateTime.Today.Year); ddYear.Items.Add(item); } } /****************************************************************************************************/ /// /// Binds the report. /// private void BindReport() { dsReport.SelectCommand = "ShoppingBasket_ListAdmin"; dsReport.SelectCommandType = SqlDataSourceCommandType.StoredProcedure; dsReport.SelectParameters.Clear(); dsReport.SelectParameters.Add("rptMonth", TypeCode.Int32, ddMonth.SelectedValue); dsReport.SelectParameters.Add("rptYear", TypeCode.Int32, ddYear.SelectedValue); dsReport.SelectParameters.Add("rptStatus", TypeCode.Int32, ddStatus.SelectedValue); rptOrder.DataBind(); pnlOrderDetails.Visible = rptOrder.Items.Count > 0; pnlNoOrders.Visible = !pnlOrderDetails.Visible; } /****************************************************************************************************/ /// /// Shows the orders. /// /// The sender. /// The instance containing the event data. protected void ShowOrders(object sender, EventArgs e) { BindReport(); } /****************************************************************************************************/ /// /// Sets the status of the applicant. /// /// The sender. /// The instance containing the event data. protected void SetStatus(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("rblStatus"); rbl.SelectedIndex = ((DataRowView)e.Item.DataItem).Row.Field("sb_status"); } } /****************************************************************************************************/ /// /// Shows the transaction amount. /// /// The amount. /// protected string ShowAmount(string amount) { return "R " + (Utils.StrToIntDef(amount, 0) / 100).ToString("N2"); } /****************************************************************************************************/ /// /// Shows the subscription period. /// /// The max term. /// protected string ShowSubscriptionPeriod(string MaxTerm) { string result = ""; if (Utils.StrToIntDef(MaxTerm, 0) > 1) { result = "Subscription Period: " + MaxTerm + " Months
"; } return result; } /****************************************************************************************************/ /// /// Shows the PayGate details. /// /// protected string ShowPayGateDetails(string sb_paymentType, string sb_transactionStatus, string sb_resultCode, string sb_authCode, string sb_transId, string sb_subsId, string sb_riskIndicator) { PayGate pg = new PayGate(); string result = ""; if (sb_paymentType.Equals("1")) { result += "
PayGate Response
"; result += "Transaction Status: " + pg.GetTransactionStatus(Utils.StrToIntDef(sb_transactionStatus, 0)) + "
"; result += "Result Code: " + pg.GetResultCode(Utils.StrToIntDef(sb_resultCode, 0)) + "
"; result += "Auth Code: " + (string.IsNullOrEmpty(sb_authCode) ? "N/A" : sb_authCode) + "
"; result += "Transaction ID: " + (string.IsNullOrEmpty(sb_transId) ? "N/A" : sb_transId) + "
"; if (!string.IsNullOrEmpty(sb_subsId)) { result += "Subscription ID: " + sb_subsId + "
"; } result += "Risk Indicator: " + pg.GetRiskIndicator(sb_riskIndicator) + "
"; } return result; } /****************************************************************************************************/ /// /// Exports the users to Excel. /// /// The sender. /// The instance containing the event data. protected void Export(object sender, EventArgs e) { string filename = Server.MapPath("~/DynamicData/Order Export.xlsx"); try { if (File.Exists(filename)) File.Delete(filename); FileInfo xlFile = new FileInfo(filename); FileInfo xlTemplate = new FileInfo(Server.MapPath("~/Templates/Order export.xlsx")); using (ExcelPackage xlPackage = new ExcelPackage(xlFile, xlTemplate)) { ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Orders"]; InsertData(worksheet); xlPackage.Workbook.Properties.Title = "BluWave Website Orders"; xlPackage.Workbook.Properties.Author = "Code Cafe"; xlPackage.Save(); } } catch (Exception err) { Logger.Log(err); } finally { if (File.Exists(filename)) Utils.DownloadFile(filename, "Orders.xlsx", Response, DownloadType.attachement, true); } } /****************************************************************************************************/ /// /// Inserts the data into the worksheet. /// /// The worksheet. private void InsertData(ExcelWorksheet worksheet) { MSSqlTools db = new MSSqlTools(); SqlDataReader rdr = null; SqlCommand cmd; try { db.DBase.Open(); cmd = new SqlCommand("ShoppingBasket_ListReport", db.DBase); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@rptMonth", ddMonth.SelectedValue); cmd.Parameters.AddWithValue("@rptYear", ddYear.SelectedValue); cmd.Parameters.AddWithValue("@rptStatus", ddStatus.SelectedValue); rdr = cmd.ExecuteReader(); worksheet.Cell(2, 2).Value = ddMonth.SelectedItem.Text; worksheet.Cell(3, 2).Value = ddYear.SelectedValue; int row = 5; int LastID = 0; int CurrentID; int term; PayGate pg = new PayGate(); while (rdr.Read()) { CurrentID = db.ProcessField(rdr["sb_id"], 0); if (CurrentID != LastID) { LastID = CurrentID; worksheet.Cell(row, 1).Value = db.ProcessField(rdr["ui_firstName"], ""); worksheet.Cell(row, 2).Value = db.ProcessField(rdr["ui_surname"], ""); worksheet.Cell(row, 3).Value = db.ProcessField(rdr["ui_jobTitle"], ""); worksheet.Cell(row, 4).Value = "'" + db.ProcessField(rdr["ui_contact"], ""); worksheet.Cell(row, 5).Value = db.ProcessField(rdr["ui_email"], ""); worksheet.Cell(row, 6).Value = db.ProcessField(rdr["ui_company"], ""); worksheet.Cell(row, 7).Value = Global.GetCompanySize(db.ProcessField(rdr["ui_numEmployees"], 1)); worksheet.Cell(row, 8).Value = Global.GetProvince(db.ProcessField(rdr["pv_id"], 1)); worksheet.Cell(row, 9).Value = ddStatus.SelectedItem.Text; worksheet.Cell(row, 10).Value = db.ProcessField(rdr["sb_date"], DateTime.Today).ToString("yyyy-MM-dd HH:mm"); worksheet.Cell(row, 11).Value = db.ProcessField(rdr["sb_paymentType"], 0) == 1 ? "Online Payment" : "Order Request"; worksheet.Cell(row, 12).Value = ShowAmount(db.ProcessField(rdr["sb_amount"], "")); worksheet.Cell(row, 19).Value = pg.GetTransactionStatus(db.ProcessField(rdr["sb_transactionStatus"], 0)); worksheet.Cell(row, 20).Value = pg.GetResultCode(db.ProcessField(rdr["sb_resultCode"], 0)); worksheet.Cell(row, 21).Value = string.IsNullOrEmpty(db.ProcessField(rdr["sb_authCode"], "")) ? "N/A" : db.ProcessField(rdr["sb_authCode"], ""); worksheet.Cell(row, 22).Value = string.IsNullOrEmpty(db.ProcessField(rdr["sb_transId"], "")) ? "N/A" : db.ProcessField(rdr["sb_transId"], ""); worksheet.Cell(row, 23).Value = string.IsNullOrEmpty(db.ProcessField(rdr["sb_subsId"], "")) ? "N/A" : db.ProcessField(rdr["sb_subsId"], ""); worksheet.Cell(row, 24).Value = pg.GetRiskIndicator(db.ProcessField(rdr["sb_riskIndicator"], "")); for (int i = 1; i <= 24; i++) { worksheet.Cell(row, i).Style = "NewRow"; } } worksheet.Cell(row, 13).Value = db.ProcessField(rdr["pi_name"], ""); worksheet.Cell(row, 14).Value = db.ProcessField(rdr["bi_qty"], ""); worksheet.Cell(row, 15).Value = db.ProcessField(rdr["pi_price"], ""); term = db.ProcessField(rdr["bi_term"], 1); worksheet.Cell(row, 16).Value = term.ToString(); //Subs Period if (term > 1) { DateTime PayDate = db.ProcessField(rdr["sb_date"], DateTime.Today); DateTime TermStart = new DateTime(PayDate.AddMonths(1).Year, PayDate.AddMonths(1).Month, 1); worksheet.Cell(row, 17).Value = TermStart.ToString("yyyy-MM-dd"); //start worksheet.Cell(row, 18).Value = TermStart.AddMonths(term - 2).ToString("yyyy-MM-dd"); //end } else { worksheet.Cell(row, 17).Value = "N/A"; //start worksheet.Cell(row, 18).Value = "N/A"; //end } row++; } rdr.Close(); } catch (Exception err) { Logger.Log(err); } finally { db.DBase.Close(); } } /****************************************************************************************************/ /// /// Updates the user status. /// /// The sender. /// The instance containing the event data. protected void UpdateStatus(object sender, EventArgs e) { clsShoppingBasket basket = new clsShoppingBasket(); foreach (RepeaterItem item in rptOrder.Items) { RadioButtonList rbl = (RadioButtonList)item.FindControl("rblStatus"); if (!rbl.SelectedValue.Equals(ddStatus.SelectedValue)) { int id = int.Parse(((HiddenField)item.FindControl("hfID")).Value); basket.Load(id); basket.sb_status = int.Parse(rbl.SelectedValue); basket.Save(); } } BindReport(); } }