Exemple #1
0
 public SeminarRegistrationBuilder(int registrationID)
 {
     registration = new DojoSeminarRegistration(registrationID);
     options      = new DojoSeminarRegistrationOptionManager().
                    GetCollection("ParentRegistrationID=" + registrationID.ToString(),
                                  string.Empty, DojoSeminarRegistrationOptionFlags.ParentOption);
 }
        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);
        }
Exemple #3
0
        public DojoSeminarRegistrationOptionCollection Clone()
        {
            DojoSeminarRegistrationOptionCollection clonedDojoSeminarRegistrationOption = new DojoSeminarRegistrationOptionCollection(count);

            lock (this)
            {
                foreach (DojoSeminarRegistrationOption item in this)
                {
                    clonedDojoSeminarRegistrationOption.Add(item);
                }
            }
            return(clonedDojoSeminarRegistrationOption);
        }
Exemple #4
0
 public SeminarRegistrationBuilder(DojoSeminarRegistration registration)
 {
     this.registration = registration;
     if (registration.ID != 0)
     {
         options = new DojoSeminarRegistrationOptionManager().
                   GetCollection("ParentRegistrationID=" + registration.ID.ToString(),
                                 string.Empty, DojoSeminarRegistrationOptionFlags.ParentOption);
     }
     else
     {
         options = new DojoSeminarRegistrationOptionCollection();
     }
 }
        /// <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();
            }
        }
Exemple #6
0
 public SeminarRegistrationBuilder()
 {
     registration = new DojoSeminarRegistration();
     options      = new DojoSeminarRegistrationOptionCollection();
 }
