public void Save(Campaign campaign)
        {
            if (campaign.ID == Guid.Empty)
            {
                var data = new CampaignParams()
                {
                    ConfirmationToEmail = campaign.ConfirmationTo,
                    Name = campaign.Name,
                    Subject = campaign.Subject,
                    WebLocation = campaign.WebLocation
                };

                if (campaign.MailingList != null) data.MailingListID = campaign.MailingList.ID;
                if (campaign.Segment != null) data.SegmentID = campaign.Segment.ID;
                if (campaign.Sender != null) data.SenderEmail = campaign.Sender.Email;
                if (campaign.ReplyToEmail != null) data.ReplyToEmail = campaign.ReplyToEmail.Email;
                else campaign.ReplyToEmail = campaign.Sender;

                if (campaign.ABCampaignData != null)
                {
                    data.ABCampaignType = campaign.ABCampaignData.ABCampaignType;
                    data.ABWinnerSelectionType = campaign.ABCampaignData.ABWinnerSelectionType;
                    data.HoursToTest = campaign.ABCampaignData.HoursToTest;
                    data.ListPercentage = campaign.ABCampaignData.ListPercentage;
                    if (campaign.ABCampaignData.SenderB != null) data.SenderEmailB = campaign.ABCampaignData.SenderB.Email;
                    data.SubjectB = campaign.ABCampaignData.SubjectB;
                    data.WebLocationB = campaign.ABCampaignData.WebLocationB;
                }
                campaign.ID = Create(data);
            }
            else
            {
                Update(campaign);
            }
            Campaign reloaded = FindByID(campaign.ID);
            Utilities.CopyProperties<Campaign>(reloaded, campaign);
        }
        public void Update(Campaign campaign)
        {
            CampaignParams cp = new CampaignParams()
            {
                Name = campaign.Name,
                Subject = campaign.Subject,
                WebLocation = campaign.WebLocation,
                ConfirmationToEmail = campaign.ConfirmationTo
            };

            if (campaign.Sender != null) cp.SenderEmail = campaign.Sender.Email;
            else cp.SenderEmail = null;

            if (campaign.ReplyToEmail != null) cp.ReplyToEmail = campaign.ReplyToEmail.Email;
            else cp.ReplyToEmail = null;

            if (campaign.MailingList != null) cp.MailingListID = campaign.MailingList.ID;
            else cp.MailingListID = Guid.Empty;

            if (campaign.Segment != null) cp.SegmentID = campaign.Segment.ID;
            else cp.SegmentID = 0;

            if (campaign.ABCampaignData != null)
            {
                cp.ABCampaignType = campaign.ABCampaignData.ABCampaignType;
                cp.ABWinnerSelectionType = campaign.ABCampaignData.ABWinnerSelectionType;
                cp.HoursToTest = campaign.ABCampaignData.HoursToTest;
                cp.ListPercentage = campaign.ABCampaignData.ListPercentage;
                cp.SubjectB = campaign.ABCampaignData.SubjectB;
                cp.WebLocationB = campaign.ABCampaignData.WebLocationB;

                if (campaign.ABCampaignData.SenderB != null) cp.SenderEmailB = campaign.ABCampaignData.SenderB.Email;
                else cp.SenderEmailB = null;
            }
            _Manager.MakeRequest(HttpMethod.POST, String.Format("/campaigns/{0}/update", campaign.ID), cp);
        }