Exemplo n.º 1
0
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);


        ClassMetadata cm = new ClassMetadata();

        cm.Fields = MultiStepWizards.PlaceAnOrder.EditOrderLineItemProductDemographics;
        // setup the metadata
        CustomFieldSet1.Metadata = cm;

        DataEntryViewMetadata vm = new DataEntryViewMetadata();

        vm.Sections = new List <MemberSuite.SDK.Manifests.Command.ViewMetadata.ControlSection>();
        ViewMetadata.ControlSection cs = new ViewMetadata.ControlSection();

        foreach (var f in cm.Fields)
        {
            ControlMetadata cm2 = ControlMetadata.FromFieldMetadata(f);
            cm2.IsRequired = null;   // important, we don't want this overrideen
            cs.LeftControls.Add(cm2);
        }
        vm.Sections.Add(cs);
        CustomFieldSet1.PageLayout = vm;

        CustomFieldSet1.Render();
    }
    private void submitForm()
    {
        CustomFieldSet1.Harvest();

        targetRecommendation.Status = RecommendationStatus.Completed;
        SaveObject(targetRecommendation);
    }
Exemplo n.º 3
0
    protected override void InitializePage()
    {
        base.InitializePage();

        setupAssignedBooths();
        setupPreferredBooths();
        setupBoothTypes();

        setupAdditionalProducts();

        setupContacts();

        hlUpdateExhibitorInfo.NavigateUrl        += targetExhibitor.ID;
        hlPurchaseAdditionalProducts.NavigateUrl += targetExhibitor.ID;
        hlAddExhibitorContact.NavigateUrl        += targetExhibitor.ID;

        if (targetShow.ShowFloor != null)
        {
            hlDownloadShowFloor.NavigateUrl = GetImageUrl(targetShow.ShowFloor);
            hlDownloadShowFloor.Visible     = true;
        }

        if (targetShow.StartDate < DateTime.Now)  // can't edit it
        {
            hlPurchaseAdditionalProducts.Visible = false;
            hlUpdateExhibitorInfo.Visible        = false;
            hlAddExhibitorContact.Visible        = false;
            lStartDatePassed.Visible             = true;
        }

        CustomFieldSet1.DataBind();

        CustomTitle.Text = string.Format("{0} Exhibitor - {1}", targetShow.Name, targetExhibitor.Name);
    }
Exemplo n.º 4
0
    protected void wzEnterInfo_StepChanged(object sender, EventArgs e)
    {
        switch (wzEnterInfo.ActiveStepIndex)
        {
        // MS-5360
        case 0:
            DeleteCurrentForm();
            break;

        case 1:
            CustomFieldSet1.Harvest();
            // MS-5360
            targetInstance      = APIExtensions.SaveObject(targetInstance);
            CurrentFormID.Value = targetInstance["ID"].ToString();
            CustomFieldSet2.MemberSuiteObject = targetInstance;
            CustomFieldSet2.Bind();
            break;

        case 2:
            SubmitForm();
            if (ConciergeAPI.CurrentEntity == null && targetForm.AnonymousSubmissionCompletionUrl != null)
            {
                wzEnterInfo.FinishDestinationPageUrl = targetForm.AnonymousSubmissionCompletionUrl;
            }

            wzEnterInfo.DisplayCancelButton = false;

            break;
        }
    }
    protected void btnContinue_Click(object sender, EventArgs e)
    {
        CustomFieldSet1.Harvest();

        SaveObject(targetVolunteer);

        GoTo("ViewMyVolunteerProfile.aspx?contextID=" + targetVolunteer.ID, "The changes to your volunteer record have been saved successfully.");
    }
    private void setupOtherInformation(msMembershipOrganization mo)
    {
        cbMembershipDirectoryOptOut.Checked = targetMembership.MembershipDirectoryOptOut;
        cbAutomaticallyPay.Checked          = targetMembership.AutomaticallyPayForRenewal;

        CustomFieldSet1.MemberSuiteObject = targetMembership;
        CustomFieldSet1.DataBind();
    }
    protected void btnContinue_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        CustomFieldSet1.Harvest();

        SaveObject(targetExhibitor);

        GoTo("ViewExhibitor.aspx?contextID=" + ContextID, "The changes to your exhibitor record have been saved successfully.");
    }
