public void AgendaAccessCode()
        {
            DataCollection.Event evt = new DataCollection.Event("AgendaAccessCode");
            evt.AgendaPage = new DataCollection.AgendaPage();
            DataCollection.AgendaItem_CheckBox accessNoLimit = new DataCollection.AgendaItem_CheckBox("AccessNoLimit");
            DataCollection.CustomFieldCode accessCodeNoLimit = new DataCollection.CustomFieldCode("AccessNoLimit");
            accessCodeNoLimit.CodeType = DataCollection.FormData.CustomFieldCodeType.AccessCode;
            accessNoLimit.DiscountCodes.Add(accessCodeNoLimit);
            DataCollection.AgendaItem_CheckBox accessWithLimit = new DataCollection.AgendaItem_CheckBox("AccessWithLimit");
            DataCollection.CustomFieldCode accessCodeWithLimit = new DataCollection.CustomFieldCode("AccessWithLimit");
            accessCodeWithLimit.CodeType = DataCollection.FormData.CustomFieldCodeType.AccessCode;
            accessCodeWithLimit.Limit = 1;
            accessWithLimit.DiscountCodes.Add(accessCodeWithLimit);
            DataCollection.AgendaItem_CheckBox accessBulkCode = new DataCollection.AgendaItem_CheckBox("AccessBulkCode");
            accessBulkCode.BulkCodes = "Bulk";
            evt.AgendaPage.AgendaItems.Add(accessNoLimit);
            evt.AgendaPage.AgendaItems.Add(accessWithLimit);
            evt.AgendaPage.AgendaItems.Add(accessBulkCode);

            KeywordProvider.SignIn.SignInAndRecreateEventAndGetEventId(DataCollection.EventFolders.Folders.RegistrationInventory, evt, false, true);

            DataCollection.Registrant reg1 = new DataCollection.Registrant(evt);
            DataCollection.AgendaResponse_Checkbox resp1 = new DataCollection.AgendaResponse_Checkbox();
            resp1.AgendaItem = accessNoLimit;
            resp1.Checked = true;
            resp1.Code = accessCodeNoLimit;
            DataCollection.AgendaResponse_Checkbox resp2 = new DataCollection.AgendaResponse_Checkbox();
            resp2.AgendaItem = accessWithLimit;
            resp2.Checked = true;
            resp2.Code = accessCodeWithLimit;
            reg1.CustomField_Responses.Add(resp1);
            reg1.CustomField_Responses.Add(resp2);

            KeywordProvider.RegistrationCreation.CreateRegistration(reg1);

            DataCollection.Registrant reg2 = new DataCollection.Registrant(evt);
            reg2.CustomField_Responses.Add(resp1);
            reg2.CustomField_Responses.Add(resp2);

            KeywordProvider.RegistrationCreation.Checkin(reg2);
            KeywordProvider.RegistrationCreation.PersonalInfo(reg2);
            KeywordProvider.RegistrationCreation.Agenda(reg2);
            Assert.True(KeywordProvider.RegisterDefault.HasErrorMessage(DataCollection.Messages.RegisterError.AgendaCodeLimitReached));
            PageObject.Register.AgendaRow row = new PageObject.Register.AgendaRow(accessBulkCode);
            Assert.True(row.DiscountCodeInput.IsPresent);
        }
        public void AgendaDetailsAndGroupName()
        {
            Event evt = new Event("AgendaDetailsAndGroupName");
            evt.AgendaPage = new AgendaPage();
            AgendaItem_CheckBox agendaDetails = new AgendaItem_CheckBox("AgendaDetails");
            agendaDetails.DetailsPopup = "DetailsPopup";
            AgendaItem_CheckBox agendaDetailsURL = new AgendaItem_CheckBox("AgendaDetailsURL");
            agendaDetailsURL.DetailsURL = "www.baidu.com";
            AgendaItem_CheckBox agendaGroup1 = new AgendaItem_CheckBox("AgendaGroup1");
            agendaGroup1.GroupName = "nameOfGroup";
            AgendaItem_CheckBox agendaGroup2 = new AgendaItem_CheckBox("AgendaGroup2");
            agendaGroup2.GroupName = "nameOfGroup";
            evt.AgendaPage.AgendaItems.Add(agendaDetails);
            evt.AgendaPage.AgendaItems.Add(agendaDetailsURL);
            evt.AgendaPage.AgendaItems.Add(agendaGroup1);
            evt.AgendaPage.AgendaItems.Add(agendaGroup2);

            KeywordProvider.SignIn.SignInAndRecreateEventAndGetEventId(EventFolders.Folders.RegistrationInventory, evt, false);

            Registrant reg = new Registrant(evt);
            AgendaResponse_Checkbox resp1 = new AgendaResponse_Checkbox();
            resp1.AgendaItem = agendaGroup1;
            resp1.Checked = true;
            AgendaResponse_Checkbox resp2 = new AgendaResponse_Checkbox();
            resp2.AgendaItem = agendaGroup2;
            resp2.Checked = true;
            reg.CustomField_Responses.Add(resp1);
            reg.CustomField_Responses.Add(resp2);

            KeywordProvider.RegistrationCreation.Checkin(reg);
            KeywordProvider.RegistrationCreation.PersonalInfo(reg);
            PageObject.Register.AgendaRow row1 = new PageObject.Register.AgendaRow(agendaDetails);
            PageObject.Register.AgendaRow row2 = new PageObject.Register.AgendaRow(agendaDetailsURL);
            row1.Details.Click();
            Assert.AreEqual(PageObject.PageObjectProvider.Register.RegistationSite.Agenda.AgendaDetailsPopup.Text,
                agendaDetails.DetailsPopup);
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.CloseDetailsPopup_Click();
            row2.Details.Click();
            System.Threading.Thread.Sleep(1500);
            PageObject.PageObjectHelper.SelectTopWindow();
            Assert.True(PageObject.PageObjectProvider.Register.RegistationSite.Agenda.AgendaDetailsWindow.URLContains(agendaDetailsURL.DetailsURL));
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.AgendaDetailsWindow.CloseAndBackToPrevious();
            KeywordProvider.RegistrationCreation.Agenda(reg);
            KeywordProvider.RegistrationCreation.Checkout(reg);
            List<WebElements.Label> selectedAgenda = PageObject.PageObjectProvider.Register.RegistationSite.Confirmation.GetSelectedAgendaItems();
            Assert.IsNull(selectedAgenda.Find(a => a.Text == agendaGroup1.NameOnForm));
            Assert.IsNotNull(selectedAgenda.Find(a => a.Text == agendaGroup2.NameOnForm));
        }
        public void AgendaForceGroup()
        {
            Event evt = new Event("AgendaForceGroup");
            evt.AgendaPage = new AgendaPage();
            AgendaItem_CheckBox ag1 = new AgendaItem_CheckBox("ag1");
            ag1.ForceGroupToMatch = true;
            AgendaItem_CheckBox ag2 = new AgendaItem_CheckBox("ag2");
            ag2.ForceGroupToMatch = true;
            ag2.Gender = FormData.Gender.Male;
            AgendaItem_CheckBox ag3 = new AgendaItem_CheckBox("ag3");
            ag3.ForceGroupToMatch = true;
            ag3.AgeGreaterThan = 20;
            ag3.AgeGreaterThanDate = DateTime.Today;
            AgendaItem_CheckBox ag4 = new AgendaItem_CheckBox("ag4");
            ag4.ForceGroupToMatch = true;
            AgendaItem_CheckBox ag5 = new AgendaItem_CheckBox("ag5");
            ag5.ForceGroupToMatch = true;
            ag5.ConditionalLogic.Add(ag4.NameOnForm);
            AgendaItem_CheckBox ag6 = new AgendaItem_CheckBox("ag6");
            ag6.ForceGroupToMatch = true;
            AgendaItem_CheckBox ag7 = new AgendaItem_CheckBox("ag7");
            ag7.ConditionalLogic.Add(ag6.NameOnForm);
            evt.AgendaPage.AgendaItems.Add(ag1);
            evt.AgendaPage.AgendaItems.Add(ag2);
            evt.AgendaPage.AgendaItems.Add(ag3);
            evt.AgendaPage.AgendaItems.Add(ag4);
            evt.AgendaPage.AgendaItems.Add(ag5);
            evt.AgendaPage.AgendaItems.Add(ag6);
            evt.AgendaPage.AgendaItems.Add(ag7);

            KeywordProvider.SignIn.SignInAndRecreateEventAndGetEventId(EventFolders.Folders.RegistrationInventory, evt, false);

            AgendaResponse_Checkbox resp1 = new AgendaResponse_Checkbox();
            resp1.AgendaItem = ag1;
            resp1.Checked = true;
            AgendaResponse_Checkbox resp2 = new AgendaResponse_Checkbox();
            resp2.AgendaItem = ag2;
            resp2.Checked = true;
            AgendaResponse_Checkbox resp3 = new AgendaResponse_Checkbox();
            resp3.AgendaItem = ag3;
            resp3.Checked = true;
            AgendaResponse_Checkbox resp4 = new AgendaResponse_Checkbox();
            resp4.AgendaItem = ag4;
            resp4.Checked = true;
            AgendaResponse_Checkbox resp5 = new AgendaResponse_Checkbox();
            resp5.AgendaItem = ag5;
            resp5.Checked = true;
            AgendaResponse_Checkbox resp6 = new AgendaResponse_Checkbox();
            resp6.AgendaItem = ag6;
            resp6.Checked = true;
            AgendaResponse_Checkbox resp7 = new AgendaResponse_Checkbox();
            resp7.AgendaItem = ag7;
            resp7.Checked = true;

            Registrant reg1 = new Registrant(evt);
            reg1.Gender = FormData.Gender.Male;
            reg1.BirthDate = DateTime.Today.AddYears(-22);
            reg1.CustomField_Responses.Add(resp1);
            reg1.CustomField_Responses.Add(resp2);
            reg1.CustomField_Responses.Add(resp3);
            reg1.CustomField_Responses.Add(resp4);
            reg1.CustomField_Responses.Add(resp5);
            reg1.CustomField_Responses.Add(resp6);
            reg1.CustomField_Responses.Add(resp7);

            KeywordProvider.RegistrationCreation.Checkin(reg1);
            KeywordProvider.RegistrationCreation.PersonalInfo(reg1);
            KeywordProvider.RegistrationCreation.PerformDefaultActions_Agenda(reg1);

            PageObject.Register.AgendaRow row1 = new PageObject.Register.AgendaRow(ag1);
            PageObject.Register.AgendaRow row2 = new PageObject.Register.AgendaRow(ag2);
            PageObject.Register.AgendaRow row3 = new PageObject.Register.AgendaRow(ag3);
            PageObject.Register.AgendaRow row4 = new PageObject.Register.AgendaRow(ag4);
            PageObject.Register.AgendaRow row5 = new PageObject.Register.AgendaRow(ag5);
            PageObject.Register.AgendaRow row6 = new PageObject.Register.AgendaRow(ag6);
            PageObject.Register.AgendaRow row7 = new PageObject.Register.AgendaRow(ag7);

            Registrant reg2 = new Registrant(evt);
            reg2.Gender = FormData.Gender.Male;
            reg2.BirthDate = DateTime.Today.AddYears(-18);

            PageObject.PageObjectProvider.Register.RegistationSite.AddAnotherPerson_Click();
            PageObject.PageObjectProvider.Register.RegistationSite.Checkin.EmailAddress.Type(reg2.Email);
            PageObject.PageObjectProvider.Register.RegistationSite.Continue_Click();
            KeywordProvider.RegistrationCreation.PersonalInfo(reg2);
            Assert.True(((WebElements.CheckBox)(row1.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row1.AgendaType)).HasAttribute("disabled"));
            Assert.True(((WebElements.CheckBox)(row2.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row2.AgendaType)).HasAttribute("disabled"));
            Assert.False(((WebElements.CheckBox)(row3.AgendaType)).IsPresent);
            Assert.True(((WebElements.CheckBox)(row4.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row4.AgendaType)).HasAttribute("disabled"));
            Assert.True(((WebElements.CheckBox)(row5.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row5.AgendaType)).HasAttribute("disabled"));
            Assert.True(((WebElements.CheckBox)(row6.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row6.AgendaType)).HasAttribute("disabled"));
            Assert.False(((WebElements.CheckBox)(row7.AgendaType)).IsChecked);
            Assert.False(((WebElements.CheckBox)(row7.AgendaType)).HasAttribute("disabled"));
            PageObject.PageObjectProvider.Register.RegistationSite.Continue_Click();
            PageObject.PageObjectProvider.Register.RegistationSite.AddAnotherPerson_Click();

            Registrant reg3 = new Registrant(evt);
            reg3.Gender = FormData.Gender.Female;
            reg3.BirthDate = DateTime.Today.AddYears(-22);

            PageObject.PageObjectProvider.Register.RegistationSite.Checkin.EmailAddress.Type(reg3.Email);
            PageObject.PageObjectProvider.Register.RegistationSite.Continue_Click();
            KeywordProvider.RegistrationCreation.PersonalInfo(reg3);
            Assert.False(((WebElements.CheckBox)(row2.AgendaType)).IsPresent);
            Assert.True(((WebElements.CheckBox)(row3.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row3.AgendaType)).HasAttribute("disabled"));

            Registrant reg4 = new Registrant(evt);
            reg4.Gender = FormData.Gender.Male;
            reg4.BirthDate = DateTime.Today.AddYears(-22);
            reg4.CustomField_Responses.Add(resp4);

            KeywordProvider.RegistrationCreation.Checkin(reg4);
            KeywordProvider.RegistrationCreation.PersonalInfo(reg4);
            KeywordProvider.RegistrationCreation.Agenda(reg4);
            PageObject.PageObjectProvider.Register.RegistationSite.AddAnotherPerson_Click();

            Registrant reg5 = new Registrant(evt);
            reg5.Gender = FormData.Gender.Male;
            reg5.BirthDate = DateTime.Today.AddYears(-22);

            PageObject.PageObjectProvider.Register.RegistationSite.Checkin.EmailAddress.Type(reg5.Email);
            PageObject.PageObjectProvider.Register.RegistationSite.Continue_Click();
            KeywordProvider.RegistrationCreation.PersonalInfo(reg5);
            Assert.True(((WebElements.CheckBox)(row4.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row4.AgendaType)).HasAttribute("disabled"));
            Assert.False(((WebElements.CheckBox)(row5.AgendaType)).IsChecked);
            Assert.True(((WebElements.CheckBox)(row5.AgendaType)).HasAttribute("disabled"));
        }
        public void RecalculateTotal()
        {
            Event evt = new Event("AgendaRecalculate");
            evt.AgendaPage = new AgendaPage();
            AgendaItem_CheckBox agenda1 = new AgendaItem_CheckBox("agenda1");
            agenda1.Price = 50;
            AgendaItem_CheckBox agenda2 = new AgendaItem_CheckBox("agenda2");
            agenda2.Price = 60;
            CustomFieldCode discount = new CustomFieldCode("discount");
            discount.Amount = 10;
            discount.CodeDirection = FormData.ChangePriceDirection.Decrease;
            discount.CodeKind = FormData.ChangeType.Percent;
            discount.CodeType = FormData.CustomFieldCodeType.DiscountCode;
            agenda2.DiscountCodes.Add(discount);
            evt.AgendaPage.AgendaItems.Add(agenda1);
            evt.AgendaPage.AgendaItems.Add(agenda2);

            KeywordProvider.SignIn.SignInAndRecreateEventAndGetEventId(EventFolders.Folders.RegistrationInventory, evt, false);

            Registrant reg = new Registrant(evt);

            KeywordProvider.RegistrationCreation.Checkin(reg);
            KeywordProvider.RegistrationCreation.PersonalInfo(reg);
            PageObject.Register.AgendaRow row1 = new PageObject.Register.AgendaRow(agenda1);
            PageObject.Register.AgendaRow row2 = new PageObject.Register.AgendaRow(agenda2);
            ((WebElements.CheckBox)(row1.AgendaType)).Set(true);
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.RecalculateTotal_Click();
            Assert.AreEqual(agenda1.Price, KeywordProvider.RegisterDefault.GetTotal(FormData.RegisterPage.Agenda));
            ((WebElements.CheckBox)(row2.AgendaType)).Set(true);
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.RecalculateTotal_Click();
            Assert.AreEqual(agenda1.Price + agenda2.Price, KeywordProvider.RegisterDefault.GetTotal(FormData.RegisterPage.Agenda));
            ((WebElements.CheckBox)(row1.AgendaType)).Set(false);
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.RecalculateTotal_Click();
            Assert.AreEqual(agenda2.Price, KeywordProvider.RegisterDefault.GetTotal(FormData.RegisterPage.Agenda));
            row2.DiscountCodeInput.Type(discount.CodeString);
            PageObject.PageObjectProvider.Register.RegistationSite.Agenda.RecalculateTotal_Click();
            Assert.AreEqual(54, KeywordProvider.RegisterDefault.GetTotal(FormData.RegisterPage.Agenda));
        }