Ejemplo n.º 1
0
        public byte[] GetReportFromRS(ReportCallContext reportContext, out string mimeType, out string extension)
        {
            reportContext.ReportName = "/eSoda/" + reportContext.ReportName;

            ReportExecutionService ws = new ReportingServices.ReportExecutionService();

            Warning[] warnings;
            string[]  sids;
            string    encoding;

            ws.Credentials = System.Net.CredentialCache.DefaultCredentials;

            ws.Timeout = 1000 * 600;
            //parameters[0] = new ParameterValue();
            //parameters[0].Name = "params";
            //parameters[0].Value = reportContext.ReportParameters.ToString(SaveOptions.DisableFormatting);

            ExecutionInfo   execInfo   = new ExecutionInfo();
            ExecutionHeader execHeader = new ExecutionHeader();

            ws.ExecutionHeaderValue = execHeader;
            byte[] reportContent = null;
            try
            {
                execInfo = ws.LoadReport(reportContext.ReportName, null);
                ws.SetExecutionParameters(reportContext.Parameters, "pl-PL");
                string sessionID = ws.ExecutionHeaderValue.ExecutionID;
                reportContent = ws.Render(reportContext.ReportFormat, null, out extension, out mimeType, out encoding, out warnings, out sids);
            }
            catch (Exception ex)
            {
                mimeType  = null;
                extension = null;
                System.Diagnostics.Trace.WriteLine(ex.Message);
                throw;
            }
            return(reportContent);
        }
Ejemplo n.º 2
0
        protected bool SendReport(ReportSubscription subscription)
        {
            string mimeType, extension;

            ParameterValue[] reportParameters = new ParameterValue[1];

            if (subscription.ReportName == "CasesPending")
            {
                reportParameters    = new ParameterValue[5];
                reportParameters[0] = new ParameterValue()
                {
                    Name = "ouID", Value = subscription.ParamOUID
                };
                reportParameters[1] = new ParameterValue()
                {
                    Name = "year", Value = subscription.ParamYear
                };
                reportParameters[2] = new ParameterValue()
                {
                    Name = "jrwa", Value = subscription.ParamJRWA
                };
                reportParameters[3] = new ParameterValue()
                {
                    Name = "daysFrom", Value = subscription.ParamDaysFrom
                };
                reportParameters[4] = new ParameterValue()
                {
                    Name = "daysTo", Value = subscription.ParamDaysTo
                };
            }
            if (subscription.ReportName == "CasesOutOfDate")
            {
                reportParameters    = new ParameterValue[3];
                reportParameters[0] = new ParameterValue()
                {
                    Name = "ouID", Value = subscription.ParamOUID
                };
                reportParameters[1] = new ParameterValue()
                {
                    Name = "year", Value = subscription.ParamYear
                };
                reportParameters[2] = new ParameterValue()
                {
                    Name = "jrwa", Value = subscription.ParamJRWA
                };
            }

            ReportCallContext reportContext = new ReportCallContext()
            {
                ReportName = subscription.ReportName
                ,
                ReportFormat = subscription.Format
                ,
                ReportTitle = subscription.ReportTitle
                ,
                Parameters = reportParameters
            };

            try
            {
                byte[]      reportContent = new ReportService().GetReportFromRS(reportContext, out mimeType, out extension);
                MailMessage mail          = new MailMessage();
                mail.From = new MailAddress("*****@*****.**", "eSoda-Raporty");
                mail.To.Add(subscription.EmailAddress);
                mail.Subject = "Raport z systemu eSoda ";
                mail.Body    = "W załączniku znajduje się raport. Został wysłany z systemu eSoda w ramach zdefiniowanej subskrypcji.";

                using (MemoryStream ms = new MemoryStream(reportContent))
                {
                    try
                    {
                        mail.Attachments.Add(new Attachment(ms, "Raport.pdf"));
                        SmtpClient client = new SmtpClient();
                        client.Send(mail);
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(false);
            }
            return(true);
        }