protected void btnQuestion3_OrderOnly_Click(object sender, EventArgs e) { //if existing is blank, it must be a new customer if (hidExisting.Value == "") { insertNewCustomer(); } if (hidProjectType.Value == "Windows") { Response.Redirect("WizardWindowsOnly.aspx"); } else if (hidProjectType.Value == "Door") { Response.Redirect("WizardDoorOnly.aspx"); } else if (hidProjectType.Value == "Flooring") { Response.Redirect("WizardFloorOnlyOrder.aspx"); } else if (hidProjectType.Value == "Roof") { Response.Redirect("WizardRoofOnly.aspx"); } else if (hidProjectType.Value == "Walls") { Session.Add("model", GlobalFunctions.escapeSqlString(hidModelNumber.Value.ToString())); Session.Add("wallsOnlyNumber", GlobalFunctions.escapeSqlString(hidWallNumber.Value.ToString())); Response.Redirect("WizardWallsOnly.aspx"); } }
//This function will add a new user to the customer database at an applicable time when the page is completed and has been posted back. protected void insertNewCustomer() { sdsCustomers.SelectCommand = "SELECT * FROM customers";; DataView dvCustomers = (DataView)sdsCustomers.Select(System.Web.UI.DataSourceSelectArguments.Empty); //If new customer is selected, lets add this customer to our customer list //CHANGEME Uses logged in session number as dealerID, this is likely userID in the future, and needs to be changed string sqlInsert = "INSERT INTO customers (dealer_id,first_name,last_name,address,city,prov_city,country,zip_postal,main_phone,cell_phone,email,accept_email)" + "VALUES(" + Convert.ToInt32(GlobalFunctions.escapeSqlString(Session["dealer_id"].ToString())) + ",'" + GlobalFunctions.escapeSqlString(hidFirstName.Value) + "','" + GlobalFunctions.escapeSqlString(hidLastName.Value) + "','" + GlobalFunctions.escapeSqlString(hidAddress.Value) + "','" + GlobalFunctions.escapeSqlString(hidCity.Value) + "','" + GlobalFunctions.escapeSqlString(hidProvState.Value) + "','" + GlobalFunctions.escapeSqlString(hidCountry.Value) + "','" + GlobalFunctions.escapeSqlString(hidZip.Value) + "','" + GlobalFunctions.escapeSqlString(hidPhone.Value) + "','" + GlobalFunctions.escapeSqlString(hidCell.Value) + "','" + GlobalFunctions.escapeSqlString(hidEmail.Value) + "'," + 1 + ")"; sdsCustomers.InsertCommand = sqlInsert; sdsCustomers.Insert(); }
protected void btnLogin_Click(object sender, EventArgs e) { //If either entry is blank, stop checks if (txtUsername.Text == "" || txtPassword.Text == "") { Session["loginErrorMessage"] = "Please enter your username and password."; lblError.Text = Session["loginErrorMessage"].ToString(); } else { //If entered, get name and password for querying db string userName = GlobalFunctions.escapeSqlString(txtUsername.Text); string userHash = GlobalFunctions.CalculateSHAHash(txtPassword.Text); //Get the customers assosciated with this dealer. status=1 requires it to be an active account. sdsLogin.SelectCommand = "SELECT login, password, user_type, user_group, reference_id, user_id FROM users WHERE login='******' AND password='******' AND status=1"; //assign the table names to the dataview object DataView dvUsers = (DataView)sdsLogin.Select(System.Web.UI.DataSourceSelectArguments.Empty); //If nothing was found, let them know there was an error if (dvUsers.Count == 0) { Session["loginErrorMessage"] = "Username or password invalid."; lblError.Text = Session["loginErrorMessage"].ToString(); } else { Session["loginErrorMessage"] = ""; //Sunspace if (dvUsers[0][2].ToString() == "S") { //-1 is not a valid dealer ID, so on later checks, if -1, the user will need to spoof, which changes this Session.Add("dealer_id", "-1"); Session.Add("user_id", dvUsers[0][5].ToString()); Session.Add("user_type", dvUsers[0][2].ToString()); Session.Add("user_group", dvUsers[0][3].ToString()); Session.Add("loggedIn", dvUsers[0][0].ToString()); } //If dealer else if (dvUsers[0][2].ToString() == "D") { Session.Add("dealer_id", dvUsers[0][4].ToString()); Session.Add("user_id", dvUsers[0][5].ToString()); Session.Add("user_type", dvUsers[0][2].ToString()); Session.Add("user_group", dvUsers[0][3].ToString()); Session.Add("loggedIn", dvUsers[0][0].ToString()); } //Login means we need to update the last_access date //get current date right now DateTime aDate = DateTime.Now; sdsLogin.UpdateCommand = "UPDATE users SET last_access='" + aDate.ToString("yyyy/MM/dd") + "' " + "WHERE login='******'"; sdsLogin.Update(); //Finally, we check what kind of user they are. Send sunspace users to spoof page by default, otherwise to home //if (dvUsers[0][2].ToString() == "S") //{ // Session["dealer_id"] = 1; //changeme to sunspace internal dealer default //} Response.Redirect("Home.aspx"); } } }
protected void btnLayout_Click(object sender, EventArgs e) { if (hidExisting.Value == "") { insertNewCustomer(); } //Add any post-page required info into session Session.Add("customer_id", hidExisting.Value.ToString()); Session.Add("newProjectProjectName", GlobalFunctions.escapeSqlString(hidProjectName.Value.ToString())); Session.Add("newProjectProjectType", GlobalFunctions.escapeSqlString(hidProjectType.Value.ToString())); Session.Add("newProjectKneewallType", GlobalFunctions.escapeSqlString(hidKneewallType.Value.ToString())); Session.Add("newProjectKneewallHeight", GlobalFunctions.escapeSqlString(hidKneewallHeight.Value.ToString())); Session.Add("newProjectKneewallTint", GlobalFunctions.escapeSqlString(hidKneewallTint.Value.ToString())); Session.Add("newProjectTransomType", GlobalFunctions.escapeSqlString(hidTransomType.Value.ToString())); Session.Add("newProjectFramingColour", GlobalFunctions.escapeSqlString(hidFramingColour.Value.ToString())); Session.Add("newProjectInteriorSkin", GlobalFunctions.escapeSqlString(hidInteriorSkin.Value.ToString())); Session.Add("newProjectExteriorSkin", GlobalFunctions.escapeSqlString(hidExteriorSkin.Value.ToString())); Session.Add("newProjectPrefabFloor", GlobalFunctions.escapeSqlString(hidPrefabFloor.Value.ToString())); Session.Add("newProjectHasRoof", GlobalFunctions.escapeSqlString(hidRoof.Value.ToString())); Session.Add("newProjectRoofType", GlobalFunctions.escapeSqlString(hidRoofType.Value.ToString())); Session.Add("newProjectTransomTint", GlobalFunctions.escapeSqlString(hidTransomTint.Value.ToString())); Session.Add("model", GlobalFunctions.escapeSqlString(hidModelNumber.Value.ToString())); Session.Add("kneewallType", GlobalFunctions.escapeSqlString(hidKneewallType.Value.ToString())); Session.Add("kneewallHeight", GlobalFunctions.escapeSqlString(hidKneewallHeight.Value.ToString())); Session.Add("transomType", GlobalFunctions.escapeSqlString(hidTransomType.Value.ToString())); Session.Add("transomHeight", GlobalFunctions.escapeSqlString(hidTransomHeight.Value.ToString())); Session.Add("transomColour", GlobalFunctions.escapeSqlString(hidTransomTint.Value.ToString())); Session.Add("floorVapourBarrier", ""); if (hidRoof.Value.ToString() == "No") { Session.Add("soffitLength", 0); } else { Session.Add("soffitLength", GlobalFunctions.escapeSqlString(hidSoffitLength.Value.ToString())); } //If custom is selected, send to drawing tool if (hidLayoutSelection.Value.ToString() == "Custom") { Response.Redirect("CustomDrawingTool.aspx"); } else { if (hidLayoutSelection.Value.ToString() == "1") { Session.Add("lineInfo", "0,500,50,50,E,S/25,25,50,325,P,W/25,475,325,325,P,S/475,475,325,50,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "2") { Session.Add("lineInfo", "0,500,50,50,E,S/25,25,50,325,P,W/25,100,325,400,P,SW/100,400,400,400,P,S/400,475,400,325,P,SE/475,475,325,50,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "3") { Session.Add("lineInfo", "0,500,50,50,E,S/25,25,50,350,P,W/25,75,350,350,P,S/75,150,350,425,P,SW/150,350,425,425,P,S/350,425,425,350,P,SE/425,475,350,350,P,S/475,475,350,50,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "4") { Session.Add("lineInfo", "0,450,50,50,E,S/450,450,50,450,E,W/50,50,50,400,P,W/50,450,400,400,P,S/"); } else if (hidLayoutSelection.Value.ToString() == "5") { Session.Add("lineInfo", "150,150,0,125,E,W/150,500,125,125,E,S/150,50,75,75,P,N/50,50,75,400,P,W/50,450,400,400,P,S/450,450,400,125,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "6") { Session.Add("lineInfo", "0,500,50,50,E,S/450,450,50,400,P,W/450,150,400,400,P,N/150,150,400,350,P,E/150,50,350,350,P,N/50,50,350,50,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "7") { Session.Add("lineInfo", "0,450,50,50,E,S/450,450,50,500,E,W/50,50,50,375,P,W/50,125,375,450,P,SW/125,450,450,450,P,S/"); } else if (hidLayoutSelection.Value.ToString() == "8") { Session.Add("lineInfo", "150,150,0,100,E,W/150,500,100,100,E,S/150,50,50,50,P,N/50,50,50,350,P,W/50,100,350,400,P,SW/100,450,400,400,P,S/450,450,400,100,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "9") { Session.Add("lineInfo", "350,350,0,100,E,W/350,0,100,100,E,N/350,450,50,50,P,S/450,450,50,400,P,W/450,150,400,400,P,N/150,150,400,350,P,E/150,50,350,350,P,N/50,50,350,100,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "10") { Session.Add("lineInfo", "50,450,50,50,P,S/450,450,50,450,P,W/450,50,450,450,P,N/50,50,450,50,P,E/"); } if (chkMirrored.Checked == true) { if (hidLayoutSelection.Value.ToString() == "4") { Session.Add("lineInfo", "500,50,50,50,E,N/50,50,50,450,E,W/450,450,50,400,P,W/450,50,400,400,P,N/"); } else if (hidLayoutSelection.Value.ToString() == "5") { Session.Add("lineInfo", "350,350,0,125,E,W/350,0,125,125,E,N/350,450,75,75,P,S/450,450,75,400,P,W/450,50,400,400,P,N/50,50,400,125,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "6") { Session.Add("lineInfo", "0,500,50,50,E,S/50,50,50,400,P,W/50,350,400,400,P,S/350,350,400,350,P,E/350,450,350,350,P,S/450,450,350,50,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "7") { Session.Add("lineInfo", "500,50,50,50,E,N/50,50,50,500,E,W/450,450,50,375,P,W/450,375,375,450,P,NW/375,50,450,450,P,N/"); } else if (hidLayoutSelection.Value.ToString() == "8") { Session.Add("lineInfo", "350,350,0,100,E,W/350,0,100,100,E,N/350,450,50,50,P,S/450,450,50,350,P,W/450,400,350,400,P,NW/400,50,400,400,P,N/50,50,400,100,P,E/"); } else if (hidLayoutSelection.Value.ToString() == "9") { Session.Add("lineInfo", "150,150,0,100,E,W/150,500,100,100,E,S/150,50,50,50,P,N/50,50,50,400,P,W/50,350,400,400,P,S/350,350,400,350,P,E/350,450,350,350,P,S/450,450,350,100,P,E/ "); } } if (hidRoofType.Value.Contains("Gable")) { if (hidLayoutSelection.Value.ToString() == "1") { Session.Add("lineInfo", "225,250,300,300,G,S/25,450,25,25,E,S/50,50,25,300,P,W/50,225,300,300,P,S/250,425,300,300,P,S/425,425,300,25,P,E"); } else if (hidLayoutSelection.Value.ToString() == "2") { Session.Add("lineInfo", "225,250,300,300,G,S/25,450,25,25,E,S/50,50,25,250,P,W/50,100,250,300,P,SW/100,225,300,300,P,S/250,375,300,300,P,S/375,425,300,250,P,SE/425,425,250,25,P,E"); } else if (hidLayoutSelection.Value.ToString() == "3") { Session.Add("lineInfo", "225,250,300,300,G,S/25,450,25,25,E,S/50,50,25,250,P,W/50,100,250,250,P,S/100,150,250,300,P,SW/150,225,300,300,P,S/250,325,300,300,P,S/325,375,300,250,P,SE/375,425,250,250,P,S/425,425,250,25,P,E"); } else if (hidLayoutSelection.Value.ToString() == "5") { } else if (hidLayoutSelection.Value.ToString() == "6") { } else if (hidLayoutSelection.Value.ToString() == "8") { } else if (hidLayoutSelection.Value.ToString() == "9") { } else if (hidLayoutSelection.Value.ToString() == "10") { } if (chkMirrored.Checked == true) { if (hidLayoutSelection.Value.ToString() == "5") { } else if (hidLayoutSelection.Value.ToString() == "6") { } else if (hidLayoutSelection.Value.ToString() == "8") { } else if (hidLayoutSelection.Value.ToString() == "9") { } } } Response.Redirect("WizardWallsAndMods.aspx"); } }
protected void btnSubmit_Click(object sender, EventArgs e) { //If any of the textboxes required for all users are empty stop immediately if (txtLogin.Text == "" || txtPassword.Text == "" || txtEmail.Text == "" || txtFirstName.Text == "" || txtLastName.Text == "") { lblError.Text = "Please enter data into all fields."; } else { #region Dealer Sales Rep //adding a dealer sales rep //Need to check hidden for usergroup as the ddl is built/cleared client side on change of ddlusertype if (ddlUserType.SelectedValue == "Dealer" && hidUserGroup.Value == "Sales Rep") { DateTime aDate = DateTime.Now; sdsUsers.InsertCommand = "INSERT INTO users (login, password, email_address, enrol_date, last_access, user_type, user_group, reference_id, first_name, last_name, status)" + "VALUES('" + GlobalFunctions.escapeSqlString(txtLogin.Text) + "', '" + GlobalFunctions.CalculateSHAHash(txtPassword.Text) + "', '" + GlobalFunctions.escapeSqlString(txtEmail.Text) + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" //default to same-day + "D" + "', '" //Must be D-S because a dealer can only add users of his dealership + "S" + "', " + Convert.ToInt32(Session["dealer_id"].ToString()) + ", '" //reference ID is the dealer id in the dealer table they belong to + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "', " + 1 + ")"; sdsUsers.Insert(); lblError.Text = "Successfully Added"; } #endregion #region Dealer Admin //adding a head dealer else if (ddlUserType.SelectedValue == "Dealer" && hidUserGroup.Value == "Admin") { //Requires additional checks if adding a dealer if (txtDealershipName.Text == "" || txtMultiplier.Text == "") { lblError.Text = "Please enter data into all fields."; } else { //open SQL connection for use with transaction using (SqlConnection aConnection = new SqlConnection(sdsUsers.ConnectionString)) { //Open connection, then create a command and a transaction that are linked to it aConnection.Open(); SqlCommand aCommand = aConnection.CreateCommand(); SqlTransaction aTransaction; // Start a local transaction. aTransaction = aConnection.BeginTransaction("SampleTransaction"); // Must assign both transaction object and connection // to Command object for a pending local transaction aCommand.Connection = aConnection; aCommand.Transaction = aTransaction; try { //Add to dealer table aCommand.CommandText = "INSERT INTO dealers (dealer_name, first_name, last_name, country, multiplier)" + "VALUES('" + GlobalFunctions.escapeSqlString(txtDealershipName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "', '" + ddlCountry.SelectedValue + "', " + Convert.ToDecimal(txtMultiplier.Text) + ")"; //user enters %, so 80% will become 1.8 as a multiplier aCommand.ExecuteNonQuery(); //Execute a command that does not return anything aCommand.CommandText = "SELECT dealer_id FROM dealers WHERE dealer_name='" + txtDealershipName.Text + "'"; int newDealerId = Convert.ToInt32(aCommand.ExecuteScalar()); //ExecuteScalar returns the value in the first field of the first row of a query. Good for getting one piece of data immediately //Now add user DateTime aDate = DateTime.Now; aCommand.CommandText = "INSERT INTO users (login, password, email_address, enrol_date, last_access, user_type, user_group, reference_id, first_name, last_name, status)" + "VALUES('" + txtLogin.Text + "', '" + GlobalFunctions.CalculateSHAHash(txtPassword.Text) + "', '" + GlobalFunctions.escapeSqlString(txtEmail.Text) + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" //default to same-day + "D" + "', '" //Must be D-A within this block of logic + "A" + "', " + newDealerId + ", '" //reference ID is the dealer id in the dealer table they belong to + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "', " + 1 + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything //An entrance into the model preferences table, one entry for each model type //These have hardcoded default values that any added dealer will have as their preferences. //They can be edited here. #region Model 100 preferences entry aCommand.CommandText = "INSERT INTO model_preferences (dealer_id, model_type, default_filler, interior_panel_skin, exterior_panel_skin, frame_colour, door_type, door_style, door_swing, door_hinge, door_hardware, door_colour, door_glass_tint, door_vinyl_tint, door_screen_type, window_type, window_colour, window_glass_tint, window_vinyl_tint, window_screen_type, sunshade_valance_colour, sunshade_fabric_colour, sunshade_openness, roof_type, roof_interior_skin, roof_exterior_skin, roof_thickness, floor_thickness, floor_metal_barrier, kneewall_height, kneewall_type, kneewall_glass_tint, transom_height, transom_style, transom_glass_tint, transom_vinyl_tint, transom_screen_type, markup)" + "VALUES(" + newDealerId + ", " + "'M100'," + "10," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'White'," //door + "'Cabana'," + "'Full Screen'," + "'Out'," + "'R'," + "'Satin Silver'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //window + "'Fixed Vinyl'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //sunshade + "'White'," + "'Chalk'," + "'3%'," //roof + "'Studio'," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'3'," //floor + "'4.5'," + "0," //kneewall + 20d + "," + "'Glass'," + "'Clear'," //transom + 20d + "," + "'Glass'," + "'Clear'," + "'Clear'," + "'No Screen'," + 0.25d + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything #endregion #region Model 200 preferences entry aCommand.CommandText = "INSERT INTO model_preferences (dealer_id, model_type, default_filler, interior_panel_skin, exterior_panel_skin, frame_colour, door_type, door_style, door_swing, door_hinge, door_hardware, door_colour, door_glass_tint, door_vinyl_tint, door_screen_type, window_type, window_colour, window_glass_tint, window_vinyl_tint, window_screen_type, sunshade_valance_colour, sunshade_fabric_colour, sunshade_openness, roof_type, roof_interior_skin, roof_exterior_skin, roof_thickness, floor_thickness, floor_metal_barrier, kneewall_height, kneewall_type, kneewall_glass_tint, transom_height, transom_style, transom_glass_tint, transom_vinyl_tint, transom_screen_type, markup)" + "VALUES(" + newDealerId + ", " + "'M200'," + "10," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'White'," //door + "'Cabana'," + "'Full Screen'," + "'Out'," + "'R'," + "'Satin Silver'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //window + "'Vertical 4 Track'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //sunshade + "'White'," + "'Chalk'," + "'3%'," //roof + "'Studio'," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'3'," //floor + "'4.5'," + "0," //kneewall + 20d + "," + "'Glass'," + "'Clear'," //transom + 20d + "," + "'Glass'," + "'Clear'," + "'Clear'," + "'No Screen'," + 0.25d + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything #endregion #region Model 300 preferences entry aCommand.CommandText = "INSERT INTO model_preferences (dealer_id, model_type, default_filler, interior_panel_skin, exterior_panel_skin, frame_colour, door_type, door_style, door_swing, door_hinge, door_hardware, door_colour, door_glass_tint, door_vinyl_tint, door_screen_type, window_type, window_colour, window_glass_tint, window_vinyl_tint, window_screen_type, sunshade_valance_colour, sunshade_fabric_colour, sunshade_openness, roof_type, roof_interior_skin, roof_exterior_skin, roof_thickness, floor_thickness, floor_metal_barrier, kneewall_height, kneewall_type, kneewall_glass_tint, transom_height, transom_style, transom_glass_tint, transom_vinyl_tint, transom_screen_type, markup)" + "VALUES(" + newDealerId + ", " + "'M300'," + "10," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'White'," //door + "'Cabana'," + "'Full Screen'," + "'Out'," + "'R'," + "'Satin Silver'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //window + "'Horizontal Roller'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //sunshade + "'White'," + "'Chalk'," + "'3%'," //roof + "'Studio'," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'3'," //floor + "'4.5'," + "0," //kneewall + 20d + "," + "'Glass'," + "'Clear'," //transom + 20d + "," + "'Glass'," + "'Clear'," + "'Clear'," + "'No Screen'," + 0.25d + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything #endregion #region Model 400 preferences entry aCommand.CommandText = "INSERT INTO model_preferences (dealer_id, model_type, default_filler, interior_panel_skin, exterior_panel_skin, frame_colour, door_type, door_style, door_swing, door_hinge, door_hardware, door_colour, door_glass_tint, door_vinyl_tint, door_screen_type, window_type, window_colour, window_glass_tint, window_vinyl_tint, window_screen_type, sunshade_valance_colour, sunshade_fabric_colour, sunshade_openness, roof_type, roof_interior_skin, roof_exterior_skin, roof_thickness, floor_thickness, floor_metal_barrier, kneewall_height, kneewall_type, kneewall_glass_tint, transom_height, transom_style, transom_glass_tint, transom_vinyl_tint, transom_screen_type, markup)" + "VALUES(" + newDealerId + ", " + "'M400'," + "10," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'White'," //door + "'Cabana'," + "'Full Screen'," + "'Out'," + "'R'," + "'Satin Silver'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //window + "'Horizontal Roller'," + "'White'," + "'Clear'," + "'Clear'," + "'No Screen'," //sunshade + "'White'," + "'Chalk'," + "'3%'," //roof + "'Studio'," + "'White Aluminum Stucco'," + "'White Aluminum Stucco'," + "'3'," //floor + "'4.5'," + "0," //kneewall + 20d + "," + "'Glass'," + "'Clear'," //transom + 20d + "," + "'Glass'," + "'Clear'," + "'Clear'," + "'No Screen'," + 0.25d + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything #endregion //Lastly, a preferences table entry, with defaults aCommand.CommandText = "INSERT INTO preferences (dealer_id, installation_type, model_type, layout, cut_pitch)" + "VALUES(" + newDealerId + ", " + "'House'," + "'M200'," + "'preset 1'," + "1" + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything lblError.Text = "Successfully Added"; // Attempt to commit the transaction. aTransaction.Commit(); } catch (Exception ex) { lblError.Text = "Commit Exception Type: " + ex.GetType(); lblError.Text += " Message: " + ex.Message; // Attempt to roll back the transaction. try { aTransaction.Rollback(); } catch (Exception ex2) { // This catch block will handle any errors that may have occurred // on the server that would cause the rollback to fail, such as // a closed connection. Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType()); Console.WriteLine(" Message: {0}", ex2.Message); } } } } } #endregion #region Sunspace CSR //Sunspace CSR else if (ddlUserType.SelectedValue == "Sunspace" && ddlUserGroup.SelectedValue == "Customer Service Rep") { using (SqlConnection aConnection = new SqlConnection(sdsUsers.ConnectionString)) { aConnection.Open(); SqlCommand aCommand = aConnection.CreateCommand(); SqlTransaction aTransaction; // Start a local transaction. aTransaction = aConnection.BeginTransaction("SampleTransaction"); // Must assign both transaction object and connection // to Command object for a pending local transaction aCommand.Connection = aConnection; aCommand.Transaction = aTransaction; try { //Add to dealer table aCommand.CommandText = "INSERT INTO sunspace (position, first_name, last_name)" + "VALUES('" + "CSR" + "', '" //can only be CSR at this point, can be changed to a variable later + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "'" + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything aCommand.CommandText = "SELECT sunspace_id FROM sunspace WHERE position='" + "CSR" + "' AND first_name='" + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "' AND last_name='" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "'"; int newSunspaceId = Convert.ToInt32(aCommand.ExecuteScalar()); //ExecuteScalar returns the value in the first field of the first row of a query. Good for getting one piece of data immediately //Now add user DateTime aDate = DateTime.Now; aCommand.CommandText = "INSERT INTO users (login, password, email_address, enrol_date, last_access, user_type, user_group, reference_id, first_name, last_name, status)" + "VALUES('" + GlobalFunctions.escapeSqlString(txtLogin.Text) + "', '" + GlobalFunctions.CalculateSHAHash(txtPassword.Text) + "', '" + GlobalFunctions.escapeSqlString(txtEmail.Text) + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" + aDate.ToString("yyyy/MM/dd") + "', '" //default to same-day + "S" + "', '" //Must be S-C within this block of logic + "C" + "', " + newSunspaceId + ", '" //reference ID is the dealer id in the dealer table they belong to + GlobalFunctions.escapeSqlString(txtFirstName.Text) + "', '" + GlobalFunctions.escapeSqlString(txtLastName.Text) + "', " + 1 + ")"; aCommand.ExecuteNonQuery(); //Execute a command that does not return anything lblError.Text = "Successfully Added"; // Attempt to commit the transaction. aTransaction.Commit(); } catch (Exception ex) { lblError.Text = "Commit Exception Type: " + ex.GetType(); lblError.Text += " Message: " + ex.Message; // Attempt to roll back the transaction. try { aTransaction.Rollback(); } catch (Exception ex2) { // This catch block will handle any errors that may have occurred // on the server that would cause the rollback to fail, such as // a closed connection. Console.WriteLine("Rollback Exception Type: {0}", ex2.GetType()); Console.WriteLine(" Message: {0}", ex2.Message); } } } } #endregion #region Sunspace Admin //Sunspace Admin else { //You currently may not add an admin in such a way. Such a decision should come from high up and be done directly through a database query. } #endregion } }