Exemple #7
0
        public void LoadDefaults()
        {
            DojoAccessControlGroupCollection accessControls;

            DojoAttendanceEntryCollection     attendanceEntries;
            DojoBulkAttendanceEntryCollection bulkAttendances;
            DojoClassCollection           classes;
            DojoClassDefinitionCollection classDefinitions;

            DojoMemberCollection             members;
            DojoMembershipCollection         memberships;
            DojoMembershipTemplateCollection membershipTemplates;
            DojoMemberTypeCollection         memberTypes;
            DojoMemberTypeTemplateCollection memberTypeTemplates;
            DojoOrganizationCollection       organizations;

            DojoPromotionCollection                promotions;
            DojoPromotionFlagCollection            promotionFlags;
            DojoPromotionStatusCollection          promotionStatuses;
            DojoRankCollection                     ranks;
            DojoTestCollection                     tests;
            DojoTestListCollection                 testLists;
            DojoTestListJournalEntryCollection     testListJournalEntries;
            DojoTestListJournalEntryTypeCollection testListJournalEntryTypes;
            DojoTestListStatusCollection           testListStatuses;

            DojoSeminarCollection                   seminars;
            DojoSeminarOptionCollection             seminarOptions;
            DojoSeminarRegistrationCollection       seminarRegistrations;
            DojoSeminarRegistrationOptionCollection seminarRegistrationOptions;

            GreyFoxContactCollection locations;

            accessControls = new DojoAccessControlGroupCollection();

            attendanceEntries = new DojoAttendanceEntryCollection();
            bulkAttendances   = new DojoBulkAttendanceEntryCollection();
            classes           = new DojoClassCollection();
            classDefinitions  = new DojoClassDefinitionCollection();

            members             = new DojoMemberCollection();
            memberships         = new DojoMembershipCollection();
            membershipTemplates = new DojoMembershipTemplateCollection();
            memberTypes         = new DojoMemberTypeCollection();
            memberTypeTemplates = new DojoMemberTypeTemplateCollection();
            organizations       = new DojoOrganizationCollection();

            promotions                = new DojoPromotionCollection();
            promotionFlags            = new DojoPromotionFlagCollection();
            promotionStatuses         = new DojoPromotionStatusCollection();
            ranks                     = new DojoRankCollection();
            tests                     = new DojoTestCollection();
            testLists                 = new DojoTestListCollection();
            testListJournalEntries    = new DojoTestListJournalEntryCollection();
            testListJournalEntryTypes = new DojoTestListJournalEntryTypeCollection();
            testListStatuses          = new DojoTestListStatusCollection();

            seminars                   = new DojoSeminarCollection();
            seminarOptions             = new DojoSeminarOptionCollection();
            seminarRegistrations       = new DojoSeminarRegistrationCollection();
            seminarRegistrationOptions = new DojoSeminarRegistrationOptionCollection();

            locations = new GreyFoxContactCollection();

            organizations       = new DojoOrganizationManager().GetCollection(string.Empty, string.Empty, null);
            memberTypes         = new DojoMemberTypeManager().GetCollection(string.Empty, string.Empty);
            memberTypeTemplates = new DojoMemberTypeTemplateManager().GetCollection(string.Empty, string.Empty, null);
            ranks = new DojoRankManager().GetCollection(string.Empty, string.Empty, null);
            membershipTemplates = new DojoMembershipTemplateManager().GetCollection(string.Empty, string.Empty, null);

            Dictionary <string, DojoMemberType> memberTypesDictionary =
                new Dictionary <string, DojoMemberType>();

            foreach (DojoMemberType memberType in memberTypes)
            {
                memberTypesDictionary.Add(memberType.Name, memberType);
            }
            Dictionary <string, DojoMemberTypeTemplate> memberTypeTemplatesDictionary =
                new Dictionary <string, DojoMemberTypeTemplate>();

            foreach (DojoMemberTypeTemplate typeTemplate in memberTypeTemplates)
            {
                memberTypeTemplatesDictionary.Add(typeTemplate.Name, typeTemplate);
            }
            Dictionary <string, DojoRank> ranksDictionary =
                new Dictionary <string, DojoRank>();

            foreach (DojoRank rank in ranks)
            {
                ranksDictionary.Add(rank.Name, rank);
            }
            Dictionary <string, DojoMembershipTemplate> membershipTemplatesDictionary =
                new Dictionary <string, DojoMembershipTemplate>();

            foreach (DojoMembershipTemplate template in membershipTemplates)
            {
                membershipTemplatesDictionary.Add(template.Name, template);
            }

            CsvParser.CsvStream csv =
                CsvParser.StreamParse(Localization.Defaults.Defaults_en_US, false);
            string rowType;

            string[] r = csv.GetNextRow();
            while (r != null)
            {
                rowType = r[0];

                if (rowType == Localization.Defaults.CSVMembershipTemplate)
                {
                    DojoMembershipTemplate template =
                        TessenFactory.MembershipTemplate(
                            r[1], r[2],
                            bool.Parse(r[3]), bool.Parse(r[4]), bool.Parse(r[5]),
                            decimal.Parse(r[6]), decimal.Parse(r[7]),
                            (DojoMembershipDayType)Enum.Parse(typeof(DojoMembershipDayType), r[8]),
                            (DojoMembershipDayType)Enum.Parse(typeof(DojoMembershipDayType), r[9]),
                            DojoOrganization.NewPlaceHolder(0),
                            1,
                            int.Parse(r[11]), int.Parse(r[12]), decimal.Parse(r[13]), (DojoMembershipDayType)Enum.Parse(typeof(DojoMembershipDayType), r[14]),
                            int.Parse(r[15]), int.Parse(r[16]), decimal.Parse(r[17]), (DojoMembershipDayType)Enum.Parse(typeof(DojoMembershipDayType), r[18]),
                            int.Parse(r[19]), int.Parse(r[20]), decimal.Parse(r[21]), (DojoMembershipDayType)Enum.Parse(typeof(DojoMembershipDayType), r[22]),
                            int.Parse(r[23]), int.Parse(r[24]),
                            int.Parse(r[25]), int.Parse(r[26]),
                            ranksDictionary.ContainsKey(r[27]) ? ranksDictionary[r[27]] : null,
                            ranksDictionary.ContainsKey(r[28]) ? ranksDictionary[r[28]] : null);
                    membershipTemplates.Add(template);
                    membershipTemplatesDictionary.Add(template.Name, template);
                    template.Save();
                }
                else if (rowType == Localization.Defaults.CSVMemberTypeTemplate)
                {
                    DojoMemberTypeTemplate template = TessenFactory.MemberTypeTemplate(
                        r[1], r[2],
                        memberTypeTemplatesDictionary.ContainsKey(r[3].ToString()) ? memberTypeTemplatesDictionary[r[3]] : null,
                        memberTypesDictionary.ContainsKey(r[4]) ? memberTypesDictionary[r[4]] : null,
                        bool.Parse(r[5]), bool.Parse(r[6]), bool.Parse(r[7]), bool.Parse(r[8]),
                        int.Parse(r[9]), int.Parse(r[10]),
                        int.Parse(r[11]), int.Parse(r[12]),
                        ranksDictionary.ContainsKey(r[13]) ? ranksDictionary[r[13]] : null,
                        ranksDictionary.ContainsKey(r[14]) ? ranksDictionary[r[14]] : null,
                        membershipTemplatesDictionary.ContainsKey(r[15]) ? membershipTemplatesDictionary[r[15]] : null,
                        membershipTemplatesDictionary.ContainsKey(r[16]) ? membershipTemplatesDictionary[r[16]] : null,
                        membershipTemplatesDictionary.ContainsKey(r[17]) ? membershipTemplatesDictionary[r[17]] : null,
                        membershipTemplatesDictionary.ContainsKey(r[18]) ? membershipTemplatesDictionary[r[18]] : null,
                        membershipTemplatesDictionary.ContainsKey(r[19]) ? membershipTemplatesDictionary[r[19]] : null);
                    memberTypeTemplates.Add(template);
                    memberTypeTemplatesDictionary.Add(template.Name, template);
                    template.Save();
                }

                r = csv.GetNextRow();
            }
        }
        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;
        }