Exemple #1
0
        protected override PrintReportResponse GenerateReport(PrintReportRequest request, Behaviors.DataExtraction.IReportDataExtractionBehavior dataExtractor, Behaviors.ReportGenerator.IReportGeneratorBehavior reportGeneration)
        {
            PrintReportResponse response = null;

            try
            {
                logger.Debug("Inizio GenerateReport.");
                //istanzio la response da restituire
                response = new PrintReportResponse();

                //creo la lista di report da esportare
                List <DocsPaVO.Report.Report> reports = new List <DocsPaVO.Report.Report>();

                //creo il titolo
                this.SetTitle(request);

                //ricavo la lista delle istanze

                RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();
                List <string> listIdIstanze = manager.GetListaIstanze(request);
                logger.Debug(string.Format("{0} istanze trovate.", listIdIstanze.Count));

                //creo due nuovi filtri su istanze e documenti
                request.SearchFilters.Add(new FiltroRicerca()
                {
                    argomento = "id_istanza", valore = string.Empty
                });
                request.SearchFilters.Add(new FiltroRicerca()
                {
                    argomento = "id_oggetto", valore = string.Empty
                });

                foreach (var ist in listIdIstanze)
                {
                    logger.Debug(string.Format("Istanza {0}: ", ist));
                    //creo il summary per l'istanza
                    string summary = GetSummary(request, "istanza", ist, String.Empty);

                    //inserisco il summary nel campo additional information della request
                    request.AdditionalInformation = summary;

                    //imposto il filtro sull'istanza al valore attuale e inizializzo il filtro sul documento
                    foreach (FiltroRicerca f in request.SearchFilters)
                    {
                        if (f.argomento == "id_istanza")
                        {
                            f.valore = ist;
                        }
                        if (f.argomento == "id_oggetto")
                        {
                            f.valore = string.Empty;
                        }
                    }

                    //genero il report per l'istanza
                    reports.AddRange(this.GetReport(dataExtractor, request, "rcIstanze"));

                    //dopo la prima stampa devo cancellare titolo e sottotitolo!
                    request.Title    = string.Empty;
                    request.SubTitle = string.Empty;

                    //ricavo la lista dei documenti che appartengono all'istanza
                    List <string> listIdDoc = manager.GetListaDocumentiIstanze(request);
                    logger.Debug(string.Format("{0} documenti trovati nell'istanza.", listIdDoc.Count));

                    //loop sui documenti, eventualmente realizzare un metodo ad hoc

                    foreach (var doc in listIdDoc)
                    {
                        //creo il summary per il documento
                        summary = GetSummary(request, "documento", ist, doc);

                        //inserisco il summary nel campo additional information della request
                        request.AdditionalInformation = summary;

                        //imposto il filtro sul documento al valore attuale
                        foreach (FiltroRicerca f in request.SearchFilters)
                        {
                            if (f.argomento == "id_oggetto")
                            {
                                f.valore = doc;
                            }
                        }

                        //genero il report per il documento
                        reports.AddRange(this.GetReport(dataExtractor, request, "rcDocumenti"));
                    }
                }

                request.ReportKey = "StampaConservazione";
                logger.Debug("Chiamata servizio di stampa.");
                response.Document = reportGeneration.GenerateReport(request, reports);
            }
            catch (Exception ex)
            {
                logger.Debug("Errore in StampeRegistroConservazioneReportGeneratorCommand: ", ex);
                throw new ReportGenerationFailedException(ex.Message);
            }

            return(response);
        }