protected void btnAddProducts_Click(object sender, EventArgs e) { Quote qte; if ((Session["quote"] != null)) { qte = (Quote)Session["quote"]; if (qte != null) { //Add dimensions when quote is edited qte.Quote_Details.Add(new Quote_Details() { Cap_Height = float.Parse(SlabHeight.Value), Cap_Width = float.Parse(SlabWidth.Value), Cap_Length = float.Parse(SlabLength.Value), Cap_Point = float.Parse(PryHeight.Value), Stone_ID = Convert.ToInt32(HF_CapStoneType.Value), Product_Option_ID = 1, Item_Price = Convert.ToDecimal(lblCalculateAnswer.Text), Quantity = Convert.ToInt16(txtQuantity.Text) }); qte.Quote_Details.Add(new Quote_Details() { Pillar_Height = float.Parse(HF_PillarHeight.Value), Pillar_Width = float.Parse(HF_PillarWidth.Value), Pillar_Length = float.Parse(HF_PillarLength.Value), Stone_ID = Convert.ToInt32(HF_PillarStone.Value), Product_Option_ID = 2, Item_Price = Convert.ToDecimal(HF_PillarTotal.Value), Quantity = Convert.ToInt16(txtQuantity.Text) }); Session["quote"] = qte; } } else { string qRef = Guid.NewGuid().ToString("N").Substring(0, 6).ToUpper(); qte = new Quote() {Quote_Ref = qRef}; //Check if quantity as a value. If not use the value from label. They're the same if (txtQuantity.Text == "") { qte.Quote_Details.Add(new Quote_Details() { Cap_Height = float.Parse(SlabHeight.Value), Cap_Width = float.Parse(SlabWidth.Value), Cap_Length = float.Parse(SlabLength.Value), Cap_Point = float.Parse(PryHeight.Value), Stone_ID = Convert.ToInt32(HF_CapStoneType.Value), Product_Option_ID = 1, Item_Price = Convert.ToDecimal(txtInvisibleTotal.Text), Quantity = Convert.ToInt16(lblPillCapQuantityPanel.Text) }); } //Check if text box quantity as a value. else { qte.Quote_Details.Add(new Quote_Details() { Cap_Height = float.Parse(SlabHeight.Value), Cap_Width = float.Parse(SlabWidth.Value), Cap_Length = float.Parse(SlabLength.Value), Cap_Point = float.Parse(PryHeight.Value), Stone_ID = Convert.ToInt32(HF_CapStoneType.Value), Product_Option_ID = 1, Item_Price = Convert.ToDecimal(lblCalculateAnswer.Text), Quantity = Convert.ToInt16(txtQuantity.Text) }); } //Check if quantity as a value. If not use the value from label. They're the same if (txtQuantity.Text == "") { qte.Quote_Details.Add(new Quote_Details() { Pillar_Height = float.Parse(HF_PillarHeight.Value), Pillar_Width = float.Parse(HF_PillarWidth.Value), Pillar_Length = float.Parse(HF_PillarLength.Value), Stone_ID = Convert.ToInt32(HF_PillarStone.Value), Product_Option_ID = 2, Item_Price = Convert.ToDecimal(txtInvisibleTotal.Text), Quantity = Convert.ToInt16(lblPillCapQuantityPanel.Text) }); } //Check if text box quantity as a value. else { qte.Quote_Details.Add(new Quote_Details() { Pillar_Height = float.Parse(HF_PillarHeight.Value), Pillar_Width = float.Parse(HF_PillarWidth.Value), Pillar_Length = float.Parse(HF_PillarLength.Value), Stone_ID = Convert.ToInt32(HF_PillarStone.Value), Product_Option_ID = 2, Item_Price = Convert.ToDecimal(HF_PillarTotal.Value), Quantity = Convert.ToInt16(txtQuantity.Text) }); } Session.Add("quote", qte); } //Send quote id back to landing page. //This is needed so customer info can be used on quote page int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote_Details qid = db.Quote_Details.Where(a => a.Quote_Details_ID == qteID).FirstOrDefault(); if (qid != null) { Response.Redirect("LandingPage.aspx?QuoteDetailsID=" + qid.Quote_ID); } else { Response.Redirect("LandingPage.aspx"); } }
//Save user inputs protected void btnSaveConfirm_Click(object sender, EventArgs e) { //generate a random alphanumeric string for Quote Reference string qRef = Guid.NewGuid().ToString("N").Substring(0, 6).ToUpper(); //This is for editing a quote which is implemented yet if (Page.IsValid) { Quote qte; if ((Session["quote"] != null)) { qte = (Quote)Session["quote"]; if (qte != null) { //Add dimensions of newly added product to session //for cap and pillar qte.Quote_Details.Add(new Quote_Details() { Cap_Height = float.Parse(SlabHeight.Value), Cap_Width = float.Parse(SlabWidth.Value), Cap_Length = float.Parse(SlabLength.Value), Cap_Point = float.Parse(PryHeight.Value), Stone_ID = Convert.ToInt32(HF_CapStoneType.Value), Product_Option_ID = 1, Item_Price = Convert.ToDecimal(lblCalculateAnswer.Text), Quantity = Convert.ToInt16(txtQuantity.Text) }); qte.Quote_Details.Add(new Quote_Details() { Pillar_Height = float.Parse(HF_PillarHeight.Value), Pillar_Width = float.Parse(HF_PillarWidth.Value), Pillar_Length = float.Parse(HF_PillarLength.Value), Stone_ID = Convert.ToInt32(HF_PillarStone.Value), Product_Option_ID = 2, Item_Price = Convert.ToDecimal(HF_PillarTotal.Value), Quantity = Convert.ToInt16(txtQuantity.Text) }); int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote qid = db.Quotes.Where(a => a.QuoteId == qteID).FirstOrDefault(); Session["quote"] = qte; if (qid != null) { Response.Redirect("Quote.aspx?QuoteDetailsID=" + qid.QuoteId); } else { Response.Redirect("Quote.aspx"); } } } else { qte = new Quote() { Quote_Ref = qRef }; //Save dimensions of cap and pillar qte.Quote_Details.Add(new Quote_Details() { Cap_Height = float.Parse(SlabHeight.Value), Cap_Width = float.Parse(SlabWidth.Value), Cap_Length = float.Parse(SlabLength.Value), Cap_Point = float.Parse(PryHeight.Value), Stone_ID = Convert.ToInt32(HF_CapStoneType.Value), Product_Option_ID = 1, Item_Price = Convert.ToDecimal(HF_CapTotal.Value), Quantity = Convert.ToInt16(txtQuantity.Text) }); qte.Quote_Details.Add(new Quote_Details() { Pillar_Height = float.Parse(HF_PillarHeight.Value), Pillar_Width = float.Parse(HF_PillarWidth.Value), Pillar_Length = float.Parse(HF_PillarLength.Value), Stone_ID = Convert.ToInt32(HF_PillarStone.Value), Product_Option_ID = 2, Item_Price = Convert.ToDecimal(HF_PillarTotal.Value), Quantity = Convert.ToInt16(txtQuantity.Text) }); Session.Add("quote", qte); //Get quote details id and send it to quote page int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote_Details qid = db.Quote_Details.Where(a => a.Quote_Details_ID == qteID).FirstOrDefault(); if (qid == null) { Response.Redirect("Quote.aspx"); } else { Response.Redirect("Quote.aspx?QuoteDetailsID=" + qid.Quote_ID); } } } }
//Add the quote, customer and product to the database and send an automated email. //Code found at - http://asp.net-tutorials.com/misc/sending-mails/ protected void btnSubmit_Click(object sender, EventArgs e) { //create the message MailMessage mail = new MailMessage(); //add the email address we will be sending the message to mail.To.Add(txtEmail.Text); //add our email here mail.From = new MailAddress("*****@*****.**"); //email's subject mail.Subject = "Your quote from SetInStone"; //email's body, this is going to be html. note that we attach the image as using cid mail.Body = "Dear " + txtFirstName.Text + Environment.NewLine + "Your quote price for quote reference: " + lblDisplayQuoteRef.Text + "is €" + lblDisplayQuote.Text + Environment.NewLine + "Please refer to the quote reference if you need to contact us." + Environment.NewLine + "Regards" + Environment.NewLine + "The SetInStoneTeam"; //set email's body to html mail.IsBodyHtml = true; //setup our smtp client, these are Gmail specific settings SmtpClient client = new SmtpClient("smtp.gmail.com", 587); client.EnableSsl = true; //ssl must be enabled for Gmail //our Gmail account credentials NetworkCredential credentials = new NetworkCredential("*****@*****.**", "project400"); //add credentials to our smtp client client.Credentials = credentials; try { //try to send the mail message client.Send(mail); } catch { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Automated email failure", "<script>alert('The automated email service failed.');</script>"); } if (Session["quote"] != null) { qte = (Quote) Session["quote"]; if (qte != null) { Customer cust = db.Customers.Where(a => a.First_Name == txtFirstName.Text && a.Surname == txtSurname.Text).FirstOrDefault(); if (cust == null) { cust = new Customer { First_Name = txtFirstName.Text, Surname = txtSurname.Text, Address = txtAddress.Text, Email = txtEmail.Text, Phone = (txtPhoneNo.Text) }; db.Customers.Add(cust); db.SaveChanges(); } qte.CustomerId = cust.CustomerID; qte.Quote_Price = Convert.ToDecimal(lblDisplayQuote.Text); qte.Quote_Date = Convert.ToDateTime(txtDate.Text); db.Quotes.Add(qte); db.SaveChanges(); Session["quote"] = null; //send user back to landing page after details are saved Response.Write( "<script LANGUAGE='JavaScript' >alert('Quote has been saved.');document.location='" + ResolveClientUrl("~/LandingPage.aspx") + "';</script>"); } } }
protected void btnSaveConfirm_Click(object sender, EventArgs e) { //generate a random alphanumeric string for Quote Reference string qRef = Guid.NewGuid().ToString("N").Substring(0, 6).ToUpper(); //This is for editing a quote which is implemented yet if (Page.IsValid) { Quote qte; if ((Session["quote"] != null)) { qte = (Quote)Session["quote"]; if (qte != null) { //Add dimensions of newly added product to session qte.Quote_Details.Add(new Quote_Details() { Fireplace_Base_Height = float.Parse(BaseHeight.Value), Fireplace_Base_Width = float.Parse(BaseWidth.Value), Fireplace_Top_Height = float.Parse(TopHeight.Value), Fireplace_Top_Width = float.Parse(TopWidth.Value), Stone_ID = Convert.ToInt32(HF_MarbleSelection.Value), Fireplace_Depth = float.Parse(Depth.Value), Product_Option_ID = 4, Item_Price = Convert.ToDecimal(lblCalculateAnswer.Text), Quantity = Convert.ToInt16(txtQuantity.Text) }); int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote qid = db.Quotes.Where(a => a.QuoteId == qteID).FirstOrDefault(); Session["quote"] = qte; //Send qoute id to landing page if (qid != null) { Response.Redirect("Quote.aspx?QuoteDetailsID=" + qid.QuoteId); } else { Response.Redirect("Quote.aspx"); } } } else { qte = new Quote() { Quote_Ref = qRef }; //Save dimensions qte.Quote_Details.Add(new Quote_Details() { Fireplace_Base_Height = float.Parse(BaseHeight.Value), Fireplace_Base_Width = float.Parse(BaseWidth.Value), Fireplace_Top_Height = float.Parse(TopHeight.Value), Fireplace_Top_Width = float.Parse(TopWidth.Value), Fireplace_Depth = float.Parse(Depth.Value), Stone_ID = Convert.ToInt32(HF_MarbleSelection.Value), Product_Option_ID = 4, Item_Price = Convert.ToDecimal(lblCalculateAnswer.Text), Quantity = Convert.ToInt16(txtQuantity.Text) }); Session.Add("quote", qte); int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote_Details qid = db.Quote_Details.Where(a => a.Quote_Details_ID == qteID).FirstOrDefault(); //Send qoute id to quote page if (qid == null) { Response.Redirect("Quote.aspx"); } else { Response.Redirect("Quote.aspx?QuoteDetailsID=" + qid.Quote_ID); } } } }
protected void Page_Load(object sender, EventArgs e) { //Edit mode int qteID = Convert.ToInt32(Request["QuoteDetailsID"]); Quote qid = db.Quotes.Where(a => a.QuoteId == qteID).FirstOrDefault(); if (!Page.IsPostBack) { if (!String.IsNullOrEmpty(Request["QuoteDetailsID"])) { qte = (Quote)Session["quote"]; //Display quote price generated on product page lblDisplayQuoteRef.Text = qte.Quote_Ref; decimal totalQuote = 0; foreach (var item in qte.Quote_Details) { totalQuote += item.Item_Price; } lblDisplayQuote.Text = (totalQuote).ToString(); lblDisplayQuoteRef.Text = qid.Quote_Ref; txtFirstName.Text = qid.Customer.First_Name; txtSurname.Text = qid.Customer.Surname; txtAddress.Text = qid.Customer.Address; txtDate.Text = dte.ToString(); txtEmail.Text = qid.Customer.Email; txtPhoneNo.Text = qid.Customer.Phone; } else { qte = (Quote)Session["quote"]; if (qte != null) { //Display quote ref generated on product page lblDisplayQuoteRef.Text = qte.Quote_Ref; decimal totalQuote = 0; //Display quote price generated on product page foreach (var item in qte.Quote_Details) { totalQuote += item.Item_Price; } lblDisplayQuote.Text = totalQuote.ToString("#.##"); txtDate.Text = dte.ToString(); } } } }