Exemplo n.º 8
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        targetMembership.MembershipDirectoryOptOut  = cbMembershipDirectoryOptOut.Checked;
        targetMembership.AutomaticallyPayForRenewal = cbAutomaticallyPay.Checked;
        CustomFieldSet1.Harvest();

        SaveObject(targetMembership);
        GoTo(hlViewMembership.NavigateUrl, "Membership was updated successfully.");
    }
    private void instantiateViewFields(IConciergeAPIService proxy)
    {
        CustomFieldSet1.Harvest();

        CustomFieldSet2.MemberSuiteObject = targetRecommendation;


        // setup the metadata
        CustomFieldSet2.Metadata   = CustomFieldSet1.Metadata;
        CustomFieldSet2.PageLayout = CustomFieldSet1.PageLayout;


        CustomFieldSet2.Render();
    }
Exemplo n.º 10
0
    protected void btnSave_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        CustomFieldSet1.Harvest();

        SaveObject(targetRecord);
        QueueBannerMessage("Your changes have been saved successfully.");

        GoTo(string.Format("ViewFormInstance.aspx?contextID={0}&formID={1}",
                           targetRecord.ID, targetForm.ID));
    }
Exemplo n.º 11
0
    private void InstantiateEditFields(IConciergeAPIService proxy)
    {
        CustomFieldSet1.MemberSuiteObject = targetInstance;

        var pageLayout = LoadObjectFromAPI <msPortalPageLayoutContainer>(targetForm.CreatePageLayout);

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = proxy.DescribeObject(targetFormManifest.UnderlyingObjectName).ResultValue;
        CustomFieldSet1.PageLayout = pageLayout.Metadata;
        CustomFieldSet1.Render();
    }
Exemplo n.º 12
0
    protected void wzEnterInfo_StepChanged(object sender, EventArgs e)
    {
        switch (wzEnterInfo.ActiveStepIndex)
        {
        case 1:
            CustomFieldSet1.Harvest();
            CustomFieldSet2.MemberSuiteObject = targetRecommendation;
            CustomFieldSet2.Bind();

            break;

        case 2:
            submitForm();

            break;
        }
    }
Exemplo n.º 13
0
    protected override void InstantiateCustomFields(IConciergeAPIService proxy)
    {
        CustomFieldSet1.MemberSuiteObject = targetJobPosting;

        var pageLayout = targetJobPosting.GetAppropriatePageLayout();

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = targetJobPosting.DescribeObject();
        CustomFieldSet1.PageLayout = pageLayout.Metadata;

        CustomFieldSet1.Render();
    }
Exemplo n.º 14
0
    protected void unbindJobPosting()
    {
        if (targetJobPosting == null)
        {
            targetJobPosting = new msJobPosting
            {
                Owner = ConciergeAPI.CurrentEntity.ID,
                AllowOnlineResumeSubmission = true,
                IsApproved = false
            };
            CustomFieldSet1.MemberSuiteObject = targetJobPosting;
        }

        targetJobPosting.Name                  = tbName.Text;
        targetJobPosting.ResumeEmail           = tbResumeEmail.Text;
        targetJobPosting.CompanyName           = tbCompanyName.Text;
        targetJobPosting.Division              = tbDivision.Text;
        targetJobPosting.InternalReferenceCode = tbInternalReferenceCode.Text;

        if (trLocation.Visible)
        {
            targetJobPosting.Location = ddlLocation.SelectedValue;
        }

        DateTime postDate = dtpPostOn.SelectedDate.HasValue ? dtpPostOn.SelectedDate.Value : DateTime.Now;

        targetJobPosting.PostOn = postDate;
        targetJobPosting.Body   = reBody.Content;
        targetJobPosting.AllowOnlineResumeSubmission = true;
        targetJobPosting.ExpirationDate = postDate.AddDays(PortalConfiguration.Current.DefaultJobPostingExpiration);

        targetJobPosting.Categories = (from item in dlbCategories.Destination.Items
                                       select item.Value).ToList();

        CustomFieldSet1.Harvest();

        // MS-5754 (Modified 11/6/2014) At this point, it is worth checking that the target job posting has a proper ID.
        // If it doesn't, then save the object so that it does
        // MS-6201 - undo MS5747 so that nothing is saved until Order processes
        ////if (string.IsNullOrWhiteSpace(targetJobPosting.ID))
        ////{
        ////    targetJobPosting = SaveObject(targetJobPosting);
        ////    CustomFieldSet1.MemberSuiteObject = targetJobPosting;
        ////}
    }
