protected override void OnPreRender(EventArgs e) { switch (selectedTab) { case Tab.Disabled: btOk.CausesValidation = false; break; case Tab.Create: if (registrationID != 0 && registration == null) { registration = new DojoSeminarRegistration(registrationID); } if (registration != null) { tbName.Text = registration.Contact.FullName; tbAddress1.Text = registration.Contact.Address1; tbAddress2.Text = registration.Contact.Address2; tbCity.Text = registration.Contact.City; tbStateProvince.Text = registration.Contact.StateProvince; tbPostalCode.Text = registration.Contact.PostalCode; tbCountry.Text = registration.Contact.Country; tbHomePhone.Text = registration.Contact.HomePhone; tbWorkPhone.Text = registration.Contact.WorkPhone; tbEmail1.Text = registration.Contact.Email1; if (registrationOptions == null) { DojoSeminarRegistrationOptionManager m = new DojoSeminarRegistrationOptionManager(); registrationOptions = m.GetCollection("ParentRegistrationID=" + registrationID, string.Empty, null); } foreach (ListItem i in ddClassUnits.Items) { i.Selected = i.Value == registration.classUnits.ToString(); } } break; case Tab.Verify: btOk.CausesValidation = false; goto case Tab.Create; case Tab.Payment: btOk.CausesValidation = false; break; case Tab.Locked: btOk.CausesValidation = false; break; } setValidators(selectedTab); }
/// <summary> /// Render this control to the output parameter specified. /// </summary> /// <param name="output"> The HTML writer to write out to </param> protected override void RenderContent(HtmlTextWriter output) { DojoSeminarRegistrationOptionManager m = new DojoSeminarRegistrationOptionManager(); DojoSeminarRegistrationOptionCollection dojoSeminarRegistrationOptionCollection = m.GetCollection(string.Empty, string.Empty, null); // Render Header Row this.headerLockEnabled = true; RenderRow(this.HeaderRowCssClass, ); bool rowflag = false; string rowCssClass; // // Render Records // foreach (DojoSeminarRegistrationOption dojoSeminarRegistrationOption in dojoSeminarRegistrationOptionCollection) { if (rowflag) { rowCssClass = defaultRowCssClass; } else { rowCssClass = alternateRowCssClass; } rowflag = !rowflag; output.WriteBeginTag("tr"); output.WriteAttribute("i", dojoSeminarRegistrationOption.ID.ToString()); output.WriteLine(HtmlTextWriter.TagRightChar); output.Indent++; output.Indent--; output.WriteEndTag("tr"); output.WriteLine(); } }
protected override void RenderViewPane(HtmlTextWriter output) { RenderTableBeginTag("_viewPanel", this.CellPadding, this.CellSpacing, Unit.Percentage(100), Unit.Empty, this.CssClass); DojoSeminarRegistration m = new DojoSeminarRegistration(int.Parse(Page.Request.QueryString[0])); output.WriteFullBeginTag("tr"); output.WriteBeginTag("th"); output.WriteAttribute("class", this.HeaderCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write(m.Contact.FullName); output.WriteEndTag("th"); output.WriteEndTag("tr"); #region Contact Information output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.SubHeaderCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("Contact Information"); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.defaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write(m.Contact.ConstructAddress("<br />")); output.Write("<br />"); if (m.Contact.HomePhone != string.Empty) { output.Write(m.Contact.HomePhone + " (h)<br />"); } if (m.Contact.WorkPhone != string.Empty) { output.Write(m.Contact.WorkPhone + " (w)<br />"); } if (m.Contact.Email1 != string.Empty) { output.Write("<a href=\"mailto:"); output.Write(m.Contact.Email1); output.Write("\">"); output.Write(m.Contact.Email1); output.Write("</a>"); output.Write("<br />"); } if (m.Contact.ValidationMemo != null && m.Contact.ValidationMemo.Length > 0) { output.Write("<br />"); output.Write("<strong>Validation Memo : </strong><br />"); output.Write(m.Contact.ValidationMemo.Replace("\n", "<br />")); } output.WriteEndTag("td"); output.WriteEndTag("tr"); #endregion #region Registration output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.SubHeaderCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("Payment"); output.WriteEndTag("td"); output.WriteEndTag("tr"); if (m.PaymentAmount == decimal.Zero) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.DefaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("<strong>Payment Amount</strong> : Unpaid"); output.WriteEndTag("td"); output.WriteEndTag("tr"); } else { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.DefaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("<strong>Payment Amount</strong> : "); output.Write(m.PaymentAmount.ToString("c")); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.DefaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("<strong>Payment Date</strong> : "); output.Write(m.PaymentDate.ToLongDateString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.DefaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("<strong>Payment Reference</strong> : "); output.Write(m.PaymentReference); output.WriteEndTag("td"); output.WriteEndTag("tr"); } #endregion #region Options DojoSeminarRegistrationOptionCollection options = new DojoSeminarRegistrationOptionManager().GetCollection("ParentRegistrationID=" + m.ID.ToString(), string.Empty, null); if (options.Count > 0) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.SubHeaderCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write("Options"); output.WriteEndTag("td"); output.WriteEndTag("tr"); foreach (DojoSeminarRegistrationOption option in options) { output.WriteFullBeginTag("tr"); output.WriteBeginTag("td"); output.WriteAttribute("class", this.DefaultRowCssClass); output.Write(HtmlTextWriter.TagRightChar); output.Write(option.ParentOption.Name); output.Write(" - "); output.Write(option.Quantity.ToString()); output.WriteEndTag("td"); output.WriteEndTag("tr"); } } #endregion output.WriteEndTag("table"); }
private void create() { setValidators(Tab.Create); Page.Validate(); if (!Page.IsValid) { return; } // Create a new registration if it does not already exist. Be sure to create // the registration in proper order; contact, registration, options. If // Rappahanock is enabled, create the sales order for the item. SeminarRegistrationBuilder builder = null; if (registrationID == 0) { builder = new SeminarRegistrationBuilder(); registration = builder.Registration; registrationOptions = builder.Options; registration.Contact = new GreyFoxContact(DojoSeminarRegistrationManager.ContactTable); // Set a SessionID for security using either the username // or ASP.net SessionID if (Page.User.Identity.Name != string.Empty) { registration.SessionID = Page.User.Identity.Name; } else { registration.SessionID = Page.Session.SessionID; } } else { // Be sure to remove the registration from the cart if // Rappahanock processing is activated. try { builder = new SeminarRegistrationBuilder(registrationID); } catch { selectedTab = Tab.Locked; return; } registration = builder.Registration; registrationOptions = builder.Options; // Check for SessionID for Security if (registration.SessionID != Page.Session.SessionID & registration.SessionID != Page.User.Identity.Name) { selectedTab = Tab.Locked; return; } // If the registration has a payment amount over zero, // be sure to lock it to remove a vulnerability. if (registration.PaymentAmount > 0) { selectedTab = Tab.Locked; return; } if (paymentMode == RegistrationPaymentMode.Rappahanock) { builder.RemoveFromCart(); } } registration.RegistrationDate = DateTime.Now; registration.Status = 0; registration.Contact.ParseName(tbName.Text); registration.Contact.ParseAddress(tbAddress1.Text, tbAddress2.Text, tbCity.Text, tbStateProvince.Text, tbPostalCode.Text, tbCountry.Text); registration.Contact.ParsePhones(tbHomePhone.Text, tbWorkPhone.Text, string.Empty, string.Empty, string.Empty); registration.Contact.Email1 = tbEmail1.Text; registration.Contact.Save(); registration.ParentSeminar = seminar; registration.classUnits = int.Parse(ddClassUnits.SelectedItem.Value); registrationID = registration.Save(); // Set options for the registration by first clearing the options // already associated with the registration then recreating them // from current selections. DojoSeminarRegistrationOptionManager.ClearOptions(registration); registrationOptions.Clear(); // Loop through the form's post back data looking for the lineOption // and quantity keys. Setup the associated options with the // current registration only if selected or the quantity is not // zero. string[] allKeys = Context.Request.Form.AllKeys; int optionId; int quantity = 0; for (int x = 0; x < allKeys.Length; x++) { if (!allKeys[x].StartsWith(ClientID + "___option") & !allKeys[x].StartsWith(ClientID + "___qty")) { continue; } if (allKeys[x].StartsWith(ClientID + "___option")) { // Parse OptionID Selected optionId = int.Parse(allKeys[x].Substring( ClientID.Length + 9, allKeys[x].Length - (ClientID.Length + 9))); quantity = 1; } else { // Parse OptionID and Quantity Selected and be sure // to ignore quantities less than 1, otherwise some // clever registrants will get some discounts! optionId = int.Parse(allKeys[x].Substring( ClientID.Length + 6, allKeys[x].Length - (ClientID.Length + 6))); quantity = int.Parse(Context.Request.Form[ClientID + "___qty" + optionId.ToString()]); if (quantity < 1) { continue; } } // Find the lineOption in the seminar's list of available options then // add the lineOption and save it. foreach (DojoSeminarOption seminarOption in seminar.Options) { if (optionId == seminarOption.iD) { DojoSeminarRegistrationOption registrationOption = new DojoSeminarRegistrationOption(); registrationOption.ParentRegistration = registration; registrationOption.ParentOption = seminarOption; registrationOption.CostPerItem = seminarOption.Fee; registrationOption.Quantity = quantity; registrationOption.TotalFee = seminarOption.Fee * registrationOption.Quantity; registrationOption.Save(); registrationOptions.Add(registrationOption); break; } } } // Save the registration again to update quantities and fees. registration.CalculateFee(registrationOptions); registration.Save(); if (paymentMode == RegistrationPaymentMode.Rappahanock) { builder.AddToCart(); } selectedTab = Tab.Verify; }