public byte[] GenerateYieldModelReport2Async(YieldModelResponse modelResult)
        {
            DataSet ds = new DataSet();

            ds.Tables.Add(JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(modelResult.listPlantingHarvestWeeksYields)));
            ReportDataSource rds1 = new ReportDataSource {
                Name = "HeatTableDT", Value = ds.Tables[0]
            };

            ReportParameter[] parametros =
            {};

            LocalReport lr         = new LocalReport();
            var         Reportpath = @".\Reports\YieldModelResultHeatTable.rdlc";

            lr.ReportPath  = Reportpath;
            lr.DisplayName = "Yield Model Results.pdf";

            lr.SetParameters(parametros);
            lr.DataSources.Add(rds1);

            var    reportType = "pdf";
            string mimeType;
            string encoding;
            string fileNameExtension;

            Warning[] warnings;
            string[]  streams;
            var       renderedBytes = lr.Render(reportType, null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);

            return(renderedBytes);
        }
        public byte[] GenerateYieldModelReportAsync(YieldModelResponse modelResult)
        {
            DataSet ds = new DataSet();

            ds.Tables.Add(JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(modelResult.listHarvestWeekExpectedYields)));
            ReportDataSource rds1 = new ReportDataSource {
                Name = "YieldModelDS2", Value = ds.Tables[0]
            };

            ds = new DataSet();
            ds.Tables.Add(JsonConvert.DeserializeObject <DataTable>(JsonConvert.SerializeObject(modelResult.listPlantingHarvestWeeksYields)));
            ReportDataSource rds2 = new ReportDataSource {
                Name = "YieldModelDS1", Value = ds.Tables[0]
            };

            ReportParameter[] parametros =
            {
                new ReportParameter("initPlantingWeek",     modelResult.yieldInputsModel.startPWDate.ToString()),
                new ReportParameter("endPlantingWeek",      modelResult.yieldInputsModel.endPWDate.ToString()),
                new ReportParameter("numbersOfWeeks",       modelResult.yieldInputsModel.startPW.ToString() + " - " + modelResult.yieldInputsModel.endPW.ToString()),
                new ReportParameter("state",                modelResult.yieldInputsModel.state.ToString()),
                new ReportParameter("zipCode",              modelResult.yieldInputsModel.city.ToString()),
                new ReportParameter("tempScenario",         modelResult.yieldInputsModel.tempScenario.ToString()),
                new ReportParameter("harvestRate",          modelResult.yieldInputsModel.harvestRate.ToString()),
                new ReportParameter("minimalHarvestWet",    modelResult.yieldInputsModel.minimalHarvest.ToString()),
                new ReportParameter("standardYield",        modelResult.yieldInputsModel.standartYield.ToString()),
                new ReportParameter("minimumStandardYield", modelResult.yieldInputsModel.percentStandardYield.ToString()),
                new ReportParameter("minimumTime",          modelResult.yieldInputsModel.minimumTime.ToString()),
                new ReportParameter("maximumHarvestTime",   modelResult.yieldInputsModel.maximumHarvestTime.ToString()),
                new ReportParameter("crop",                 modelResult.yieldInputsModel.crop.ToString())
            };

            LocalReport lr         = new LocalReport();
            var         Reportpath = @".\Reports\YieldModelResults.rdlc";

            lr.ReportPath  = Reportpath;
            lr.DisplayName = "Yield Model Results.pdf";

            lr.SetParameters(parametros);
            lr.DataSources.Add(rds1);
            lr.DataSources.Add(rds2);

            var    reportType = "pdf";
            string mimeType;
            string encoding;
            string fileNameExtension;

            Warning[] warnings;
            string[]  streams;
            var       renderedBytes = lr.Render(reportType, null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings);

            return(renderedBytes);
        }
예제 #3
0
        public ActionResult CreateReportYieldModel([FromBody] YieldModelResponse modelResult)
        {
            try
            {
                var _reportService = new Services.ReportService();
                var rpt1           = _reportService.GenerateYieldModelReportAsync(modelResult);
                var rpt2           = _reportService.GenerateYieldModelReport2Async(modelResult);


                using (MemoryStream ms = new MemoryStream())
                {
                    using (var archive = new ZipArchive(ms, ZipArchiveMode.Create, true))
                    {
                        var zipArchiveEntry = archive.CreateEntry("1. Input Parameters and Expected Yields .pdf", CompressionLevel.Fastest);
                        using (var zipStream = zipArchiveEntry.Open()) zipStream.Write(rpt1, 0, rpt1.Length);
                        zipArchiveEntry = archive.CreateEntry("2. Heat Table of Obtained Harvest.pdf", CompressionLevel.Fastest);
                        using (var zipStream = zipArchiveEntry.Open()) zipStream.Write(rpt2, 0, rpt2.Length);
                    }
                    //return File(ms.ToArray(), "application/zip", "Result Data.zip");

                    ActionResult document = File(ms.ToArray(), "application/zip", "Yield Model Results.zip");

                    DocumentResponseModel response = new DocumentResponseModel()
                    {
                        hasError     = false,
                        messageError = null,
                        document     = document
                    };

                    return(Content(JsonConvert.SerializeObject(response), "application/json"));
                }
            }
            catch (Exception ex)
            {
                DocumentResponseModel response = new DocumentResponseModel()
                {
                    hasError     = true,
                    messageError = ex.Message,
                    document     = null
                };
                return(Content(JsonConvert.SerializeObject(response), "application/json"));
            }
        }