public string CreateSubscription(SubscritionValues subscrition) { ReportingService2010 rs = new ReportingService2010(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials; string report = subscrition.Report; string desc = System.Net.CredentialCache.DefaultCredentials + " subscribed " + subscrition.Report + " to EMAIL"; string eventType = "TimedSubscription"; string scheduleXml = getScheduleXML(subscrition); ParameterValue[] extensionParams = new ParameterValue[7]; extensionParams[0] = new ParameterValue(); extensionParams[0].Name = "RenderFormat"; extensionParams[0].Value = "PDF"; extensionParams[1] = new ParameterValue(); extensionParams[1].Name = "TO"; extensionParams[1].Value = subscrition.TO; extensionParams[2] = new ParameterValue(); extensionParams[2].Name = "IncludeReport"; extensionParams[2].Value = "true"; extensionParams[3] = new ParameterValue(); extensionParams[3].Name = "Subject"; extensionParams[3].Value = subscrition.Subject; extensionParams[4] = new ParameterValue(); extensionParams[4].Name = "IncludeLink"; extensionParams[4].Value = "true"; extensionParams[5] = new ParameterValue(); extensionParams[5].Name = "CC"; extensionParams[5].Value = subscrition.CC; extensionParams[6] = new ParameterValue(); extensionParams[6].Name = "BCC"; extensionParams[6].Value = subscrition.BCC; string matchData = scheduleXml; ExtensionSettings extSettings = new ExtensionSettings(); extSettings.ParameterValues = extensionParams; extSettings.Extension = "Report Server Email"; ParameterValue[] parameters = new ParameterValue[subscrition.Parameters.Length]; for (int i = 0; i < subscrition.Parameters.Length;i++ ) { ParameterValue parameter = new ParameterValue(); parameter.Name = subscrition.Parameters[i].ParameterName; parameter.Value = subscrition.Parameters[i].ParameterValue; parameters[i] = parameter; } try { string subscriptionID =rs.CreateSubscription(report, extSettings, desc, eventType, matchData, parameters); Dips_progression_subscription ps = new Dips_progression_subscription(); ps.indicator = subscrition.ConditionIndicator; ps.location = subscrition.ConditionLocation; ps.operand = subscrition.ConditionOperand; if (subscrition.ConditionValue!=null && subscrition.ConditionValue != "") ps.value = Double.Parse(subscrition.ConditionValue); ps.subscription_id = subscriptionID; ps.last_updated_date = DateTime.Now; ps.status = "Added"; if (ps.indicator != null) { db.Dips_progression_subscription.Add(ps); db.SaveChanges(); } return subscriptionID; } catch (SoapException e) { Console.WriteLine(e.Message); return "Subscribe failed "+e.Message; } }
private string getScheduleXML(SubscritionValues subscrition) { string scheduleXML=""; if (subscrition.Schedule.Equals("Daily")) scheduleXML= @"<ScheduleDefinition>" + " <StartDateTime>2003-02-24T"+subscrition.ScheduleDailyHour+":00-05:00" + " </StartDateTime>" + " <WeeklyRecurrence>" + " <WeeksInterval>1</WeeksInterval>" + " <DaysOfWeek>" + " <Monday>True</Monday>" + " <Tuesday>True</Tuesday>" + " <Wednesday>True</Wednesday>" + " <Thursday>True</Thursday>" + " <Friday>True</Friday>" + " <Saturday>True</Saturday>" + " <Sunday>True</Sunday>" + " </DaysOfWeek>" + " </WeeklyRecurrence>"+ "</ScheduleDefinition>"; else if (subscrition.Schedule.Equals("Weekly")) scheduleXML = @"<ScheduleDefinition>" + " <StartDateTime>2003-02-24T08:00:00-05:00" + " </StartDateTime>" + " <WeeklyRecurrence>" + " <WeeksInterval>1</WeeksInterval>" + " <DaysOfWeek>" + " <Monday>True</Monday>" + " </DaysOfWeek>" + " </WeeklyRecurrence>" + "</ScheduleDefinition>"; else if (subscrition.Schedule.Equals("Monthly")) scheduleXML = @"<ScheduleDefinition>" + " <StartDateTime>2003-02-24" + " </StartDateTime>" + " <MonthlyRecurrence>"+ " <Days>1</Days>"+ " <MonthsOfYear><January>true</January><February>true</February><March>true</March>"+ " <April>true</April><May>true</May><June>true</June><July>true</July><August>true</August>"+ " <September>true</September><October>true</October><November>true</November><December>true</December>"+ " </MonthsOfYear>"+ " </MonthlyRecurrence>" + "</ScheduleDefinition>"; return scheduleXML; }