Exemple #1
0
        /// <summary>
        /// Verifica se ci sono amministrazioni con registro di conservazione enabled.
        /// </summary>
        /// <returns></returns>
        private bool CheckRegAbilitato()
        {

            RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();
            bool retVal = false;

            if (Convert.ToInt32(manager.GetEnabledRegCons()) > 0)
            {
                retVal = true;
            }

            return retVal;

        }
Exemple #2
0
        /// <summary>
        /// Costruisce il summary relativo all'istanza o documento in oggetto
        /// </summary>
        /// </summary>
        /// <param name="request"></param>
        /// <param name="context">distingue tra summary istanza/documento</param>
        /// <param name="idIstanza">id istanza attuale</param>
        /// <param name="idDoc">id documento (se richiesto)</param>
        /// <returns></returns>
        private string GetSummary(PrintReportRequest request, string context, string idIstanza, string idDoc)
        {
            string summary = string.Empty;
            RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();


            //costruzione del summary nei due casi
            if (context == "istanza")
            {
                RegistroConservazioneSummary summaryData = manager.GetSummaryDataIst(idIstanza);

                string creationDate = summaryData.creationDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.creationDate.ToString("dd/MM/yyyy");
                string invioDate    = summaryData.invioDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.invioDate.ToString("dd/MM/yyyy");

                summary = "ISTANZA - ID istanza: " + idIstanza + "\n\n";

                summary += "Descrizione istanza: " + summaryData.descrizione + "\n";
                summary += "Data di apertura: " + creationDate + "\n";
                summary += "Data di invio al CS: " + invioDate + "\n";
                summary += "Numero documenti: " + summaryData.numDoc + "\n";
                summary += "Dimensioni complessive: " + manager.ConvertDocSize(summaryData.fileDim) + "\n";

                logger.Debug(summary);
            }
            else if (context == "documento")
            {
                RegistroConservazioneSummary summaryData = manager.GetSummaryDataDoc(idDoc);

                string segnatura    = new DocsPaDB.Query_DocsPAWS.Conservazione().getSegnatura_Id(idDoc);
                string creationDate = summaryData.creationDate.Equals(DateTime.MinValue) ? string.Empty : summaryData.creationDate.ToString("dd/MM/yyyy");

                summary = "DOCUMENTO - ID/Segnatura documento: " + segnatura + "\n\n";

                summary += "ID istanza: " + idIstanza + "\n";
                summary += "Data creazione/protocollazione: " + creationDate + "\n";
                summary += "Oggetto: " + summaryData.descrizione + "\n";
                summary += "Codice fascicolo: " + summaryData.codiceFascicolo + "\n";
                summary += "N. allegati: " + summaryData.numDoc + "\n";
                summary += "Tipo file: " + summaryData.tipoFile + "\n";
                summary += "Dimensioni file: " + manager.ConvertDocSize(summaryData.fileDim) + "\n";

                logger.Debug(summary);
            }


            return(summary);
        }