Exemplo n.º 15
0
    private void instantiateEditFields(IConciergeAPIService proxy)
    {
        CustomFieldSet1.MemberSuiteObject = targetRecommendation;

        var pageLayout = targetRecommendation.GetAppropriatePageLayout();

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = targetRecommendation.DescribeObject();
        CustomFieldSet1.PageLayout = pageLayout.Metadata;


        CustomFieldSet1.Render();
    }
Exemplo n.º 16
0
    protected override void InstantiateCustomFields(IConciergeAPIService proxy)
    {
        // important - custom fields need to know who their context is
        CustomFieldSet1.MemberSuiteObject = targetObject;

        var pageLayout = targetObject.GetAppropriatePageLayout();

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = targetObject.DescribeObject();
        CustomFieldSet1.PageLayout = pageLayout.Metadata;

        CustomFieldSet1.Render();
    }
Exemplo n.º 17
0
    protected override void InstantiateCustomFields(IConciergeAPIService proxy)
    {
        CustomFieldSet1.MemberSuiteObject = targetExhibitor;

        var pageLayout = targetExhibitor.GetAppropriatePageLayout();

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = targetExhibitor.DescribeObject();
        CustomFieldSet1.PageLayout = pageLayout.Metadata;
        CustomFieldSet1.AddReferenceNamesToTargetObject(proxy);


        CustomFieldSet1.Render();
    }
Exemplo n.º 18
0
    protected override void InstantiateCustomFields(MemberSuite.SDK.Concierge.IConciergeAPIService proxy)
    {
        base.InstantiateCustomFields(proxy);

        CustomFieldSet1.MemberSuiteObject = targetRecord;

        var pageLayout = LoadObjectFromAPI <msPortalPageLayoutContainer>(targetForm.CreatePageLayout);

        if (pageLayout == null || pageLayout.Metadata == null || pageLayout.Metadata.IsEmpty())
        {
            return;
        }

        // setup the metadata
        CustomFieldSet1.Metadata   = proxy.DescribeObject(targetFormManifest.UnderlyingObjectName).ResultValue;
        CustomFieldSet1.PageLayout = pageLayout.Metadata;


        CustomFieldSet1.Render();
    }
Exemplo n.º 19
0
    protected void btnContinue_Click(object sender, EventArgs e)
    {
        if (!IsValid)
        {
            return;
        }

        CustomFieldSet1.Harvest();
        if (MultiStepWizards.PlaceAnOrder.EditOrderLineItem.Options != null && MultiStepWizards.PlaceAnOrder.EditOrderLineItem.Options.Count > 0)
        {
            foreach (var field in CustomFieldSet1.MemberSuiteObject.Fields)
            {
                var field1 = new NameValueStringPair(field.Key, field.Value as string);
                var i      = MultiStepWizards.PlaceAnOrder.EditOrderLineItem.Options.FindIndex(f => f.Name == field1.Name);
                if (i < 0)
                {
                    continue;
                }
                MultiStepWizards.PlaceAnOrder.EditOrderLineItem.Options[i] = field1;
            }
        }
        GoTo(MultiStepWizards.PlaceAnOrder.EditOrderLineItemRedirectUrl);
    }
