public override Object ToServerObject()
        {
            Server.Application.Population serverObject = new Server.Application.Population();

            MapToServerObject(serverObject);

            return(serverObject);
        }
        public Population Copy()
        {
            Server.Application.Population serverObject = (Server.Application.Population)ToServerObject();

            Population copiedObject = new Population(application, serverObject);

            return(copiedObject);
        }
        public virtual void MapToServerObject(Server.Application.Population serverObject)
        {
            base.MapToServerObject((Server.Application.CoreConfigurationObject)serverObject);


            serverObject.PopulationTypeId = populationTypeId;

            serverObject.AllowProspective = allowProspective;

            serverObject.InitialAnchorDate = initialAnchorDate;


            serverObject.EnrollmentCriteria = new Mercury.Server.Application.PopulationCriteriaEnrollment[enrollmentCriteria.Count];

            for (Int32 currentCriteriaIndex = 0; currentCriteriaIndex < enrollmentCriteria.Count; currentCriteriaIndex++)
            {
                serverObject.EnrollmentCriteria[currentCriteriaIndex] = (Server.Application.PopulationCriteriaEnrollment)enrollmentCriteria[currentCriteriaIndex].ToServerObject();
            }


            serverObject.DemographicCriteria = new Mercury.Server.Application.PopulationCriteriaDemographic[demographicCriteria.Count];

            for (Int32 currentCriteriaIndex = 0; currentCriteriaIndex < demographicCriteria.Count; currentCriteriaIndex++)
            {
                serverObject.DemographicCriteria[currentCriteriaIndex] = (Server.Application.PopulationCriteriaDemographic)demographicCriteria[currentCriteriaIndex].ToServerObject();
            }

            serverObject.GeographicCriteria = new Mercury.Server.Application.PopulationCriteriaGeographic[geographicCriteria.Count];

            for (Int32 currentCriteriaIndex = 0; currentCriteriaIndex < geographicCriteria.Count; currentCriteriaIndex++)
            {
                serverObject.GeographicCriteria[currentCriteriaIndex] = (Server.Application.PopulationCriteriaGeographic)geographicCriteria[currentCriteriaIndex].ToServerObject();
            }


            serverObject.EventCriteria = new Mercury.Server.Application.PopulationCriteriaEvent[eventCriteria.Count];

            for (Int32 currentCriteriaIndex = 0; currentCriteriaIndex < eventCriteria.Count; currentCriteriaIndex++)
            {
                serverObject.EventCriteria[currentCriteriaIndex] = (Server.Application.PopulationCriteriaEvent)eventCriteria[currentCriteriaIndex].ToServerObject();
            }


            serverObject.Events = new Dictionary <String, Mercury.Server.Application.Action> ();

            foreach (String eventName in events.Keys)
            {
                serverObject.Events.Add(eventName, (Server.Application.Action)events[eventName].ToServerObject());
            }


            serverObject.ServiceEvents = new Mercury.Server.Application.PopulationServiceEvent[serviceEvents.Count];

            for (Int32 currentEventIndex = 0; currentEventIndex < serviceEvents.Count; currentEventIndex++)
            {
                serverObject.ServiceEvents[currentEventIndex] = (Mercury.Server.Application.PopulationServiceEvent)serviceEvents[currentEventIndex].ToServerObject();
            }

            serverObject.TriggerEvents = new Mercury.Server.Application.PopulationTriggerEvent[triggerEvents.Count];

            for (Int32 currentEventIndex = 0; currentEventIndex < triggerEvents.Count; currentEventIndex++)
            {
                serverObject.TriggerEvents[currentEventIndex] = (Mercury.Server.Application.PopulationTriggerEvent)triggerEvents[currentEventIndex].ToServerObject();
            }

            serverObject.ActivityEvents = new Mercury.Server.Application.PopulationActivityEvent[activityEvents.Count];

            for (Int32 currentEventIndex = 0; currentEventIndex < activityEvents.Count; currentEventIndex++)
            {
                serverObject.ActivityEvents[currentEventIndex] = (Mercury.Server.Application.PopulationActivityEvent)activityEvents[currentEventIndex].ToServerObject();
            }


            return;
        }