Exemple #3
0
        /// <summary>
        /// Metodo da schedulare che verifica se ci sono amministrazioni con stampa abilitata
        /// e, se è stata raggiunta la data di prossima stampa, la esegue.
        /// </summary>
        public void GeneratePrintRegCons()
        {

            logger.Debug("stampa registro di conservazione - START");
            //check per vedere se esistono amministrazioni con registro di conservazione abilitato
            if (this.CheckRegAbilitato())
            {
                
                RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();
                List<RegistroConservazionePrint> printRanges = manager.GetRegConsPrintRange();

                //loop in cui recupero info e le inserisco in un oggetto
                foreach (var range in printRanges)
                {
                    logger.Debug(string.Format("ID AMM={0} - check", range.idAmministrazione));
                    //check se data prossima stampa è >= data attuale (e se esistono record da stampare)
                    if (manager.VerifyNextPrint(range.nextPrintDate, range.idAmministrazione, range.idLastPrinted, range.printHour))
                    {

                        try
                        {
                            //metodo che esegue la stampa
                            PrintRegistro(range);

                            //aggiorna la data di prossima stampa automatica e l'ultimo documento/istanza stampati
                            if (!manager.UpdateNextPrintDate(range))
                                throw new Exception("Errore durante l'aggiornamento delle impostazioni di stampa.");

                            logger.Debug("termine stampa ID AMM=" + range.idAmministrazione);
                        }
                        catch (Exception exc)
                        {

                            logger.Debug("Errore nella stampa del registro per amm ID=" + range.idAmministrazione + ": ", exc);
                        }
                    }
                    /*
                    else
                    {
                        throw new Exception(string.Format("Prossima data di stampa: {0}", range.nextPrintDate.ToString("dd/MM/yyyy")));
                        
                    }
                    */
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Metodo che esegue la stampa del registro relativo ad una amministrazione
        /// </summary>
        public void PrintRegistro(RegistroConservazionePrint infoPrint)
        {

            logger.Debug("Avvio Stampa - DATI:");
            logger.Debug(string.Format("freq={0}, idrange={1}-{2},  daterange={3}-{4}, user={5}, role={6}",
                infoPrint.printFreq, infoPrint.idLastPrinted, infoPrint.idLastToPrint,
                infoPrint.lastPrintDate.ToString("dd/MM/yyyy"), infoPrint.nextPrintDate.ToString("dd/MM/yyyy"),
                infoPrint.print_userId, infoPrint.print_role));

            RegistroConservazionePrintManager manager = new RegistroConservazionePrintManager();

            //creo un oggetto InfoUtente
            InfoUtente userInfo = this.GetInfoUtenteStampa(infoPrint);

            //creo un ruolo dall'id_gruppo
            //GM 23-7-2013: se non ho un ruolo definito nella tabella di configurazione
            //uso un valore fittizio per evitare errori nell'assegnazione delle visibilità
            Ruolo role = new Ruolo();
            role.idGruppo = "0";
            if(!string.IsNullOrEmpty(infoPrint.print_role))            
                role = BusinessLogic.Utenti.UserManager.getRuoloByIdGruppo(infoPrint.print_role);            
            

            //definisco filtri per la ricerca come nella stampa dei repertori
            List<FiltroRicerca> filters = new List<FiltroRicerca>()
            {
                new FiltroRicerca() {argomento = "id_amm", valore = infoPrint.idAmministrazione},       //id amministrazione
                new FiltroRicerca() {argomento = "next_system_id", valore = infoPrint.idLastPrinted},   //ultimo id stampato
                new FiltroRicerca() {argomento = "last_system_id", valore = infoPrint.idLastToPrint}    //ultimo id da stampare
            };

            //ricavo la frequenza di stampa da stampare nel report
            string printFreq = manager.GetPrintFreq(infoPrint.printFreq);

            //creo la stampa utilizzando i metodi esistenti
            //va definita la classe con il report in businesslogic.reporting (StampeRegistroConservazioneReportGeneratorCommand)
            //e le modalità di estrazione dei dati in docspadb.query_docspaws.reporting.
            FileDocumento fileDocument = BusinessLogic.Reporting.ReportGeneratorCommand.GetReport(
                new DocsPaVO.Report.PrintReportRequest()
                {
                    UserInfo = userInfo,
                    SearchFilters = filters,
                    ReportType = DocsPaVO.Report.ReportTypeEnum.PDF,
                    ReportKey = "StampaRegistroConservazione",
                    ContextName = "StampaRegistroConservazione",
                    AdditionalInformation = String.Format("Stampa del {0} (frequenza di stampa {1})\n\n",DateTime.Now.ToString("dd/MM/yyyy"),printFreq)
                }).Document;

            //inserimento stampa nel gestore documentale

            //apertura contesto transazionale
            using (DocsPaDB.TransactionContext transactionContext = new DocsPaDB.TransactionContext())
            {
                if (userInfo != null && string.IsNullOrEmpty(userInfo.dst))
                    userInfo.dst = BusinessLogic.Utenti.UserManager.getSuperUserAuthenticationToken();

                //creazione scheda documento
                SchedaDocumento document = this.InitializeDocument(userInfo, infoPrint.lastPrintDate, DateTime.Now);

                Ruolo[] roles = new Ruolo[] { };
                //salvataggio documento
                
                string docNumber = this.SaveDocument(userInfo, role, document, fileDocument, out roles);

                if (String.IsNullOrEmpty(docNumber))
                    throw new Exception("Errore durante la creazione della stampa");

                //modifico il tipo_proto del documento inserito in "M"
                if (!manager.UpdateTipoProto(docNumber))
                    throw new Exception("Errore nell'aggiornamento della tipologia protocollo"); 

                //inserisco la stampa nel registro delle stampe
                if (!manager.UpdateRegStampeCons(infoPrint, docNumber))
                    throw new Exception("Errore durante l'aggiornamento dell'anagrafica delle stampe effettuate");

                //aggiorno il campo corrispondente del registro di conservazione
                if (!manager.UpdatePrintedRecords(infoPrint))
                    throw new Exception("Errore nell'aggiornamento del registro di conservazione");
                
                //chiusura transazione
                transactionContext.Complete();

            }

        }
Exemple #5
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);
        }