Exemplo n.º 20
0
    private bool unbindObjectFromPage()
    {
        targetObject.Title      = tbTitle.Text;
        targetObject.Prefix     = tbPrefix.Text;
        targetObject.FirstName  = tbFirstName.Text;
        targetObject.MiddleName = tbMiddleName.Text;
        targetObject.LastName   = tbLastName.Text;
        targetObject.Nickname   = tbNickName.Text;
        targetObject.Suffix     = tbSuffix.Text;

        //unbind the image if applicable
        if (imageUpload.HasFile)
        {
            targetObject["Image_Contents"] = getImageFile();

            //Set the session variable forcing any cached images to be refreshed from the MemberSuite Image content server
            SessionManager.Set("ImageUrlUpper", !SessionManager.Get <bool>("ImageUrlUpper"));
        }

        // now, the email
        targetObject.EmailAddress  = tbEmail.Text;
        targetObject.EmailAddress2 = tbEmail2.Text;
        targetObject.EmailAddress3 = tbEmail3.Text;

        // now, the phone numbers
        foreach (GridViewRow grvPhoneNumberType in gvPhoneNumbers.Rows)
        {
            DataKey dataKey = gvPhoneNumbers.DataKeys[grvPhoneNumberType.RowIndex];
            if (dataKey == null)
            {
                continue;
            }

            var     code = dataKey.Value;
            TextBox tb   = grvPhoneNumberType.FindControl("tbPhoneNumber") as TextBox;


            if (tb == null)
            {
                continue;
            }
            targetObject[code + "_PhoneNumber"] = tb.Text;
        }

        //if (!atLeastOnePhoneNumber)
        //{
        //    cvPhoneNumber.IsValid = false;
        //    return false;
        //}

        // the preferred
        string preferredPhoneNumberID = Request.Form["PhoneNumberPreferredType"];

        if (preferredPhoneNumberID != null)
        {
            targetObject.PreferredPhoneNumberType = preferredPhoneNumberID;
        }


        // now, let's unbind the addresses
        foreach (RepeaterItem riAddress in rptAddresses.Items)
        {
            AddressControl ac            = (AddressControl)riAddress.FindControl("acAddress");
            HiddenField    hfAddressCode = (HiddenField)riAddress.FindControl("hfAddressCode");

            if (ac == null || hfAddressCode == null)
            {
                continue;                       // defensive programmer
            }
            string code = hfAddressCode.Value;  // remember we stuck the code in there during databinding
            targetObject[code + "_Address"] = ac.Address;
        }

        //if (!atLeastOneAddress)
        //{
        //    cvAddress.IsValid = false;
        //    return false;
        //}

        // let's get the preferred address
        targetObject.PreferredAddressType = ddlPreferredAddress.SelectedValue;

        // and, the seasonal settings
        if (rbSeasonalNo.Checked)
        {
            targetObject.SeasonalAddressStart = null;
            targetObject.SeasonalAddressEnd   = null;
        }
        else
        {
            targetObject.SeasonalAddressStart = mdpSeasonalStart.Date;
            targetObject.SeasonalAddressEnd   = mdpSeasonalEnd.Date;
        }

        //Communication Preferences
        targetObject.DoNotEmail = chkDoNotEmail.Checked;
        targetObject.DoNotFax   = chkDoNotFax.Checked;
        targetObject.DoNotMail  = chkDoNotMail.Checked;
        targetObject.CommunicationsLastVerified     = DateTime.UtcNow;
        targetObject.CommunicationsLastVerifiedFrom = Utils.GetIP();

        //Unbind selected opt out message categories
        targetObject.OptOuts = (from category in dlbMessageCategories.Destination.Items
                                select category.Value).ToList();

        // finally, the custom fields
        CustomFieldSet1.Harvest();

        return(true);
    }
