Creating the Web Service Proxy:
To add a proxy class to your project using Wsdl.exe
From a command prompt, use Wsdl.exe to create a proxy class, specifying (at a minimum) the URL to the Report Server Web service. For example, the following command prompt statement specifies a URL for the management endpoint of the Report Server Web service:
Copy :  wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2010" http:///reportserver/reportexecution2005.asmx?wsdl
Add Proxy Class to your Project: add this class file to your project which common project in the project. Access this class from data Access layer.
Button clicks Event to save Schedule:
  try
            {
                    ReportSchedule reportschedule = new ReportSchedule();
                    ReportServerCredentials credentials = new ReportServerCredentials();

                    reportschedule.Credentials = credentials.NetworkCredentials;
                    //System.Net.CredentialCache.DefaultCredentials;
                    string eventType = "TimedSubscription";
                    string matchData = GetMatchData();
                    ExtensionSettings extSettings = GetExtensionSettings();
                    // Set the report parameter values.
                    ParameterValue[] parameters = SetReportSubScriptionParameters(strReportParams);
                    string subscriptionID = reportschedule.CreateSubscription(strReportName, extSettings, strReportDesc, eventType, matchData, parameters);
                    bool createdSubscription = objReportSchedule.CreateReportSubScription(subscriptionID, UserId, strReportName, txtReportName.Value);
                    if (createdSubscription)
                    {
                        string strReport = string.Format("{0} has been scheduleed successfully "Convert.ToString(Request.QueryString["ReportName"]));
                        ApplicationLog.WriteInfo(strReport,"HSW_ReportViewer.btnSaveSchedule_Click", UserId);
                        Response.Write("");
                        rdbtnDailyOptions.Checked = true;
                    }
            }

            catch (SoapException ex)
            {
                ApplicationLog.WriteError(ex.Message,"HSW_ReportViewer.btnSaveSchedule_Click");
            }

User defined Methods to Proceed:
GetMatchData: which we are passing to Reporting Server in Extension Settings .This function will get the start Date/End Date, Daily pattern, weekly pattern, Monthly pattern usingSchedule Definition Class. Schedule Definition will api from Web services Proxy Class.Schedule Definition have variable like StartDateTime, EndDateSpecified, EndDate,Item(Pattern either daily/Weekly/Monthly).
   private string GetMatchData()
        {
            ScheduleDefinition schedule = new ScheduleDefinition();
            schedule.StartDateTime = Convert.ToDateTime(txtStartDate.Value, newCultureInfo("en-US"));
            schedule.EndDateSpecified = true;
            schedule.EndDate = Convert.ToDateTime(txtEndDate.Value, new CultureInfo("en-US"));
            if (rdbtnDailyOptions.Checked)
                schedule.Item = GetDailyPattern();
            else if (rdbtnWeekly.Checked)
                schedule.Item = GetWeeklyPattern();
            else if (rdbtnMonthly.Checked)
            {
                if (rdbtnWeekOfMonthly.Checked)
                    schedule.Item = GetMonthlyDOWRecurrence();
                else
                {
                    schedule.Item = GetMonthlyPattern();
                }
            }

            XmlDocument xmlDoc = GetScheduleAsXml(schedule);
            return xmlDoc.OuterXml;

        }
GetDailyPattern: which return DailyRecurrence. It has Days Interval
        /// Get Daily Pattern
        ///