private void SaveSchedule()
    {
        var from = dtFrom.SelectedDateTime;
        var to   = dtTo.SelectedDateTime;

        if (ValidateScheduleDates(ref from, ref to))
        {
            var success = false;

            switch (mCampaignStatus)
            {
            case CampaignStatusEnum.Draft:
                success = mScheduleService.Schedule(mEditedCampaign, from, to, mSiteID);
                break;

            case CampaignStatusEnum.Scheduled:
                if (from != DateTimeHelper.ZERO_TIME)
                {
                    success = mScheduleService.Reschedule(mEditedCampaign, from, to, mSiteID);
                }
                else
                {
                    success = mScheduleService.Unschedule(mEditedCampaign);
                }
                break;

            case CampaignStatusEnum.Running:
                success = mScheduleService.Finish(mEditedCampaign, mSiteID, to);
                break;

            default:
                ShowError(GetString("campaign.finish.alreadyfinished"));
                break;
            }

            if (success)
            {
                ShowChangesSaved();
            }
        }
    }