Exemplo n.º 21
0
    private void unbindObjectFromPage()
    {
        targetObject.Name = tbName.Text;

        //unbind the image if applicable
        if (imageUpload.HasFile)
        {
            targetObject["Image_Contents"] = getImageFile();

            //Set the session variable forcing any cached images to be refreshed from the MemberSuite Image content server
            SessionManager.Set("ImageUrlUpper", !SessionManager.Get <bool>("ImageUrlUpper"));
        }

        // now, the email
        targetObject.EmailAddress                 = tbEmail.Text;
        targetObject["BillingContactName"]        = tbBillingContactName.Text;
        targetObject["BillingContactPhoneNumber"] = tbBillingContactPhoneNumber.Text;

        // now, the phone numbers
        foreach (GridViewRow grvPhoneNumberType in gvPhoneNumbers.Rows)
        {
            DataKey dataKey = gvPhoneNumbers.DataKeys[grvPhoneNumberType.RowIndex];
            if (dataKey == null)
            {
                continue;
            }

            var     code = dataKey.Value;
            TextBox tb   = grvPhoneNumberType.FindControl("tbPhoneNumber") as TextBox;


            if (tb == null)
            {
                return;
            }
            targetObject[code + "_PhoneNumber"] = tb.Text;
        }

        // the preferred
        string preferredPhoneNumberID = Request.Form["PhoneNumberPreferredType"];

        if (preferredPhoneNumberID != null)
        {
            targetObject.PreferredPhoneNumberType = preferredPhoneNumberID;
        }


        // now, let's unbind the addresses
        foreach (RepeaterItem riAddress in rptAddresses.Items)
        {
            AddressControl ac            = (AddressControl)riAddress.FindControl("acAddress");
            HiddenField    hfAddressCode = (HiddenField)riAddress.FindControl("hfAddressCode");

            if (ac == null || hfAddressCode == null)
            {
                continue;                       // defensive programmer
            }
            string code = hfAddressCode.Value;  // remember we stuck the code in there during databinding
            targetObject[code + "_Address"] = ac.Address;
        }

        // let's get the preferred address
        targetObject.PreferredAddressType = ddlPreferredAddress.SelectedValue;



        // finally, the custom fields
        CustomFieldSet1.Harvest();
    }
Exemplo n.º 22
0
    private void _runSearch()
    {
        var sMembership = new Search {
            Type = msMembership.CLASS_NAME, ID = msMembership.CLASS_NAME
        };

        sMembership.AddCriteria(Expr.Equals("ID", ContextID));

        // output columns
        sMembership.AddOutputColumn("LocalID");
        sMembership.AddOutputColumn("Owner.LocalID");
        sMembership.AddOutputColumn("Owner.Name");
        sMembership.AddOutputColumn("JoinDate");
        sMembership.AddOutputColumn("ExpirationDate");
        sMembership.AddOutputColumn("RenewalDate");
        sMembership.AddOutputColumn("Approved");
        sMembership.AddOutputColumn("Status.Name");
        sMembership.AddOutputColumn("Type.Name");
        sMembership.AddOutputColumn("Product.Name");
        sMembership.AddOutputColumn("TerminationDate");
        sMembership.AddOutputColumn("SavedPaymentMethod.Name");

        sMembership.AddOutputColumn("TerminationReason.Name");
        sMembership.AddOutputColumn("ReceivesMemberBenefits");
        sMembership.AddOutputColumn("MembershipDirectoryOptOut");

        var sChapters = new Search {
            Type = msChapterMembership.CLASS_NAME, ID = msChapterMembership.CLASS_NAME
        };

        sChapters.AddCriteria(Expr.Equals("Membership", ContextID));
        sChapters.AddOutputColumn("Chapter");
        sChapters.AddOutputColumn("Chapter.Name");
        sChapters.AddOutputColumn("JoinDate");
        sChapters.AddOutputColumn("ExpirationDate");
        sChapters.AddSortColumn("ExpirationDate", true);
        sChapters.AddSortColumn("JoinDate", true);

        var sSections = new Search {
            Type = msSectionMembership.CLASS_NAME, ID = msSectionMembership.CLASS_NAME
        };

        sSections.AddCriteria(Expr.Equals("Membership", ContextID));
        sSections.AddOutputColumn("Section.Name");
        sSections.AddOutputColumn("JoinDate");
        sSections.AddOutputColumn("ExpirationDate");
        sSections.AddSortColumn("ExpirationDate", true);
        sSections.AddSortColumn("JoinDate", true);

        var sAuditLogs = new Search {
            Type = msAuditLog.CLASS_NAME, ID = msAuditLog.CLASS_NAME
        };

        sAuditLogs.AddCriteria(Expr.Equals(msAuditLog.FIELDS.AffectedRecord_ID, ContextID));
        sAuditLogs.AddCriteria(Expr.IsOneOfTheFollowing(msAuditLog.FIELDS.Type, new List <string> {
            "Renewal", "Drop"
        }));
        sAuditLogs.AddOutputColumn("Type_Name");
        sAuditLogs.AddOutputColumn("Actor.Name");
        sAuditLogs.AddOutputColumn("CreatedDate");
        sAuditLogs.AddSortColumn("CreatedDate", true);

        var sAddOns = new Search("MembershipAddOn");

        sAddOns.ID = "AddOns";
        sAddOns.AddCriteria(Expr.Equals("Membership", ContextID));
        sAddOns.AddOutputColumn("Merchandise.Name");
        sAddOns.AddOutputColumn("Quantity");
        sAddOns.AddOutputColumn("Price");
        sAddOns.AddOutputColumn("Renewable");
        sAddOns.AddSortColumn("ListIndex");

        var searchesToRun = new List <Search> {
            sMembership, sChapters, sSections, sAuditLogs, sAddOns
        };

        var searchResults = APIExtensions.GetMultipleSearchResults(searchesToRun, 0, null);

        drMembership = searchResults[0].Table.Rows[0];

        dvChapterMembership = new DataView(searchResults.Single(x => x.ID == msChapterMembership.CLASS_NAME).Table);
        dvSectionMembership = new DataView(searchResults.Single(x => x.ID == msSectionMembership.CLASS_NAME).Table);
        dvAuditLogs         = new DataView(searchResults.Single(x => x.ID == msAuditLog.CLASS_NAME).Table);
        dvAddOns            = new DataView(searchResults.Single(x => x.ID == "AddOns").Table);

        // bind chapters
        if (dvChapterMembership.Count > 0)
        {
            tdChapters.Visible    = true;
            gvChapters.DataSource = dvChapterMembership;
            gvChapters.DataBind();
        }

        // bind sections
        if (dvSectionMembership.Count > 0)
        {
            tdSections.Visible    = true;
            gvSections.DataSource = dvSectionMembership;
            gvSections.DataBind();
        }

        // bind history
        if (dvAuditLogs.Count > 0)
        {
            divHistory.Visible   = true;
            gvHistory.DataSource = dvAuditLogs;
            gvHistory.DataBind();
        }

        if (dvAddOns.Count > 0)
        {
            divAddOns.Visible   = true;
            gvAddOns.DataSource = dvAddOns;
            gvAddOns.DataBind();
        }

        CustomFieldSet1.DataBind();
    }
Exemplo n.º 23
0
    private msOrder unbindObjectsFromPage()
    {
        msOrder mso = new msOrder();

        mso.BillTo = mso.ShipTo = targetEntity.ID;

        // let's add the membership product
        string          parentItem = Guid.NewGuid().ToString();
        msOrderLineItem msPrimaryMembershipItem = new msOrderLineItem {
            Quantity = 1, Product = targetMembership.Product, OrderLineItemID = parentItem
        };

        mso.LineItems.Add(msPrimaryMembershipItem);

        msPrimaryMembershipItem.Options = new List <NameValueStringPair>();

        if (cbAutomaticallyPay.Checked)
        {
            msPrimaryMembershipItem.Options.Add(new NameValueStringPair(msMembership.FIELDS.AutomaticallyPayForRenewal, true.ToString()));
        }

        if (cbMembershipDirectoryOptOut.Checked)
        {
            msPrimaryMembershipItem.Options.Add(new NameValueStringPair(msMembership.FIELDS.MembershipDirectoryOptOut, true.ToString()));
        }

        CustomFieldSet1.Harvest();

        foreach (var fieldValuePair in targetMembership.Fields)
        {
            if (fieldValuePair.Key.EndsWith("__c")) // make it an option
            {
                string value = null;

                if (fieldValuePair.Value != null)
                {
                    if (fieldValuePair.Value is List <string> )
                    {
                        var valueAsList = (List <string>)fieldValuePair.Value;
                        value = string.Join("|", valueAsList);
                    }
                    else
                    {
                        value = fieldValuePair.Value.ToString();
                    }
                }

                msPrimaryMembershipItem.Options.Add(new NameValueStringPair(fieldValuePair.Key, value));
            }
            else if (fieldValuePair.Key.EndsWith("_Contents"))
            {
                msPrimaryMembershipItem[fieldValuePair.Key] = fieldValuePair.Value;
            }
        }
        // now, everything else
        unbindChapters(mso, parentItem);
        unbindSections(mso, parentItem);
        unbindAdditionalItems(mso, parentItem);
        unbindDonations(mso, parentItem);

        return(mso);
    }